对象生命周期管理设计
- 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 |
|