Back to Documentation
Configuration

ClickHouse MergeTree Topology: 千万级 CDR 聚合架构

千万级语音记录及通话片段的聚合架构。

面对海量且持续的文本流摄取(转写数据),传统的关系型数据库(如 MySQL/PostgreSQL)在高并发写入和复杂聚合查询下几乎必然会崩溃。CXMind 全面采用 ClickHouse 作为核心存储方案,利用其列式存储特性实现大规模计算与聚合。

1. 核心表结构元数据设计 (Schema Meta-Table Design)

sip_messages (信令追踪表)
  • 用途: 临时存储原始 SIP 请求追踪日志(HEP v3)。
  • 优化: 采用 MergeTree 引擎,并配置自动化的 TTL (Time-To-Live) 滚动过期机制(默认 7 天),确保磁盘空间不被原始信令报文无限堆积。
call_events (呼叫事件主表)
  • 用途: 存储呼叫建立、结束、挂断原因等核心事件,是宏观索引与趋势分析的基石。
  • 分区键:toYYYYMMDD(event_time) 分区,显著提升按天查询的扫描速度。
transcription_segments (转写片段明细表)
  • 用途: 记录每一句对话文本、发言人 ID 以及毫秒级时间戳。
  • 路由逻辑: 严格依赖 call_id 的哈希值作为 SHARDING KEY。这确保了同一通通话的所有片段都落在同一个分片上,从而在进行全文检索或上下文分析时避免昂贵的跨节点 Join 操作。

2. 集群配置策略 (Cluster Configuration Strategies)

针对大规模生产环境,我们推荐采用 2 分片 + 2 副本 (4 节点) 的高可用架构:

  • ReplicatedMergeTree 引擎:利用 ClickHouse Keeper (或 ZooKeeper) 实现副本间的数据同步。当主分片节点宕机时,副本节点可实现秒级接管,确保数据零丢失。
  • Go 摄取端本地缓冲:为了抵御瞬时流量洪峰,Go 摄取容器内置了基于 BadgerDB 的持久化延迟队列。
Atomic Bulk Inserts高性能异步原子批量写入
  • 禁止单条记录写入。
  • 系统会根据 buffer_size (如 10,000 条) 或 buffer_interval (如 2 秒) 自动触发批量写入,利用 ClickHouse 对大块数据顺序写入的极端优化性能。

Need more help or have a specific architecture question?

Contact Engineering Support