构建面向信创生态的数据中台(一):骨架与血液——DML/DDL职责划分与执行机制
📌 摘要
在信创体系下构建数据中台,不仅是技术选型的挑战,更是架构哲学的重塑。本文从“骨架与血液”的比喻切入,系统解析 DML 与 DDL 的职责边界、执行机制与组件分工,深入对比 Trino、Flink SQL、TiDB 等主流引擎在信创环境中的能力适配,并提出分层架构设计原则与国产化落地建议,帮助企业构建高性能、可扩展、合规的数据中台体系。
🔑 关键词
数据中台、DML、DDL、信创生态、执行引擎
1️⃣ 引子:为什么要重新定义“谁负责数据的变化”?
在传统数据平台中,DML 与 DDL 往往由同一个引擎统一执行。但在信创体系下,组件能力边界被重新划分:
- 有的引擎只负责查询(Trino)
- 有的引擎只负责计算(Flink)
- 有的引擎既能存储又能分析(TiDB、Doris)
这就要求我们在架构设计中明确:
谁负责定义数据结构?谁负责执行数据变更?谁负责落地存储?
2️⃣ DML / DDL 的职责边界与执行机制
✅ 核心定义
| 类型 | 含义 | 示例 | 执行者 |
|---|---|---|---|
| DDL | 定义数据结构 | CREATE TABLE, ALTER TABLE | 元数据层、注册表 |
| DML | 操作数据内容 | INSERT, UPDATE, DELETE | 计算引擎、存储引擎 |
✅ 执行机制差异
- DDL 执行路径:通常由元数据服务(如 Hive Metastore、Catalog)解析 → 注册表 → 引擎识别结构
- DML 执行路径:由计算引擎(如 Flink)编译为 JobGraph → TaskManager 执行 → Sink 写入底层存储
✅ 信创环境下的特殊挑战
- 国产数据库对 DDL 的支持不完全一致(如 CTAS、ALTER)
- Flink SQL 在国产 OS 上的兼容性需验证(JDK、文件系统、网络栈)
- Trino 仅支持查询,不能执行 DML,需配合其他组件落地数据
3️⃣ 引擎能力对比与信创适配建议
| 引擎 | DML支持 | DDL支持 | 特点 | 信创适配建议 |
|---|---|---|---|---|
| Trino / Presto | ❌ | ❌ | 查询专用,不落地数据 | 使用国产JDK编译,适合查询总线 |
| Flink SQL | ✅ | ✅ | 实时 ETL 核心,批流一体 | 支持麒麟/统信,对接 OceanBase |
| TiDB | ✅ | ✅ | 分布式事务数据库 | 已通过信创认证,适合 ODS 层 |
| Doris / StarRocks | ✅ | ✅ | 高性能 OLAP 引擎 | 支持国产部署,适合 DWS/ADS 层 |
| OceanBase | ✅ | ✅ | HTAP 能力,兼容 MySQL | 信创生态主力数据库之一 |
4️⃣ 架构分层设计原则(信创视角)
✅ 原则总结
- 分层职责清晰:ODS 负责数据落地,DWD 负责清洗,DWS 负责聚合,ADS 负责应用
- 执行者明确:DML 由计算/存储引擎执行,DDL 由元数据层驱动
- 信创优先:每层选型优先国产组件,确保兼容性与合规性
5️⃣ 实践案例:Flink SQL + OceanBase
注册源表(OceanBase)
CREATE TABLE ob_user_source (id INT,name STRING,update_time TIMESTAMP(3),PRIMARY KEY (id) NOT ENFORCED
) WITH ('connector' = 'jdbc','url' = 'jdbc:oceanbase://ob-cluster:2883/test','table-name' = 'user','username' = 'admin','password' = 'admin123'
);
注册目标表(打印输出)
CREATE TABLE user_sink (id INT,name STRING
) WITH ('connector' = 'print'
);
DML 操作:数据插入
INSERT INTO user_sink
SELECT id, name FROM ob_user_source
WHERE update_time > TIMESTAMP '2025-10-31 00:00:00';
6️⃣ 信创适配建议(组件级)
| 模块 | 推荐方案 | 适配说明 |
|---|---|---|
| 操作系统 | 麒麟、统信UOS | Flink、TiDB 已验证兼容性 |
| 数据库 | OceanBase、达梦、金仓 | 支持 JDBC 接入与 SQL 执行 |
| 中间件 | RocketMQ | 替代 Kafka,适配 Flink Connector |
| 元数据管理 | Hive Metastore / Apache Atlas | 可部署国产镜像版本 |
| 部署方式 | Kubernetes + StreamPark | 支持国产容器平台(如 KubeSphere) |
7️⃣ 总结与行动建议
- 构建信创数据中台,必须明确 DML 与 DDL 的职责边界与执行路径
- 不同组件能力差异大,不能“混用”,需架构层面清晰分工
- Flink SQL 是信创中台的 ETL 核心,Trino 适合查询总线,TiDB/OceanBase 适合数据落地
- 架构设计应遵循“分层解耦、国产优先、安全合规”的三大原则
- 下一步建议:梳理临时表策略,解决跨作业中间结果复用问题
📣 下篇预告 | 构建面向信创生态的数据中台(二)
临时表只是“中间结果”?在信创体系下,它关乎性能、兼容性与架构复用。下一篇,我们将揭开临时表策略背后的“潜规则”,解析 CTE、CTAS、缓存机制的适用场景与国产数据库的落地挑战。
敬请期待:潜规则与落地法——临时表策略与国产化演进
如果你希望我将这篇内容转为 CSDN Markdown 发布格式,或生成配套图表(如 flowchart、表格、SQL 高亮),我可以继续深化。你还想加入哪些维度?比如数据治理、安全策略、国产评测建议?我们可以继续扩展。
