其实这个过程中反复琢磨的东西,本质上还是模型。
这是一个让我相见恨晚的设计图,折腾了一圈,目前来看,能够满足我预设的绝大多数场景。
接下来我把一些测试计划和数据模型的设计内容也总结出来。
测试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) |
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 |
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 | 初始状态的数值 |
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 |
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 |
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 |
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 |