01_mdp_config_and_registry.sql 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. -- 数据中台:同步配置与实体注册(方案 §4.2 / §4.5.2)
  2. -- 说明:使用 IF NOT EXISTS,可与现有库并存;若列不一致请人工合并,勿直接 DROP 生产表。
  3. -- 字符集建议与业务库一致(utf8mb4)。
  4. SET NAMES utf8mb4;
  5. -- ===== 同步源级配置(与 mdp_source 互补,方案草案)=====
  6. CREATE TABLE IF NOT EXISTS mdp_sync_config (
  7. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  8. source_code VARCHAR(50) NOT NULL COMMENT 'SAP / MES_OWN / AIDOPDEV_MYSQL',
  9. source_name VARCHAR(100),
  10. source_type ENUM('DB','API') NOT NULL,
  11. db_conn_string_enc VARCHAR(500) COMMENT '加密连接串',
  12. api_config_id BIGINT,
  13. sync_frequency VARCHAR(50) COMMENT 'CRON 表达式',
  14. status TINYINT DEFAULT 1,
  15. UNIQUE KEY uk_source (source_code)
  16. ) COMMENT='同步源配置(条目级)';
  17. -- ===== 数据源 =====
  18. CREATE TABLE IF NOT EXISTS mdp_source (
  19. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  20. tenant_id BIGINT NOT NULL,
  21. source_code VARCHAR(50) NOT NULL COMMENT 'SAP / MES_OWN / WMS_OWN',
  22. source_name VARCHAR(100) NOT NULL,
  23. source_type ENUM('DB','API') NOT NULL,
  24. status TINYINT DEFAULT 1,
  25. db_type ENUM('MySQL','SQLServer','Oracle','PostgreSQL'),
  26. db_host VARCHAR(200),
  27. db_port INT,
  28. db_name VARCHAR(100),
  29. db_user VARCHAR(100),
  30. db_password_enc VARCHAR(500),
  31. db_extra_params VARCHAR(500),
  32. api_base_url VARCHAR(500),
  33. api_auth_type ENUM('NONE','TOKEN','OAUTH2','APIKEY'),
  34. api_auth_config JSON,
  35. last_health_check DATETIME,
  36. health_status TINYINT DEFAULT 0,
  37. health_msg VARCHAR(500),
  38. remark VARCHAR(500),
  39. create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
  40. update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  41. UNIQUE KEY uk_tenant_source (tenant_id, source_code)
  42. ) COMMENT='数据源管理';
  43. -- ===== 同步实体 =====
  44. CREATE TABLE IF NOT EXISTS mdp_entity (
  45. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  46. tenant_id BIGINT NOT NULL,
  47. source_id BIGINT NOT NULL,
  48. entity_code VARCHAR(100) NOT NULL,
  49. entity_name VARCHAR(200) NOT NULL,
  50. entity_type ENUM('TABLE','VIEW','API') NOT NULL DEFAULT 'TABLE',
  51. source_table_name VARCHAR(200),
  52. source_api_path VARCHAR(500),
  53. api_config_id BIGINT,
  54. target_table_name VARCHAR(200),
  55. sync_mode ENUM('FULL','INCR','CDC','PAGE','CURSOR','TIME_WINDOW','NONE') DEFAULT 'INCR',
  56. incr_column VARCHAR(100),
  57. batch_size INT DEFAULT 5000,
  58. response_data_path VARCHAR(200),
  59. dedup_key_path VARCHAR(200),
  60. last_cursor VARCHAR(500),
  61. last_sync_to DATETIME,
  62. job_id VARCHAR(100),
  63. stage_code VARCHAR(50) COMMENT '所属管道阶段编码(编排预留)',
  64. status TINYINT DEFAULT 1,
  65. remark VARCHAR(500),
  66. create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
  67. update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  68. UNIQUE KEY uk_tenant_entity (tenant_id, entity_code),
  69. INDEX idx_source (source_id),
  70. INDEX idx_api_config (api_config_id)
  71. ) COMMENT='同步实体定义';
  72. -- ===== 字段映射 =====
  73. CREATE TABLE IF NOT EXISTS mdp_field_mapping (
  74. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  75. entity_id BIGINT NOT NULL,
  76. source_field VARCHAR(200) NOT NULL,
  77. target_field VARCHAR(200) NOT NULL,
  78. field_type ENUM('DIRECT','JSONPATH','SCRIPT','CONST','LOOKUP') DEFAULT 'DIRECT',
  79. transform_script TEXT,
  80. const_value VARCHAR(500),
  81. lookup_table VARCHAR(200),
  82. is_required TINYINT DEFAULT 0,
  83. default_value VARCHAR(500),
  84. sort_order INT DEFAULT 0,
  85. create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
  86. UNIQUE KEY uk_entity_field (entity_id, target_field)
  87. ) COMMENT='字段映射';
  88. -- ===== 同步执行日志(单实体粒度)=====
  89. CREATE TABLE IF NOT EXISTS mdp_sync_log (
  90. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  91. tenant_id BIGINT NOT NULL,
  92. entity_id BIGINT NOT NULL,
  93. source_code VARCHAR(50) NOT NULL,
  94. entity_name VARCHAR(200),
  95. sync_batch_id VARCHAR(50) NOT NULL,
  96. sync_type ENUM('FULL','INCR') NOT NULL,
  97. trigger_type ENUM('AUTO','MANUAL') DEFAULT 'AUTO',
  98. sync_start DATETIME,
  99. sync_end DATETIME,
  100. duration_ms INT,
  101. rows_read BIGINT DEFAULT 0,
  102. rows_insert BIGINT DEFAULT 0,
  103. rows_update BIGINT DEFAULT 0,
  104. rows_skip BIGINT DEFAULT 0,
  105. rows_error BIGINT DEFAULT 0,
  106. status ENUM('RUNNING','SUCCESS','PARTIAL','FAILED') DEFAULT 'RUNNING',
  107. error_msg TEXT,
  108. error_sample JSON,
  109. INDEX idx_tenant_entity_time (tenant_id, entity_id, sync_start),
  110. INDEX idx_batch (sync_batch_id),
  111. INDEX idx_status (status)
  112. ) COMMENT='同步执行日志';
  113. -- ===== 整链转换运行日志(与 S3 MDP 监控一致,可供 S4/S8 作业复用形态)=====
  114. CREATE TABLE IF NOT EXISTS mdp_transform_run_log (
  115. id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  116. tenant_id BIGINT NOT NULL DEFAULT 0,
  117. job_code VARCHAR(64) NOT NULL DEFAULT '',
  118. job_name VARCHAR(200),
  119. trigger_type VARCHAR(32) NOT NULL DEFAULT 'AUTO',
  120. batch_id VARCHAR(64) NOT NULL,
  121. status VARCHAR(32) NOT NULL DEFAULT 'RUNNING',
  122. start_time DATETIME,
  123. end_time DATETIME,
  124. duration_ms INT,
  125. stage_rows INT,
  126. standard_rows INT,
  127. dwd_rows INT,
  128. error_message VARCHAR(2000),
  129. summary_json TEXT,
  130. create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
  131. update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  132. INDEX idx_job_time (job_code, start_time),
  133. INDEX idx_batch (batch_id),
  134. INDEX idx_status (status)
  135. ) COMMENT='管道/整链转换运行日志';