對象生命周期管理設計
- 2019 年 10 月 4 日
- 筆記
這是學習筆記的第 2096 篇文章
最近兩天梳理了下生命周期管理的內容,在重新梳理的過程中,原先一些沒想明白的點在這個過程中也整理明白了,而整個改進的過程在重新梳理時,發現不會大改,而是在入口和過濾的部分做一些補充,為此我也準備了如下的一些測試案例,準備把現有的流程能夠較為完整的走一遍。
其實這個過程中反覆琢磨的東西,本質上還是模型。

這是一個讓我相見恨晚的設計圖,折騰了一圈,目前來看,能夠滿足我預設的絕大多數場景。
接下來我把一些測試計劃和數據模型的設計內容也總結出來。
測試計劃
測試case |
測試類型 |
測試描述 |
預期結果 |
備註 |
---|---|---|---|---|
1 |
初始化表 |
初始化表 |
mysql_tab_baseline(insert) mysql_snap_tab_col_info(insert) mysql_snap_tab_index_info(insert) |
|
2 |
初始化表 |
初始化庫 |
mysql_db_baseline(insert) |
|
3 |
DDL-新增 |
新建表 |
mysql_snap_tab_info(insert) mysql_tab_baseline(insert) mysql_snap_tab_col_info(insert) mysql_snap_tab_index_info(insert) |
|
4 |
DDL-修改表 |
修改表-新增欄位 |
mysql_snap_tab_info(insert) mysql_snap_tab_col_info(insert) |
|
5 |
DDL-修改表 |
修改表-修改欄位 |
mysql_snap_tab_info(insert) mysql_snap_tab_col_info(insert) |
|
6 |
DDL-修改表 |
修改表-刪除欄位 |
mysql_snap_tab_info(insert) mysql_snap_tab_col_info(insert) |
|
7 |
DDL-修改表 |
修改表-新增索引 |
mysql_snap_tab_info(insert) mysql_snap_tab_index_info(insert) |
|
8 |
DDL-修改表 |
修改表-刪除索引 |
mysql_snap_tab_info(insert) mysql_snap_tab_index_info(insert) |
|
9 |
DDL-刪除表 |
truncate表數據 |
待定 |
|
10 |
DDL-刪除表 |
drop表數據 |
mysql_tab_baseline(update) |
|
11 |
DML |
insert,delete,update |
mysql_snap_hot_tab_info(insert) |
|
mysql_life_cycle_snapshot
Field |
Type |
Null |
Key |
Default |
Extra |
---|---|---|---|---|---|
snap_id |
int(11) |
NO |
PRI |
NULL |
auto_increment |
ip_addr |
varchar(50) |
NO |
|
NULL |
|
db_port |
varchar(100) |
NO |
|
NULL |
|
duration |
int(11) |
YES |
|
NULL |
|
start_time |
datetime(6) |
YES |
|
NULL |
|
end_time |
datetime(6) |
YES |
|
NULL |
|
memo |
varchar(500) |
YES |
|
NULL |
|
create_time |
datetime(6) |
NO |
|
NULL |
|
mysql_tab_baseline
Field |
Type |
Null |
Key |
Default |
Extra |
---|---|---|---|---|---|
id |
int(11) |
NO |
PRI |
NULL |
auto_increment |
snap_id |
int(11) |
NO |
|
NULL |
快照id只作為初始狀態的標識 |
ip_addr |
varchar(50) |
NO |
|
NULL |
|
db_port |
varchar(50) |
NO |
|
NULL |
|
table_schema |
varchar(50) |
NO |
|
NULL |
|
table_name |
varchar(50) |
NO |
|
NULL |
只有表的最新狀態資訊 |
tab_create_time |
datetime(6) |
YES |
|
NULL |
表的創建時間 |
create_time |
datetime(6) |
NO |
|
NULL |
變更時間 |
table_comment |
varchar(50) |
NO |
|
NULL |
|
table_ddl |
longtext |
NO |
|
NULL |
初始化的創建語句 |
memo |
varchar(500) |
NO |
|
NULL |
|
table_status |
varchar(50) |
NO |
|
NULL |
ACTIVE,RECYCLE,INACTIVE |
avg_row_length |
varchar(50) |
NO |
|
NULL |
初始狀態的數值 |
data_length |
varchar(50) |
NO |
|
NULL |
|
index_length |
varchar(50) |
NO |
|
NULL |
初始狀態的數值 |
tab_last_ddl_time |
datetime(6) |
YES |
|
NULL |
最新的DDL時間 |
tab_last_dml_time |
datetime(6) |
YES |
|
NULL |
最新的DML時間 |
table_collation |
varchar(50) |
NO |
|
NULL |
|
table_engine |
varchar(50) |
NO |
|
NULL |
|
table_row_format |
varchar(50) |
NO |
|
NULL |
|
table_rows |
varchar(50) |
NO |
|
NULL |
初始狀態的數值 |
mysql_snap_tab_info
Field |
Type |
Null |
Key |
Default |
Extra |
---|---|---|---|---|---|
id |
int(11) |
NO |
PRI |
NULL |
auto_increment |
snap_id |
int(11) |
NO |
|
NULL |
|
ip_addr |
varchar(50) |
NO |
MUL |
NULL |
|
db_port |
varchar(50) |
NO |
|
NULL |
|
table_schema |
varchar(50) |
NO |
|
NULL |
|
table_name |
varchar(50) |
NO |
|
NULL |
|
create_time |
datetime(6) |
NO |
|
NULL |
|
tab_last_ddl_time |
datetime(6) |
NO |
|
NULL |
|
tab_last_dml_time |
datetime(6) |
YES |
|
NULL |
|
table_engine |
varchar(50) |
NO |
|
NULL |
|
table_row_format |
varchar(50) |
NO |
|
NULL |
|
table_collation |
varchar(50) |
NO |
|
NULL |
|
table_rows |
varchar(50) |
NO |
|
NULL |
|
avg_row_length |
varchar(50) |
NO |
|
NULL |
|
data_length |
varchar(50) |
NO |
|
NULL |
|
index_length |
varchar(50) |
NO |
|
NULL |
|
table_status |
varchar(50) |
NO |
|
NULL |
|
table_ddl |
longtext |
NO |
|
NULL |
|
memo |
varchar(500) |
NO |
|
NULL |
|
change_sub_type |
varchar(50) |
NO |
|
NULL |
|
change_type |
varchar(50) |
NO |
|
NULL |
|
table_comment |
varchar(50) |
NO |
|
NULL |
|
mysql_snap_tab_col_info
Field |
Type |
Null |
Key |
Default |
Extra |
---|---|---|---|---|---|
id |
int(11) |
NO |
PRI |
NULL |
auto_increment |
snap_id |
int(11) |
NO |
|
NULL |
|
ip_addr |
varchar(50) |
NO |
MUL |
NULL |
|
db_port |
varchar(50) |
NO |
|
NULL |
|
table_schema |
varchar(50) |
NO |
|
NULL |
|
table_name |
varchar(50) |
NO |
|
NULL |
|
column_id |
int(11) |
YES |
|
NULL |
|
column_name |
varchar(50) |
NO |
|
NULL |
|
column_type |
varchar(50) |
NO |
|
NULL |
|
column_default |
varchar(50) |
YES |
|
NULL |
|
column_isnull |
varchar(50) |
NO |
|
NULL |
|
create_time |
datetime(6) |
NO |
|
NULL |
|
memo |
varchar(500) |
NO |
|
NULL |
|
mysql_snap_tab_index_info
Field |
Type |
Null |
Key |
Default |
Extra |
---|---|---|---|---|---|
id |
int(11) |
NO |
PRI |
NULL |
auto_increment |
snap_id |
int(11) |
NO |
|
NULL |
|
ip_addr |
varchar(50) |
NO |
MUL |
NULL |
|
db_port |
varchar(50) |
NO |
|
NULL |
|
table_schema |
varchar(50) |
NO |
|
NULL |
|
table_name |
varchar(50) |
NO |
|
NULL |
|
index_name |
varchar(50) |
NO |
|
NULL |
|
column_index |
int(11) |
YES |
|
NULL |
|
column_name |
varchar(50) |
NO |
|
NULL |
|
column_orderby |
varchar(50) |
NO |
|
NULL |
|
create_time |
datetime(6) |
NO |
|
NULL |
|
memo |
varchar(500) |
NO |
|
NULL |
|
mysql_snap_hot_tab_info
Field |
Type |
Null |
Key |
Default |
Extra |
---|---|---|---|---|---|
id |
int(11) |
NO |
PRI |
NULL |
auto_increment |
snap_id |
int(11) |
NO |
|
NULL |
|
ip_addr |
varchar(50) |
NO |
MUL |
NULL |
|
db_port |
varchar(50) |
NO |
|
NULL |
|
table_schema |
varchar(50) |
NO |
|
NULL |
|
table_name |
varchar(50) |
NO |
|
NULL |
|
create_time |
datetime(6) |
NO |
|
NULL |
|
tab_last_ddl_time |
datetime(6) |
NO |
|
NULL |
|
tab_last_dml_time |
datetime(6) |
YES |
|
NULL |
|
table_engine |
varchar(50) |
NO |
|
NULL |
|
table_row_format |
varchar(50) |
NO |
|
NULL |
|
table_collation |
varchar(50) |
NO |
|
NULL |
|
table_rows |
varchar(50) |
NO |
|
NULL |
|
avg_row_length |
varchar(50) |
NO |
|
NULL |
|
data_length |
varchar(50) |
NO |
|
NULL |
|
index_length |
varchar(50) |
NO |
|
NULL |
|
table_status |
varchar(50) |
NO |
|
NULL |
|
memo |
varchar(500) |
NO |
|
NULL |
|
hot_degree |
int(11) |
NO |
|
NULL |
|