摘要
面向初創與企業團隊,系統梳理數據庫與數據平臺從采集、傳輸、存儲、處理、服務化到治理與安全的全鏈路。覆蓋 OLTP/OLAP/HTAP、湖倉一體與實時數據棧,結合國內外工具與方法論,給出架構選型、性能優化、可靠性與合規要點,以及可落地的命令清單與實施檢查表。文末附 PlantUML 思維導圖。
1. 架構總覽與數據流轉
典型分層
采集層:日志/業務數據庫/物聯網數據 → CDC/Agent/Kafka
傳輸層:消息隊列與傳輸協議(Kafka、Pulsar、RocketMQ、REST、gRPC)
計算層:批處理(Spark、Hive、Trino)、流處理(Flink、Kafka Streams)、批流一體(Flink、Spark Structured Streaming)
存儲層:行存 OLTP(MySQL、PostgreSQL、TiDB、OceanBase)、列存 OLAP(ClickHouse、StarRocks、Doris、Snowflake、BigQuery、Redshift)、數據湖與湖倉(S3/OSS/OBS+Iceberg/Hudi/Delta Lake)、時序庫(TimescaleDB、InfluxDB、TDengine)、圖數據庫(Neo4j、JanusGraph、Nebula Graph)、搜索與向量(Elasticsearch/OpenSearch、Milvus、Qdrant、pgvector、ClickHouse 向量)
服務與語義層:API Gateway、數據服務化、中臺數據產品、語義模型/數據集(dbt、Cube、Semantic Layer)
可視化與應用:BI/報表/運營大屏、內外部 API
參考架構范式
數據倉庫與數據集市(Kimball 維度建模、Inmon 企業模型)
Lambda/Kappa/湖倉一體(ELT 主導,存算分離)
Medallion 分層:Bronze 原始、Silver 清洗、Gold 主題與指標
Data Mesh:面向域的數據產品與數據契約
2. 存儲與引擎選型
OLTP
單體與讀寫分離:MySQL、PostgreSQL;代理與分片:ProxySQL、Vitess、ShardingSphere、MyCAT
分布式 HTAP/金融級:TiDB、OceanBase、openGauss/GaussDB、PolarDB
OLAP 與近實時
列存與向量化:ClickHouse、StarRocks、Apache Doris、Apache Druid、Trino/Presto
云原生倉庫:Snowflake、BigQuery、Redshift、AnalyticDB、Hologres
數據湖與湖倉
元數據目錄:Glue Catalog、Hive Metastore、Unity Catalog、Lake Formation
表格式與 ACID:Iceberg、Hudi、Delta Lake;文件格式:Parquet、ORC、Avro
批流一體讀寫:Flink+Iceberg/Hudi、Spark+Delta
特種庫
時序:TimescaleDB、InfluxDB、TDengine
圖:Neo4j、JanusGraph、Nebula Graph
向量與檢索:Milvus、Qdrant、Weaviate、Elasticsearch/OpenSearch 向量、pgvector、ClickHouse 向量
3. 數據采集與傳輸
CDC 與日志
Binlog/Redo 日志:Debezium、Flink CDC、Canal、GoldenGate
觸發器或定期快照:DataX、Sqoop(存量遷移),謹慎用于增量
消息與總線
Kafka、Pulsar、RocketMQ、RabbitMQ;順序、分區、冪等、Exactly-once 語義
協議與序列化:Avro/Protobuf/JSON、Schema Registry、演進與兼容策略
IoT 與邊緣
MQTT/CoAP、網關匯聚、邊緣聚合與降采樣、離線補傳
4. 數據建模與處理方法
事務與一致性
ACID 與 MVCC、隔離級別、分布式事務(兩階段提交、Percolator、TCC/Saga)
CAP 與 PACELC 取舍:可用性/一致性/延遲的業務權衡
維度建模與數據契約
事實表與維度表、星型/雪花、SCD Type 1/2、主鍵策略與代理鍵
數據契約與語義層:指標定義、口徑管理、數據產品接口
流批一體
事件時間與水位線、遲到與亂序、狀態一致性、窗口(滾動/滑動/會話)
批處理回填與重算、冪等寫入與去重鍵
質量與可觀察性
維度:完整性、唯一性、有效性、一致性、及時性、準確性
校驗與監控:Great Expectations、Soda Core、Deequ;血緣:Amundsen、DataHub、Atlas、Spline
5. 工程化與平臺能力
任務編排與調度
Airflow、Dagster、Prefect、Azkaban、DolphinScheduler、DataWorks(阿里)
依賴與優先級、重試與補償、事件驅動與日歷窗口
元數據與治理
數據目錄、血緣、數據地圖、敏感分級與標簽、數據資產評估
訪問治理:Ranger、Sentry、Lake Formation、Unity Catalog、Apache Knox
安全與合規
傳輸與靜態加密、行列級權限、動態脫敏、令牌化、密鑰管理(KMS/HSM)
隱私與法規:GDPR、CCPA、PIPL、等保 2.0;跨境與本地化
可觀測性與容量
指標/日志/追蹤:Prometheus、Grafana、OpenTelemetry、ELK
SLO:查詢時延、吞吐、錯誤率、資源水位;自動擴縮容與配額
6. 性能優化要點
OLTP
索引與統計信息(BTree/Hash、GIN/GiST)、覆蓋索引、冷熱分離
分區/分表與路由鍵、連接池、慢查詢畫像與執行計劃分析
OLAP/湖倉
列式壓縮與編碼(字典、RLE)、分區與分桶、Z-Order/Cluster Key、Bloom Filter
物化視圖與聚合表、冷熱分層、查詢下推與向量化執行
流處理
反壓與水位線、狀態大小與 RocksDB、Checkpoint 與 Savepoint、Exactly-once Sink
7. 架構選型指南(速查)
高并發交易系統:OLTP 分布式(TiDB/OceanBase)或 PostgreSQL+讀寫分離
近實時分析與報表:StarRocks/ClickHouse+Doris/Trino;行轉列與聚合表
大數據湖倉:S3/OSS/OBS+Iceberg/Hudi/Delta + Spark/Trino/Flink
實時鏈路:Kafka→Flink→Iceberg/ClickHouse→API/BI
時序監控:Kafka→Flink→TimescaleDB/TDengine→Grafana
圖譜與推薦:OLTP+CDC→圖數據庫/向量檢索→在線召回/排序
8. 研發流程與環境
開發到生產
本地開發容器化與 Compose(數據庫/消息/計算鏡像)
Dev/Stage/Prod 三環境、藍綠與灰度、數據回放與影子流量
遷移與變更
Online Schema Change:gh-ost、pt-online-schema-change、Liquibase/Flyway
數據回填與校驗、雙寫與校驗、回滾預案(PITR、冗余快照)
9. 常用命令與最小示例
Kafka
創建主題:
kafka-topics.sh --create --topic events --partitions 8 --replication-factor 3 --bootstrap-server localhost:9092
控制臺生產/消費:
kafka-console-producer.sh ...
、kafka-console-consumer.sh --from-beginning ...
Flink
提交作業:
flink run -m yarn-cluster -c com.demo.Job target/job.jar
Savepoint:
flink savepoint <jobId> file:///checkpoints/sp
dbt
初始化與運行:
dbt init
,dbt run
,dbt test
,dbt docs generate && dbt docs serve
ClickHouse
建表與分區
CREATE TABLE t
( id UInt64, dt Date, x Float64 )
ENGINE = MergeTree PARTITION BY toYYYYMM(dt) ORDER BY (dt,id);
物化視圖
CREATE MATERIALIZED VIEW mv AS
SELECT toDate(time) d, count() c FROM src GROUP BY d;
PostgreSQL
分區表
CREATE TABLE sales (id bigserial, d date, amt numeric) PARTITION BY RANGE (d);
CREATE TABLE sales_2025m08 PARTITION OF sales FOR VALUES FROM ('2025-08-01') TO ('2025-09-01');
并行與計劃:
EXPLAIN (ANALYZE, BUFFERS)
Iceberg 表創建(Spark SQL)
CREATE TABLE lake.sales (id BIGINT, ts TIMESTAMP, amt DECIMAL(12,2))
USING iceberg PARTITIONED BY (days(ts));
10. 實施檢查表(濃縮)
需求與SLO:吞吐、時延、可用性、成本上限
數據契約:字段口徑、變更策略、兼容級別、Schema Registry
安全與治理:分級分類、RLS/CLS、密鑰與審計、血緣與質量門禁
架構與選型:OLTP/OLAP/湖倉與實時路徑、冷熱分層與成本測算
運維與可觀測:指標閾值、告警路由、容量與備份/演練
發布與回滾:藍綠/灰度、雙寫校驗、PITR、應急劇本
11. 學習路徑與資料
基礎與范式:數據庫系統概念、Designing Data-Intensive Applications、The Data Warehouse Toolkit
工具與實踐:Flink/Spark 官方教程、Iceberg/Hudi/Delta 文檔、ClickHouse/StarRocks/Trino 文檔、Airflow/Dagster/Prefect 實戰
國內生態:阿里 DataWorks、華為云 ROMA/數據治理、騰訊 TBDS、開源 TiDB/TiFlash、OceanBase、Doris/StarRocks、TDengine、Nebula Graph
PlantUML 思維導圖
@startmindmap
* 數據庫架構開發知識庫
** 架構與流轉
*** 采集(Logs/CDC/IoT)
*** 傳輸(Kafka/Pulsar/RocketMQ)
*** 計算(Spark/Flink/Trino)
*** 存儲(OLTP/OLAP/湖倉/時序/圖/向量)
*** 服務與語義(API/語義層/dbt)
*** 可視化(BI/大屏/API)
** 存儲與引擎
*** OLTP(MySQL/PostgreSQL/TiDB/OceanBase)
*** OLAP(ClickHouse/StarRocks/Doris/Trino/Druid)
*** 湖倉(S3+Iceberg/Hudi/Delta)
*** 特種(時序/圖/向量)
** 采集與傳輸
*** CDC(Debezium/FlinkCDC/Canal)
*** 消息(Avro/Protobuf/Schema Registry)
*** IoT(MQTT/邊緣聚合)
** 建模與處理
*** 事務與一致性(ACID/MVCC/CAP/PACELC)
*** 維度建模(SCD/星型/契約)
*** 流批一體(事件時間/水位線/冪等)
*** 質量與血緣(GE/Soda/DataHub/Atlas)
** 工程化與治理
*** 調度(Airflow/Dagster/Prefect/DS)
*** 元數據與權限(Ranger/Sentry/Unity)
*** 安全(加密/脫敏/分級/合規)
*** 可觀測性(OTel/Prometheus/Grafana)
** 性能優化
*** OLTP(索引/分區/路由/慢查)
*** OLAP(分區/聚合表/物化/向量化)
*** 流(反壓/狀態/Checkpoint)
** 選型指南
*** 交易/報表/湖倉/實時/時序/圖
** 研發與上線
*** 容器化/多環境/藍綠灰
*** Schema變更(gh-ost/Flyway)
*** 回滾與PITR
** 命令與示例
*** Kafka/Flink/dbt/ClickHouse/PG/Iceberg
** 檢查表與學習
*** SLO/契約/安全/運維/發布
*** 書籍/文檔/國內生態
@endmindmap