PostgreSQL 擅长事务处理但不擅长分析。Apache Doris MOW 引擎在 25% 更新场景下比 ClickHouse 快 25 倍。森马 QPS 提升 400%(8000+ 门店 16 条业务线),天眼查延迟降低 70%(3 亿公司)。本文拆解 HTAP 架构的数据同步策略、表结构设计和工作负载隔离配置。
关键词:Apache Doris · PostgreSQL · HTAP · MOW 引擎 · SelectDB · 数据同步 · 工作负载隔离 · 分库分表
为什么 PostgreSQL 不擅长实时分析?
PostgreSQL 分库分表解决了事务型扩展,但分析场景暴露六大局限:
| 问题 | 原因 | 影响 |
|---|---|---|
| 分析效率低 | 跨分库 JOIN 需拼接分片 | 查询延迟高 |
| 成本高昂 | TP 存储侧重性能非成本 | 存储成本高 |
| 隔离性缺失 | 分析挤占 TP 资源 | 影响交易响应 |
| 存储冗余 | MVCC Append-Only 模式 | 表膨胀,I/O 激增 |
| 垃圾回收低效 | Autovacuum 难调优 | 长事务阻塞 |
| 高并发瓶颈 | Process-per-Connection | 线性扩展差 |
HTAP 架构设计
核心思想:事务与分析在物理上分离。PostgreSQL 处理事务,Apache Doris 处理分析。
数据同步策略
-- 全量同步:DataX/Sqoop 初始化
-- 读取 PG 分库分表全量数据,批量写入 Doris
-- 增量同步:Flink CDC 捕获 INSERT/UPDATE/DELETE
-- 支持断点续传、数据去重
-- Doris 端表结构设计
CREATE TABLE orders_htap (
order_id BIGINT,
user_id BIGINT,
region VARCHAR(16),
amount DECIMAL(18,2),
status VARCHAR(16),
dt DATE,
ts DATETIME
) ENGINE=OLAP
UNIQUE KEY(order_id) -- MOW 引擎,行级实时更新
PARTITION BY RANGE(dt) (
PARTITION p202607 VALUES [("2026-07-01"),("2026-08-01"))
)
DISTRIBUTED BY HASH(user_id) BUCKETS 32;
MOW 引擎配置
-- Merge-on-Write 引擎特性
-- 数据写入时即完成合并,更新后秒级可见
-- 支持 INSERT/DELETE/UPDATE/UPSERT
-- 与 CDC 工具无缝协作
-- Aggregate 表引擎(离线分析预聚合)
CREATE TABLE daily_summary (
dt DATE,
region VARCHAR(16),
total_amount DECIMAL(18,2) SUM,
order_count BIGINT SUM
) ENGINE=OLAP
AGGREGATE KEY(dt, region)
DISTRIBUTED BY HASH(dt) BUCKETS 10;
性能验证
SSB Benchmark(25% 更新场景)
| 引擎 | 性能对比 |
|---|---|
| Apache Doris MOW | 基准 |
| ClickHouse | Doris 快 25 倍 |
Doris MOW 在写入时对数据排序、编码、合并,查询时无需扫描增量日志或即时合并。
客户收益
| 企业 | 替换方案 | 规模 | 收益 |
|---|---|---|---|
| 森马 | ES + MySQL → SelectDB | 8000+ 门店 16 条业务线 | QPS +400%,秒级响应 |
| 天眼查 | Hive+MySQL+PG+ES → Doris | 3 亿公司 300+ 维度 | 延迟 -70%,写入 +75% |
工作负载隔离配置
-- TP 和 AP 物理独立集群
-- PostgreSQL 专注事务,Doris 承担分析
-- Workload Group 资源隔离
CREATE WORKLOAD GROUP IF NOT EXISTS 'realtime_dashboard'
PROPERTIES ("cpu_share" = "8", "memory_limit" = "50%");
CREATE WORKLOAD GROUP IF NOT EXISTS 'batch_etl'
PROPERTIES ("cpu_share" = "4", "memory_limit" = "30%");
存储分层配置
-- 存算分离:本地缓存 + 远端对象存储
-- 热数据缓存在本地 SSD,冷数据沉降 S3/OSS
-- 存算一体:热 SSD + 冷 HDD
-- 热数据高性能,冷数据低成本
PROPERTIES (
"storage_medium" = "ssd",
"storage_cooldown_time" = "7d" -- 7 天后转 HDD
);
HTAP 部署 Checklist
| 序号 | 步骤 | 配置 |
|---|---|---|
| 1 | 全量同步 | DataX/Sqoop 初始化数据 |
| 2 | 增量同步 | Flink CDC 捕获变更 |
| 3 | Doris 表设计 | MOW + 分区 + 分桶 |
| 4 | 索引配置 | 倒排索引 + Bloom Filter |
| 5 | 工作负载隔离 | Workload Group |
| 6 | 存储分层 | 热SSD/冷HDD 或 存算分离 |
| 7 | 查询验证 | SSB/TPC-H Benchmark |
相关阅读
关于 Apache Doris:Apache Doris 是高性能实时分析数据库,支持 PB 级数据亚秒级查询,广泛应用于报表分析、Ad-hoc 查询、统一数仓等场景。SelectDB 是 Apache Doris 的商业化公司,提供企业级支持和云服务。欢迎加入 Doris 社区 交流更多实践。

155

被折叠的 条评论
为什么被折叠?



