database-design
29
总安装量
29
周安装量
#7139
全站排名
安装命令
npx skills add https://github.com/tencentblueking/bk-ci --skill database-design
Agent 安装分布
claude-code
16
gemini-cli
13
opencode
13
cursor
13
codex
12
trae
11
Skill 文档
BK-CI æ°æ®åºè®¾è®¡è§èä¸è¡¨ç»ææå
ä¸ãæ°æ®åºæ¶ææ¦è¿°
1.1 æ°æ®åºåå¸
BK-CI éç¨å¾®æå¡æ¶æï¼æ¯ä¸ªæå¡æ¥æç¬ç«çæ°æ®åºï¼
| æ°æ®åºå | æå±æå¡ | 说æ |
|---|---|---|
devops_ci_process |
Process | æµæ°´çº¿æ ¸å¿æ°æ®ï¼è¡¨æå¤ï¼89KB DDLï¼ |
devops_ci_store |
Store | ç åååºæ°æ®ï¼87KB DDLï¼ |
devops_ci_auth |
Auth | æéè®¤è¯æ°æ®ï¼33KB DDLï¼ |
devops_ci_project |
Project | 项ç®ç®¡çæ°æ®ï¼25KB DDLï¼ |
devops_ci_quality |
Quality | è´¨éçº¢çº¿æ°æ®ï¼25KB DDLï¼ |
devops_ci_dispatch |
Dispatch | æå»ºè°åº¦æ°æ®ï¼24KB DDLï¼ |
devops_ci_repository |
Repository | 代ç åºæ°æ®ï¼19KB DDLï¼ |
devops_ci_metrics |
Metrics | åº¦éæ°æ®ï¼20KB DDLï¼ |
devops_ci_environment |
Environment | æå»ºæºç¯å¢æ°æ®ï¼14KB DDLï¼ |
devops_ci_notify |
Notify | éç¥æå¡æ°æ®ï¼14KB DDLï¼ |
devops_ci_ticket |
Ticket | åè¯ç®¡çæ°æ®ï¼5KB DDLï¼ |
devops_ci_artifactory |
Artifactory | å¶ååºæ°æ®ï¼4KB DDLï¼ |
devops_ci_openapi |
OpenAPI | 弿¾æ¥å£æ°æ®ï¼3KB DDLï¼ |
devops_ci_log |
Log | æ¥å¿æå¡æ°æ®ï¼2KB DDLï¼ |
1.2 SQL èæ¬ç»ç»è§è
support-files/sql/
âââ 0001_ci_create-database_mysql.sql # åå»ºæææ°æ®åº
âââ 1001_ci_*_ddl_mysql.sql # 忍¡å宿´ DDL
âââ 2001_v0.x/ # v0.x çæ¬å¢éæ´æ°
âââ 2002_v1.x/ # v1.x çæ¬å¢éæ´æ°
âââ 2003_v2.x/ # v2.x çæ¬å¢éæ´æ°
âââ 2004_v3.x/ # v3.x çæ¬å¢éæ´æ°
âââ 2025_v4.x/ # v4.x çæ¬å¢éæ´æ°
âââ 5001_init_dml/ # åå§åæ°æ®
å½åè§èï¼
- åå»ºæ°æ®åºï¼
0001_{ç³»ç»}_create-database_{dbç±»å}.sql - 宿´ DDLï¼
1xxx_{ç³»ç»}_{模å}_ddl_{dbç±»å}.sql - å¢éæ´æ°ï¼
2xxx_{ç³»ç»}_{模å}_update_{çæ¬å·}_{dbç±»å}.sql - åå§åæ°æ®ï¼
5001_{ç³»ç»}_{模å}_dml_{dbç±»å}.sql
äºãæ ¸å¿è¡¨ç»æè¯¦è§£
2.1 Process 模åï¼æµæ°´çº¿æ ¸å¿ï¼
æµæ°´çº¿ä¿¡æ¯è¡¨
-- T_PIPELINE_INFOï¼æµæ°´çº¿åºæ¬ä¿¡æ¯
CREATE TABLE T_PIPELINE_INFO (
PIPELINE_ID varchar(34) PRIMARY KEY, -- æµæ°´çº¿IDï¼P-32ä½UUIDï¼
PROJECT_ID varchar(64) NOT NULL, -- 项ç®ID
PIPELINE_NAME varchar(255) NOT NULL, -- æµæ°´çº¿åç§°
VERSION int(11) DEFAULT 1, -- çæ¬å·
CHANNEL varchar(32), -- æ¸ éï¼BS/CODECC/AMçï¼
CREATOR varchar(64) NOT NULL, -- å建è
CREATE_TIME timestamp NOT NULL, -- å建æ¶é´
LAST_MODIFY_USER varchar(64) NOT NULL, -- æè¿ä¿®æ¹è
UPDATE_TIME timestamp, -- æ´æ°æ¶é´
`DELETE` bit(1) DEFAULT b'0', -- 软å 餿 è®°
LOCKED bit(1) DEFAULT b'0', -- é宿 è®°ï¼PACï¼
UNIQUE KEY (PROJECT_ID, PIPELINE_NAME)
);
-- T_PIPELINE_RESOURCEï¼æµæ°´çº¿ç¼æèµæº
CREATE TABLE T_PIPELINE_RESOURCE (
PROJECT_ID varchar(64) NOT NULL,
PIPELINE_ID varchar(34) NOT NULL,
VERSION int(11) NOT NULL DEFAULT 1, -- çæ¬å·
MODEL mediumtext, -- æµæ°´çº¿æ¨¡åï¼JSONï¼
YAML mediumtext, -- YAML ç¼æ
CREATOR varchar(64),
CREATE_TIME timestamp NOT NULL,
PRIMARY KEY (PIPELINE_ID, VERSION)
);
-- T_PIPELINE_SETTINGï¼æµæ°´çº¿é
ç½®
CREATE TABLE T_PIPELINE_SETTING (
PIPELINE_ID varchar(34) PRIMARY KEY,
PROJECT_ID varchar(64),
NAME varchar(255),
RUN_LOCK_TYPE int(11) DEFAULT 1, -- è¿è¡éç±»å
WAIT_QUEUE_TIME_SECOND int(11) DEFAULT 7200,-- æå¤§æéæ¶é¿
MAX_QUEUE_SIZE int(11) DEFAULT 10, -- æå¤§æéæ°é
CONCURRENCY_GROUP varchar(255), -- å¹¶åç»
BUILD_NUM_RULE varchar(512), -- æå»ºå·è§å
SUCCESS_SUBSCRIPTION text, -- æå订é
FAILURE_SUBSCRIPTION text -- 失败订é
);
æå»ºåå²è¡¨
-- T_PIPELINE_BUILD_HISTORYï¼æå»ºåå²ï¼æ ¸å¿è¡¨ï¼
CREATE TABLE T_PIPELINE_BUILD_HISTORY (
BUILD_ID varchar(34) PRIMARY KEY, -- æå»ºIDï¼b-32ä½UUIDï¼
PROJECT_ID varchar(64) NOT NULL,
PIPELINE_ID varchar(34) NOT NULL,
BUILD_NUM int(20) DEFAULT 0, -- æå»ºå·
VERSION int(11), -- ç¼æçæ¬å·
STATUS int(11), -- æå»ºç¶æ
START_USER varchar(64), -- å¯å¨è
TRIGGER varchar(32) NOT NULL, -- è§¦åæ¹å¼
TRIGGER_USER varchar(64), -- 触åè
START_TIME timestamp, -- å¼å§æ¶é´
END_TIME timestamp, -- ç»ææ¶é´
EXECUTE_TIME bigint(20), -- æ§è¡æ¶é¿
MATERIAL mediumtext, -- ä»£ç ææ
BUILD_PARAMETERS mediumtext, -- æå»ºåæ°
ERROR_TYPE int(11), -- é误类å
ERROR_CODE int(11), -- é误ç
ERROR_MSG text, -- é误信æ¯
-- ç´¢å¼è®¾è®¡
KEY STATUS_KEY (PROJECT_ID, PIPELINE_ID, STATUS),
KEY INX_PROJECT_PIPELINE_NUM (PROJECT_ID, PIPELINE_ID, BUILD_NUM),
KEY INX_PROJECT_PIPELINE_START_TIME (PROJECT_ID, PIPELINE_ID, START_TIME),
KEY inx_status (STATUS),
KEY inx_start_time (START_TIME)
);
-- T_PIPELINE_BUILD_SUMMARYï¼æå»ºæè¦ï¼èå表ï¼
CREATE TABLE T_PIPELINE_BUILD_SUMMARY (
PIPELINE_ID varchar(34) PRIMARY KEY,
PROJECT_ID varchar(64) NOT NULL,
BUILD_NUM int(11) DEFAULT 0, -- å½åæå»ºå·
FINISH_COUNT int(11) DEFAULT 0, -- å®ææ¬¡æ°
RUNNING_COUNT int(11) DEFAULT 0, -- è¿è¡ä¸æ¬¡æ°
QUEUE_COUNT int(11) DEFAULT 0, -- æé次æ°
LATEST_BUILD_ID varchar(34), -- æè¿æå»ºID
LATEST_STATUS int(11), -- æè¿ç¶æ
LATEST_START_TIME timestamp, -- æè¿å¼å§æ¶é´
LATEST_END_TIME timestamp -- æè¿ç»ææ¶é´
);
æå»ºä»»å¡è¡¨
-- T_PIPELINE_BUILD_TASKï¼æå»ºä»»å¡è¯¦æ
CREATE TABLE T_PIPELINE_BUILD_TASK (
BUILD_ID varchar(34) NOT NULL,
TASK_ID varchar(34) NOT NULL,
PROJECT_ID varchar(64) NOT NULL,
PIPELINE_ID varchar(34) NOT NULL,
STAGE_ID varchar(34) NOT NULL,
CONTAINER_ID varchar(34) NOT NULL,
TASK_NAME varchar(128),
TASK_TYPE varchar(64) NOT NULL, -- ä»»å¡ç±»å
TASK_ATOM varchar(128), -- æä»¶æ è¯
ATOM_CODE varchar(128), -- æä»¶ä»£ç
STATUS int(11), -- ä»»å¡ç¶æ
START_TIME timestamp,
END_TIME timestamp,
EXECUTE_COUNT int(11) DEFAULT 0, -- æ§è¡æ¬¡æ°
ERROR_TYPE int(11),
ERROR_CODE int(11),
ERROR_MSG text,
TASK_PARAMS mediumtext, -- ä»»å¡åæ°ï¼JSONï¼
PRIMARY KEY (BUILD_ID, TASK_ID),
KEY PROJECT_PIPELINE (PROJECT_ID, PIPELINE_ID)
);
-- T_PIPELINE_BUILD_STAGEï¼æå»ºé¶æ®µ
CREATE TABLE T_PIPELINE_BUILD_STAGE (
BUILD_ID varchar(64) NOT NULL,
STAGE_ID varchar(64) NOT NULL,
PROJECT_ID varchar(64) NOT NULL,
PIPELINE_ID varchar(64) NOT NULL,
SEQ int(11) NOT NULL, -- é¶æ®µåºå·
STATUS int(11),
START_TIME timestamp,
END_TIME timestamp,
CHECK_IN mediumtext, -- åå
¥æ£æ¥
CHECK_OUT mediumtext, -- ååºæ£æ¥
PRIMARY KEY (BUILD_ID, STAGE_ID)
);
-- T_PIPELINE_BUILD_CONTAINERï¼æå»ºå®¹å¨
CREATE TABLE T_PIPELINE_BUILD_CONTAINER (
BUILD_ID varchar(64) NOT NULL,
STAGE_ID varchar(64) NOT NULL,
CONTAINER_ID varchar(64) NOT NULL,
PROJECT_ID varchar(64) NOT NULL,
PIPELINE_ID varchar(64) NOT NULL,
CONTAINER_TYPE varchar(45), -- 容å¨ç±»å
SEQ int(11) NOT NULL,
STATUS int(11),
MATRIX_GROUP_FLAG BIT(1), -- æ¯å¦ç©éµæå»º
MATRIX_GROUP_ID varchar(64), -- ç©éµç»ID
JOB_ID varchar(128),
PRIMARY KEY (BUILD_ID, STAGE_ID, CONTAINER_ID)
);
-- T_PIPELINE_BUILD_VARï¼æå»ºåé
CREATE TABLE T_PIPELINE_BUILD_VAR (
BUILD_ID varchar(34) NOT NULL,
`KEY` varchar(255) NOT NULL, -- åéå
`VALUE` varchar(4000), -- åéå¼
PROJECT_ID varchar(64),
PIPELINE_ID varchar(64),
VAR_TYPE VARCHAR(64), -- åéç±»å
READ_ONLY bit(1), -- æ¯å¦åªè¯»
PRIMARY KEY (BUILD_ID, `KEY`)
);
æå»ºæ§è¡è®°å½è¡¨ï¼RECORD ç³»åï¼
éè¦: BK-CI æä¸¤å¥æå»ºè®°å½è¡¨ï¼BUILD ç³»åç¨äºå¼ææ§è¡è°åº¦ï¼RECORD ç³»åç¨äºå端å±ç¤ºåå岿¥è¯¢ã RECORD ç³»åéè¿
EXECUTE_COUNTåæ®µæ¯æåä¸æå»ºç夿¬¡éè¯è®°å½ã
-- T_PIPELINE_BUILD_RECORD_MODELï¼æå»ºæ¨¡åè®°å½ï¼æ¯æå¤æ¬¡æ§è¡ï¼
CREATE TABLE T_PIPELINE_BUILD_RECORD_MODEL (
BUILD_ID varchar(34) NOT NULL,
PROJECT_ID varchar(64) NOT NULL,
PIPELINE_ID varchar(34) NOT NULL,
RESOURCE_VERSION int(11) NOT NULL, -- ç¼æçæ¬
BUILD_NUM int(20) NOT NULL, -- æå»ºæ¬¡æ°
EXECUTE_COUNT int(11) NOT NULL, -- æ§è¡æ¬¡æ°ï¼éè¯æ¶éå¢ï¼
START_USER varchar(32) NOT NULL,
MODEL_VAR mediumtext NOT NULL, -- 模å级å«åéï¼JSONï¼
START_TYPE varchar(32) NOT NULL, -- è§¦åæ¹å¼
QUEUE_TIME datetime(3) NOT NULL,
START_TIME datetime(3) NULL,
END_TIME datetime(3) NULL,
STATUS varchar(32),
ERROR_INFO text, -- é误信æ¯
CANCEL_USER varchar(32),
TIMESTAMPS text, -- æ¶é´æ³éå
PRIMARY KEY (BUILD_ID, EXECUTE_COUNT)
);
-- T_PIPELINE_BUILD_RECORD_STAGEï¼é¶æ®µè®°å½
CREATE TABLE T_PIPELINE_BUILD_RECORD_STAGE (
BUILD_ID varchar(64) NOT NULL,
PROJECT_ID varchar(64) NOT NULL,
PIPELINE_ID varchar(64) NOT NULL,
RESOURCE_VERSION int(11),
STAGE_ID varchar(64) NOT NULL,
SEQ int(11) NOT NULL,
STAGE_VAR text NOT NULL, -- é¶æ®µçº§å«åé
STATUS varchar(32),
EXECUTE_COUNT int(11) NOT NULL DEFAULT 1,
START_TIME datetime(3) NULL,
END_TIME datetime(3) NULL,
TIMESTAMPS text,
PRIMARY KEY (BUILD_ID, STAGE_ID, EXECUTE_COUNT)
);
-- T_PIPELINE_BUILD_RECORD_CONTAINERï¼å®¹å¨è®°å½
CREATE TABLE T_PIPELINE_BUILD_RECORD_CONTAINER (
BUILD_ID varchar(64) NOT NULL,
PROJECT_ID varchar(64) NOT NULL,
PIPELINE_ID varchar(64) NOT NULL,
RESOURCE_VERSION int(11) NOT NULL,
STAGE_ID varchar(64) NOT NULL,
CONTAINER_ID varchar(64) NOT NULL,
EXECUTE_COUNT int(11) NOT NULL DEFAULT 1,
STATUS varchar(32),
CONTAINER_VAR mediumtext NOT NULL, -- 容å¨çº§å«åé
CONTAINER_TYPE varchar(45),
CONTAIN_POST_TASK bit(1), -- å
å«POSTæä»¶æ è¯
MATRIX_GROUP_FLAG bit(1), -- ç©éµæ è¯
MATRIX_GROUP_ID varchar(64),
START_TIME datetime(3) NULL,
END_TIME datetime(3) NULL,
TIMESTAMPS text,
PRIMARY KEY (BUILD_ID, CONTAINER_ID, EXECUTE_COUNT)
);
-- T_PIPELINE_BUILD_RECORD_TASKï¼ä»»å¡è®°å½
CREATE TABLE T_PIPELINE_BUILD_RECORD_TASK (
BUILD_ID varchar(34) NOT NULL,
PROJECT_ID varchar(64) NOT NULL,
PIPELINE_ID varchar(34) NOT NULL,
RESOURCE_VERSION int(11) NOT NULL,
STAGE_ID varchar(34) NOT NULL,
CONTAINER_ID varchar(34) NOT NULL,
TASK_ID varchar(34) NOT NULL,
TASK_SEQ int(11) NOT NULL DEFAULT 1,
EXECUTE_COUNT int(11) NOT NULL DEFAULT 1,
STATUS varchar(32),
TASK_VAR mediumtext NOT NULL, -- ä»»å¡çº§å«åé
POST_INFO text, -- POSTæä»¶å
³èä¿¡æ¯
CLASS_TYPE varchar(64) NOT NULL,
ATOM_CODE varchar(128) NOT NULL,
ORIGIN_CLASS_TYPE varchar(64),
START_TIME datetime(3) NULL,
END_TIME datetime(3) NULL,
TIMESTAMPS text,
ASYNC_STATUS varchar(32), -- 弿¥æ§è¡ç¶æ
PRIMARY KEY (BUILD_ID, TASK_ID, EXECUTE_COUNT)
);
BUILD vs RECORD 表使ç¨åºæ¯:
| åºæ¯ | BUILD 表 | RECORD 表 |
|---|---|---|
| 弿è°åº¦æ§è¡ | â | â |
| Worker æåä»»å¡ | â | â |
| å端æå»ºè¯¦æ 页 | â | â |
| æ¥çå岿§è¡è®°å½ | â | â |
| éè¯æ¶ä¿çåå² | â è¦ç | â æ°å¢ |
模æ¿ç¸å ³è¡¨
-- T_TEMPLATEï¼æµæ°´çº¿æ¨¡æ¿
CREATE TABLE T_TEMPLATE (
VERSION bigint(20) AUTO_INCREMENT, -- 模æ¿çæ¬
ID varchar(32) NOT NULL, -- 模æ¿ID
TEMPLATE_NAME varchar(64) NOT NULL,
PROJECT_ID varchar(34) NOT NULL,
VERSION_NAME varchar(64) NOT NULL,
TEMPLATE mediumtext, -- 模æ¿å
容ï¼JSONï¼
TYPE varchar(32) DEFAULT 'CUSTOMIZE', -- ç±»å
STORE_FLAG bit(1) DEFAULT b'0', -- æ¯å¦å
³èååº
PRIMARY KEY (VERSION),
KEY ID (ID)
);
-- T_TEMPLATE_PIPELINEï¼æ¨¡æ¿å®ä¾å
³è
CREATE TABLE T_TEMPLATE_PIPELINE (
PIPELINE_ID varchar(34) PRIMARY KEY,
PROJECT_ID varchar(64) NOT NULL,
TEMPLATE_ID varchar(32) NOT NULL,
VERSION bigint(20) NOT NULL,
INSTANCE_TYPE VARCHAR(32) DEFAULT 'CONSTRAINT', -- FREEDOM/CONSTRAINT
PARAM mediumtext, -- å®ä¾åæ°
STATUS varchar(32) DEFAULT 'UPDATED'
);
2.2 Project 模åï¼é¡¹ç®ç®¡çï¼
-- T_PROJECTï¼é¡¹ç®ä¿¡æ¯ï¼æ ¸å¿è¡¨ï¼
CREATE TABLE T_PROJECT (
ID bigint(20) AUTO_INCREMENT,
PROJECT_ID varchar(32) NOT NULL, -- 项ç®IDï¼è±æåï¼
project_name varchar(64) NOT NULL, -- 项ç®åç§°
english_name varchar(64) NOT NULL, -- è±æåç§°
creator varchar(32), -- å建è
description text, -- æè¿°
is_offlined bit(1) DEFAULT b'0', -- æ¯å¦åç¨
bg_id bigint(20), -- äºä¸ç¾¤ID
bg_name varchar(255), -- äºä¸ç¾¤åç§°
dept_id bigint(20), -- é¨é¨ID
dept_name varchar(255), -- é¨é¨åç§°
center_id bigint(20), -- ä¸å¿ID
center_name varchar(255), -- ä¸å¿åç§°
approval_status int(10) DEFAULT 1, -- å®¡æ ¸ç¶æ
CHANNEL varchar(32) DEFAULT 'BS', -- æ¸ é
pipeline_limit int(10) DEFAULT 500, -- æµæ°´çº¿æ°éä¸é
router_tag varchar(32), -- è·¯ç±æ ç¾
properties text, -- å
¶ä»é
ç½®
PRIMARY KEY (ID),
UNIQUE KEY project_name (project_name),
UNIQUE KEY project_id (PROJECT_ID),
UNIQUE KEY english_name (english_name)
);
-- T_SERVICEï¼æå¡ä¿¡æ¯
CREATE TABLE T_SERVICE (
id bigint(20) AUTO_INCREMENT PRIMARY KEY,
name varchar(64), -- æå¡åç§°
english_name varchar(64), -- è±æåç§°
service_type_id bigint(20), -- æå¡ç±»å
link varchar(255), -- è·³è½¬é¾æ¥
status varchar(64), -- ç¶æ
UNIQUE KEY service_name (name)
);
-- T_SHARDING_ROUTING_RULEï¼åçè·¯ç±è§å
CREATE TABLE T_SHARDING_ROUTING_RULE (
ID varchar(32) PRIMARY KEY,
ROUTING_NAME varchar(128) NOT NULL, -- è·¯ç±åç§°
ROUTING_RULE varchar(256) NOT NULL, -- è·¯ç±è§å
CLUSTER_NAME varchar(64) DEFAULT 'prod', -- é群åç§°
MODULE_CODE varchar(64) DEFAULT 'PROCESS', -- æ¨¡åæ è¯
TYPE varchar(32) DEFAULT 'DB', -- è·¯ç±ç±»å
DATA_SOURCE_NAME varchar(128) DEFAULT 'ds_0'-- æ°æ®æºåç§°
);
2.3 Auth 模åï¼æé认è¯ï¼
-- T_AUTH_RESOURCEï¼èµæºè¡¨
CREATE TABLE T_AUTH_RESOURCE (
ID bigint(20) AUTO_INCREMENT PRIMARY KEY,
PROJECT_CODE varchar(32) NOT NULL,
RESOURCE_TYPE varchar(32) NOT NULL, -- èµæºç±»å
RESOURCE_CODE varchar(255) NOT NULL, -- èµæºID
RESOURCE_NAME varchar(255) NOT NULL, -- èµæºå
IAM_RESOURCE_CODE varchar(32) NOT NULL, -- IAMèµæºID
ENABLE bit(1) DEFAULT b'0', -- æ¯å¦å¯ç¨æé管ç
RELATION_ID varchar(32) NOT NULL, -- IAMå级管çåID
UNIQUE KEY IDX_PROJECT_RESOURCE (PROJECT_CODE, RESOURCE_TYPE, RESOURCE_CODE)
);
-- T_AUTH_RESOURCE_GROUPï¼èµæºç¨æ·ç»
CREATE TABLE T_AUTH_RESOURCE_GROUP (
ID bigint(20) AUTO_INCREMENT PRIMARY KEY,
PROJECT_CODE varchar(32) NOT NULL,
RESOURCE_TYPE varchar(32) NOT NULL,
RESOURCE_CODE varchar(255) NOT NULL,
GROUP_CODE varchar(32) NOT NULL, -- ç¨æ·ç»æ è¯
GROUP_NAME varchar(255) NOT NULL, -- ç¨æ·ç»åç§°
DEFAULT_GROUP bit(1) DEFAULT b'1', -- æ¯å¦é»è®¤ç»
RELATION_ID varchar(32) NOT NULL, -- IAMç»ID
UNIQUE KEY (PROJECT_CODE, RESOURCE_TYPE, RESOURCE_CODE, GROUP_NAME)
);
-- T_AUTH_RESOURCE_GROUP_MEMBERï¼ç¨æ·ç»æå
CREATE TABLE T_AUTH_RESOURCE_GROUP_MEMBER (
ID bigint AUTO_INCREMENT PRIMARY KEY,
PROJECT_CODE varchar(64) NOT NULL,
RESOURCE_TYPE varchar(32) NOT NULL,
RESOURCE_CODE varchar(255) NOT NULL,
GROUP_CODE varchar(32) NOT NULL,
IAM_GROUP_ID int(20) NOT NULL,
MEMBER_ID varchar(64) NOT NULL, -- æåID
MEMBER_NAME varchar(512) NOT NULL, -- æåå
MEMBER_TYPE varchar(32) NOT NULL, -- æåç±»å
EXPIRED_TIME datetime NOT NULL, -- è¿ææ¶é´
UNIQUE KEY (PROJECT_CODE, IAM_GROUP_ID, MEMBER_ID)
);
-- T_AUTH_ACTIONï¼æéæä½è¡¨
CREATE TABLE T_AUTH_ACTION (
ACTION varchar(64) PRIMARY KEY, -- æä½ID
RESOURCE_TYPE varchar(64) NOT NULL, -- å
³èèµæºç±»å
ACTION_NAME varchar(64) NOT NULL, -- æä½åç§°
ACTION_TYPE varchar(32) -- æä½ç±»å
);
2.4 Store 模åï¼ç åååºï¼
-- T_ATOMï¼æä»¶ä¿¡æ¯
CREATE TABLE T_ATOM (
ID varchar(32) PRIMARY KEY,
NAME varchar(64) NOT NULL, -- æä»¶åç§°
ATOM_CODE varchar(64) NOT NULL, -- æä»¶å¯ä¸æ è¯
CLASS_TYPE varchar(64) NOT NULL, -- æä»¶å¤§ç±»
VERSION varchar(30) NOT NULL, -- çæ¬å·
ATOM_STATUS tinyint(4) NOT NULL, -- æä»¶ç¶æ
ATOM_TYPE tinyint(4) DEFAULT 1, -- æä»¶ç±»å
OS varchar(100) NOT NULL, -- æ¯æçæä½ç³»ç»
CLASSIFY_ID varchar(32) NOT NULL, -- åç±»ID
LATEST_FLAG bit(1) NOT NULL, -- æ¯å¦ææ°çæ¬
DEFAULT_FLAG bit(1) DEFAULT b'0', -- æ¯å¦é»è®¤æä»¶
PUBLISHER varchar(50) DEFAULT 'system', -- åå¸è
PROPS text, -- æä»¶å±æ§ï¼JSONï¼
UNIQUE KEY (ATOM_CODE, VERSION),
KEY inx_atom_status (ATOM_STATUS),
KEY inx_latest_flag (LATEST_FLAG)
);
-- T_ATOM_ENV_INFOï¼æä»¶æ§è¡ç¯å¢
CREATE TABLE T_ATOM_ENV_INFO (
ID varchar(32) PRIMARY KEY,
ATOM_ID varchar(32) NOT NULL,
PKG_PATH varchar(1024) NOT NULL, -- å®è£
å
è·¯å¾
LANGUAGE varchar(64), -- å¼åè¯è¨
TARGET varchar(256) NOT NULL, -- æ§è¡å
¥å£
OS_NAME varchar(128), -- æä½ç³»ç»
OS_ARCH varchar(128), -- ç³»ç»æ¶æ
RUNTIME_VERSION varchar(128), -- è¿è¡æ¶çæ¬
DEFAULT_FLAG bit(1) DEFAULT b'1', -- æ¯å¦é»è®¤ç¯å¢
UNIQUE KEY (ATOM_ID, OS_NAME, OS_ARCH)
);
-- T_STORE_PROJECT_RELï¼ååºç»ä»¶ä¸é¡¹ç®å
³è
CREATE TABLE T_STORE_PROJECT_REL (
ID varchar(32) PRIMARY KEY,
STORE_CODE varchar(64) NOT NULL, -- ç»ä»¶ç¼ç
PROJECT_CODE varchar(64) NOT NULL, -- 项ç®ID
TYPE tinyint(4) NOT NULL, -- å
³èç±»å
STORE_TYPE tinyint(4) DEFAULT 0, -- ç»ä»¶ç±»å
UNIQUE KEY (STORE_CODE, STORE_TYPE, PROJECT_CODE, TYPE, INSTANCE_ID, CREATOR)
);
-- T_STORE_STATISTICS_TOTALï¼ç»è®¡ä¿¡æ¯
CREATE TABLE T_STORE_STATISTICS_TOTAL (
ID varchar(32) PRIMARY KEY,
STORE_CODE varchar(64) NOT NULL,
STORE_TYPE tinyint(4) DEFAULT 0,
DOWNLOADS int(11) DEFAULT 0, -- ä¸è½½é
COMMITS int(11) DEFAULT 0, -- è¯è®ºæ°
SCORE int(11) DEFAULT 0, -- è¯å
SCORE_AVERAGE decimal(3,1) DEFAULT 0.0, -- å¹³åå
PIPELINE_NUM INT(11) DEFAULT 0, -- æµæ°´çº¿æ°
UNIQUE KEY (STORE_CODE, STORE_TYPE)
);
2.5 Repository 模åï¼ä»£ç åºï¼
-- T_REPOSITORYï¼ä»£ç åºä¿¡æ¯
CREATE TABLE T_REPOSITORY (
REPOSITORY_ID bigint(20) AUTO_INCREMENT PRIMARY KEY,
PROJECT_ID varchar(32) NOT NULL,
USER_ID varchar(64) NOT NULL,
ALIAS_NAME varchar(255) NOT NULL, -- å«å
URL varchar(255) NOT NULL, -- ä»åºURL
TYPE varchar(20) NOT NULL, -- ç±»åï¼SVN/GIT/GITHUBçï¼
REPOSITORY_HASH_ID varchar(64), -- åå¸ID
IS_DELETED bit(1) NOT NULL, -- æ¯å¦å é¤
ENABLE_PAC bit(1) DEFAULT false, -- æ¯å¦å¼å¯PAC
KEY PROJECT_ID (PROJECT_ID),
KEY inx_alias_name (ALIAS_NAME)
);
-- T_REPOSITORY_CODE_GITï¼Git代ç åºè¯¦æ
CREATE TABLE T_REPOSITORY_CODE_GIT (
REPOSITORY_ID bigint(20) PRIMARY KEY,
PROJECT_NAME varchar(255) NOT NULL, -- 项ç®åç§°
USER_NAME varchar(64) NOT NULL, -- ç¨æ·å
CREDENTIAL_ID varchar(64) NOT NULL, -- 忮ID
AUTH_TYPE varchar(8), -- è®¤è¯æ¹å¼
GIT_PROJECT_ID bigint(20) DEFAULT 0 -- Git项ç®ID
);
-- T_REPOSITORY_COMMITï¼æäº¤è®°å½
CREATE TABLE T_REPOSITORY_COMMIT (
ID bigint(20) AUTO_INCREMENT PRIMARY KEY,
BUILD_ID varchar(34),
PIPELINE_ID varchar(34),
REPO_ID bigint(20),
TYPE smallint(6), -- 1-svn, 2-git, 3-gitlab
COMMIT varchar(64), -- æäº¤ID
COMMITTER varchar(32), -- æäº¤è
COMMIT_TIME datetime, -- æäº¤æ¶é´
COMMENT longtext, -- æäº¤ä¿¡æ¯
KEY IDX_BUILD_ID_TIME (BUILD_ID, COMMIT_TIME)
);
2.6 Dispatch 模åï¼æå»ºè°åº¦ï¼
-- T_DISPATCH_THIRDPARTY_AGENT_BUILDï¼ç¬¬ä¸æ¹æå»ºæºä»»å¡
CREATE TABLE T_DISPATCH_THIRDPARTY_AGENT_BUILD (
ID bigint(20) AUTO_INCREMENT PRIMARY KEY,
PROJECT_ID varchar(64) NOT NULL,
AGENT_ID varchar(32) NOT NULL, -- æå»ºæºID
PIPELINE_ID varchar(34) NOT NULL,
BUILD_ID varchar(34) NOT NULL,
VM_SEQ_ID varchar(34) NOT NULL, -- æå»ºåºåå·
STATUS int(11) NOT NULL, -- ç¶æ
WORKSPACE varchar(4096), -- å·¥ä½ç©ºé´
NODE_ID bigint(20) DEFAULT 0, -- èç¹ID
DOCKER_INFO json, -- Dockeræå»ºä¿¡æ¯
UNIQUE KEY (BUILD_ID, VM_SEQ_ID),
KEY idx_agent_id (AGENT_ID),
KEY idx_status (STATUS)
);
-- T_DISPATCH_RUNNING_JOBSï¼è¿è¡ä¸çä»»å¡
CREATE TABLE T_DISPATCH_RUNNING_JOBS (
ID int(20) AUTO_INCREMENT PRIMARY KEY,
PROJECT_ID varchar(128) NOT NULL,
VM_TYPE varchar(128) NOT NULL, -- æå»ºæºç±»å
CHANNEL_CODE varchar(128) DEFAULT 'BS', -- æå»ºæ¥æº
BUILD_ID varchar(128) NOT NULL,
VM_SEQ_ID varchar(128) NOT NULL,
EXECUTE_COUNT int(11) NOT NULL, -- æ§è¡æ¬¡æ°
CREATED_TIME datetime NOT NULL,
AGENT_START_TIME datetime, -- æå»ºæºå¯å¨æ¶é´
KEY inx_project_id (PROJECT_ID, VM_TYPE, CHANNEL_CODE),
KEY inx_build_id (BUILD_ID)
);
-- T_DISPATCH_QUOTA_PROJECTï¼é¡¹ç®é
é¢
CREATE TABLE T_DISPATCH_QUOTA_PROJECT (
PROJECT_ID varchar(128) NOT NULL,
VM_TYPE varchar(128) NOT NULL,
CHANNEL_CODE varchar(128) DEFAULT 'BS',
RUNNING_JOBS_MAX int(10) NOT NULL, -- æå¤§å¹¶åJOBæ°
RUNNING_TIME_JOB_MAX int(10) NOT NULL, -- åJOBæå¤§æ§è¡æ¶é´
RUNNING_TIME_PROJECT_MAX int(10) NOT NULL, -- é¡¹ç®æå¤§æ§è¡æ¶é´
PRIMARY KEY (PROJECT_ID, VM_TYPE, CHANNEL_CODE)
);
2.7 Environment 模åï¼æå»ºæºç¯å¢ï¼
-- T_NODEï¼èç¹ä¿¡æ¯
CREATE TABLE T_NODE (
NODE_ID bigint(20) AUTO_INCREMENT PRIMARY KEY,
PROJECT_ID varchar(64) NOT NULL,
NODE_IP varchar(64) NOT NULL, -- èç¹IP
NODE_NAME varchar(64) NOT NULL, -- èç¹åç§°
NODE_STATUS varchar(64) NOT NULL, -- èç¹ç¶æ
NODE_TYPE varchar(64) NOT NULL, -- èç¹ç±»å
OS_NAME varchar(128), -- æä½ç³»ç»
DISPLAY_NAME varchar(128) DEFAULT '', -- å«å
PIPELINE_REF_COUNT int(11) DEFAULT 0, -- æµæ°´çº¿å¼ç¨æ°
LAST_BUILD_TIME datetime, -- æè¿æå»ºæ¶é´
KEY PROJECT_ID (PROJECT_ID),
KEY NODE_IP (NODE_IP)
);
-- T_ENVIRONMENT_THIRDPARTY_AGENTï¼ç¬¬ä¸æ¹æå»ºæº
CREATE TABLE T_ENVIRONMENT_THIRDPARTY_AGENT (
ID bigint(20) AUTO_INCREMENT PRIMARY KEY,
NODE_ID bigint(20), -- èç¹ID
PROJECT_ID varchar(64) NOT NULL,
HOSTNAME varchar(128) DEFAULT '', -- 主æºå
IP varchar(64) DEFAULT '', -- IPå°å
OS varchar(16) NOT NULL, -- æä½ç³»ç»
STATUS int(11) NOT NULL, -- ç¶æ
SECRET_KEY varchar(256) NOT NULL, -- å¯é¥
VERSION varchar(128), -- Agentçæ¬
PARALLEL_TASK_COUNT int(11), -- å¹¶è¡ä»»å¡æ°
DOCKER_PARALLEL_TASK_COUNT int(11), -- Dockerå¹¶è¡ä»»å¡æ°
KEY idx_agent_node (NODE_ID),
KEY idx_agent_project (PROJECT_ID)
);
-- T_ENVï¼ç¯å¢ä¿¡æ¯
CREATE TABLE T_ENV (
ENV_ID bigint(20) AUTO_INCREMENT PRIMARY KEY,
PROJECT_ID varchar(64) NOT NULL,
ENV_NAME varchar(128) NOT NULL, -- ç¯å¢åç§°
ENV_TYPE varchar(128) NOT NULL, -- ç¯å¢ç±»åï¼DEV/TEST/BUILDï¼
ENV_VARS text NOT NULL, -- ç¯å¢åé
IS_DELETED bit(1) NOT NULL,
KEY PROJECT_ID (PROJECT_ID)
);
-- T_ENV_NODEï¼ç¯å¢-èç¹å
³è
CREATE TABLE T_ENV_NODE (
ENV_ID bigint(20) NOT NULL,
NODE_ID bigint(20) NOT NULL,
PROJECT_ID varchar(64) NOT NULL,
ENABLE_NODE bit(1) DEFAULT 1, -- æ¯å¦å¯ç¨
PRIMARY KEY (ENV_ID, NODE_ID)
);
ä¸ã表设计è§è
3.1 å½åè§è
| ç±»å | è§è | ç¤ºä¾ |
|---|---|---|
| 表å | T_ åç¼ + 大åä¸å线 |
T_PIPELINE_BUILD_HISTORY |
| ä¸»é® | ID æ {表å}_ID |
PIPELINE_ID, BUILD_ID |
| å¤é® | {å
³è表}_ID |
PROJECT_ID, NODE_ID |
| ç´¢å¼ | idx_ æ inx_ åç¼ |
idx_project_id, inx_status |
| å¯ä¸ç´¢å¼ | uni_inx_ æ UNI_ åç¼ |
uni_inx_code_version |
| æ¶é´å段 | *_TIME åç¼ |
CREATE_TIME, UPDATE_TIME |
| æ è®°åæ®µ | *_FLAG åç¼ |
LATEST_FLAG, DELETE_FLAG |
3.2 ID 设计è§è
项ç®IDï¼ è±æåç§°ï¼å¦ demo_projectï¼
æµæ°´çº¿IDï¼ p-{32ä½UUID} = 34ä½
æå»ºIDï¼ b-{32ä½UUID} = 34ä½
ä»»å¡IDï¼ t-{32ä½UUID} = 34ä½
é¶æ®µIDï¼ s-{32ä½UUID} = 34ä½
容å¨IDï¼ c-{32ä½UUID} = 34ä½
æä»¶IDï¼ 32ä½UUID
ç¨æ·ç»IDï¼ 32ä½UUID
3.3 ç¶æåæ®µè®¾è®¡
-- æå»ºç¶æï¼int ç±»åï¼
-- åè BuildStatus æä¸¾
0: QUEUE -- æéä¸
1: RUNNING -- è¿è¡ä¸
2: SUCCEED -- æå
3: FAILED -- 失败
4: CANCELED -- åæ¶
5: TERMINATE -- ç»æ¢
...
-- æä»¶ç¶æï¼tinyint ç±»åï¼
0: åå§å
1: æäº¤ä¸
2: éªè¯ä¸
3: éªè¯å¤±è´¥
4: æµè¯ä¸
5: å®¡æ ¸ä¸
6: å®¡æ ¸é©³å
7: å·²åå¸
8: 䏿¶ä¸æ¢
9: 䏿¶ä¸
10: 已䏿¶
3.4 åæ®µç±»åè§è
| åºæ¯ | ç±»å | 说æ |
|---|---|---|
| 主é®ID | varchar(32) æ bigint(20) |
UUID ç¨ varcharï¼èªå¢ç¨ bigint |
| 项ç®/æµæ°´çº¿ID | varchar(64) |
é¢çè¶³å¤é¿åº¦ |
| åç§° | varchar(64) ~ varchar(255) |
æ ¹æ®ä¸å¡éæ± |
| æè¿° | varchar(1024) æ text |
çæè¿°ç¨ varchar |
| JSON æ°æ® | mediumtext æ json |
大 JSON ç¨ mediumtext |
| æ¶é´ | datetime æ timestamp |
éè¦èªå¨æ´æ°ç¨ timestamp |
| å¸å° | bit(1) |
é»è®¤ b'0' |
| ç¶æ | int(11) æ tinyint(4) |
æä¸¾å¼ç¨ tinyint |
3.5 ç´¢å¼è®¾è®¡è§è
-- 1. 主é®ç´¢å¼
PRIMARY KEY (`ID`)
-- 2. å¯ä¸ç´¢å¼ï¼ä¸å¡å¯ä¸çº¦æï¼
UNIQUE KEY `uni_inx_code_version` (`ATOM_CODE`, `VERSION`)
-- 3. æ®éç´¢å¼ï¼æ¥è¯¢ä¼åï¼
KEY `idx_project_pipeline` (`PROJECT_ID`, `PIPELINE_ID`)
-- 4. å¤åç´¢å¼ï¼éµå¾ªæå·¦åç¼ååï¼
KEY `STATUS_KEY` (`PROJECT_ID`, `PIPELINE_ID`, `STATUS`)
-- 5. æ¶é´ç´¢å¼ï¼èå´æ¥è¯¢ï¼
KEY `inx_start_time` (`START_TIME`)
KEY `inx_create_time` (`CREATE_TIME`)
åãSQL èæ¬ç¼åè§è
4.1 å¹çæ§è¦æ±
-- 1. 建表å¿
é¡»ä½¿ç¨ IF NOT EXISTS
CREATE TABLE IF NOT EXISTS `T_EXAMPLE` (...);
-- 2. æå
¥æ°æ®ä½¿ç¨ INSERT IGNORE 鲿¢è¦ç
INSERT IGNORE INTO T_EXAMPLE (ID, NAME) VALUES (1, 'test');
-- 3. éè¦å¼ºå¶å·æ°çç³»ç»æ°æ®ä½¿ç¨ ON DUPLICATE KEY UPDATE
INSERT INTO T_EXAMPLE (ID, NAME) VALUES (1, 'test')
ON DUPLICATE KEY UPDATE NAME = 'test';
-- 4. ç¦æ¢ç´æ¥å é¤è¡¨åé建
-- é误ï¼DROP TABLE IF EXISTS T_EXAMPLE; CREATE TABLE T_EXAMPLE...
-- æ£ç¡®ï¼CREATE TABLE IF NOT EXISTS T_EXAMPLE...
4.2 åæ®µåæ´è§è
-- 1. æ°å¢å段å¿
é¡»æé»è®¤å¼æå
许 NULL
ALTER TABLE T_EXAMPLE ADD COLUMN NEW_FIELD varchar(64) DEFAULT '';
ALTER TABLE T_EXAMPLE ADD COLUMN NEW_FIELD varchar(64) NULL;
-- 2. ç¦æ¢æ¹ååæ®µï¼ä¼å¯¼è´æ°æ®ä¸¢å¤±ï¼
-- é误ï¼ALTER TABLE T_EXAMPLE CHANGE OLD_NAME NEW_NAME varchar(64);
-- 3. 使ç¨åå¨è¿ç¨å¤æå段æ¯å¦åå¨
DELIMITER $$
CREATE PROCEDURE IF NOT EXISTS add_column_if_not_exists()
BEGIN
IF NOT EXISTS (
SELECT * FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name = 'T_EXAMPLE'
AND column_name = 'NEW_FIELD'
) THEN
ALTER TABLE T_EXAMPLE ADD COLUMN NEW_FIELD varchar(64) DEFAULT '';
END IF;
END$$
DELIMITER ;
CALL add_column_if_not_exists();
DROP PROCEDURE IF EXISTS add_column_if_not_exists;
4.3 ç´¢å¼åæ´è§è
-- æ·»å ç´¢å¼ï¼ä½¿ç¨åå¨è¿ç¨å¤æï¼
DELIMITER $$
CREATE PROCEDURE IF NOT EXISTS add_index_if_not_exists()
BEGIN
IF NOT EXISTS (
SELECT * FROM information_schema.statistics
WHERE table_schema = DATABASE()
AND table_name = 'T_EXAMPLE'
AND index_name = 'idx_name'
) THEN
ALTER TABLE T_EXAMPLE ADD INDEX idx_name (NAME);
END IF;
END$$
DELIMITER ;
CALL add_index_if_not_exists();
DROP PROCEDURE IF EXISTS add_index_if_not_exists;
äºãååºå表设计
5.1 åççç¥
BK-CI æ¯ææ°æ®åºåçï¼éè¿ T_SHARDING_ROUTING_RULE 表é
置路ç±è§åï¼
-- åçè·¯ç±è§å
CREATE TABLE T_SHARDING_ROUTING_RULE (
ID varchar(32) PRIMARY KEY,
ROUTING_NAME varchar(128) NOT NULL, -- è·¯ç±åç§°ï¼é¡¹ç®IDï¼
ROUTING_RULE varchar(256) NOT NULL, -- è·¯ç±è§å
CLUSTER_NAME varchar(64) DEFAULT 'prod', -- é群åç§°
MODULE_CODE varchar(64) DEFAULT 'PROCESS', -- æ¨¡åæ è¯
TYPE varchar(32) DEFAULT 'DB', -- è·¯ç±ç±»åï¼DB/TABLEï¼
DATA_SOURCE_NAME varchar(128) DEFAULT 'ds_0'-- æ°æ®æºåç§°
);
5.2 æ°æ®æºé ç½®
-- æ°æ®æºé
ç½®
CREATE TABLE T_DATA_SOURCE (
ID varchar(32) PRIMARY KEY,
CLUSTER_NAME varchar(64) NOT NULL,
MODULE_CODE varchar(64) NOT NULL,
DATA_SOURCE_NAME varchar(128) NOT NULL,
FULL_FLAG bit(1) DEFAULT b'0', -- 容鿝妿»¡
DS_URL varchar(1024), -- æ°æ®æºURL
TAG varchar(128), -- æ°æ®æºæ ç¾
TYPE varchar(32) DEFAULT 'DB' -- DB/ARCHIVE_DB
);
å ãå¸¸ç¨æ¥è¯¢æ¨¡å¼
6.1 æµæ°´çº¿æ¥è¯¢
-- æ¥è¯¢é¡¹ç®ä¸çæµæ°´çº¿å表
SELECT * FROM T_PIPELINE_INFO
WHERE PROJECT_ID = ? AND `DELETE` = 0
ORDER BY CREATE_TIME DESC;
-- æ¥è¯¢æµæ°´çº¿ææ°çæ¬ç¼æ
SELECT * FROM T_PIPELINE_RESOURCE
WHERE PIPELINE_ID = ?
ORDER BY VERSION DESC LIMIT 1;
-- æ¥è¯¢æµæ°´çº¿æå»ºåå²
SELECT * FROM T_PIPELINE_BUILD_HISTORY
WHERE PROJECT_ID = ? AND PIPELINE_ID = ?
ORDER BY BUILD_NUM DESC
LIMIT ?, ?;
6.2 æå»ºæ¥è¯¢
-- æ¥è¯¢æå»ºè¯¦æ
SELECT h.*, d.MODEL
FROM T_PIPELINE_BUILD_HISTORY h
LEFT JOIN T_PIPELINE_BUILD_DETAIL d ON h.BUILD_ID = d.BUILD_ID
WHERE h.BUILD_ID = ?;
-- æ¥è¯¢æå»ºä»»å¡å表
SELECT * FROM T_PIPELINE_BUILD_TASK
WHERE BUILD_ID = ?
ORDER BY STAGE_ID, CONTAINER_ID, TASK_SEQ;
-- æ¥è¯¢æå»ºåé
SELECT * FROM T_PIPELINE_BUILD_VAR
WHERE BUILD_ID = ?;
6.3 ç»è®¡æ¥è¯¢
-- é¡¹ç®æµæ°´çº¿æ°éç»è®¡
SELECT PROJECT_ID, COUNT(*) as count
FROM T_PIPELINE_INFO
WHERE `DELETE` = 0
GROUP BY PROJECT_ID;
-- æå»ºç¶æç»è®¡
SELECT STATUS, COUNT(*) as count
FROM T_PIPELINE_BUILD_HISTORY
WHERE PROJECT_ID = ? AND PIPELINE_ID = ?
GROUP BY STATUS;
ä¸ãæ§è½ä¼å建议
7.1 ç´¢å¼ä¼å
- å¤åç´¢å¼éµå¾ªæå·¦åç¼åå
- é«é¢æ¥è¯¢å段建ç«ç´¢å¼
- é¿å å¨ç´¢å¼åä¸ä½¿ç¨å½æ°
- 宿忿 ¢æ¥è¯¢æ¥å¿
7.2 æ¥è¯¢ä¼å
- ä½¿ç¨ LIMIT éå¶è¿åè¡æ°
- **é¿å SELECT ***
- 使ç¨è¦çç´¢å¼
- 大表åé¡µä½¿ç¨æ¸¸æ å页
7.3 表设计ä¼å
- 大忮µï¼TEXT/BLOBï¼æåå°ç¬ç«è¡¨
- å岿°æ®å®æå½æ¡£
- çç¹æ°æ®ä½¿ç¨ç¼å
- èè读åå离
åäºãæ©å±ä¸»é¢
12.1 æ°æ®åºèæ¬ç®¡ç
è¯¦è§ reference/1-script-management.md
æ ¸å¿å 容:
- SQL èæ¬å½åè§è
- å¢éæ´æ°èæ¬ç¼å
- èæ¬æ§è¡é¡ºåºç®¡ç
- åæ»èæ¬è®¾è®¡
12.2 æ°æ®åºåç
è¯¦è§ reference/2-sharding.md
æ ¸å¿å 容:
- åççç¥éæ©
- åçé®è®¾è®¡
- è·¨åçæ¥è¯¢å¤ç
- æ°æ®è¿ç§»æ¹æ¡