對象生命周期管理設計

  • 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