在海量数据时代,实时分析成为企业核心竞争力之一。YashanDB 针对这一需求,自研了列式存储引擎 LSC(Large-scale Storage Columnar Table),通过 CBO 优化器、向量化执行、原生列存格式等多项技术,打造了兼顾极速分析与实时导入能力的新一代数据引擎。
本文将从技术实现角度,带你深入理解 LSC 的核心设计与应用价值。
一、设计初心:四大目标
YashanDB LSC 的设计,围绕以下四大目标展开:
简单操作:基于统一平台,降低使用与维护复杂度,支持事务一致性与备份恢复;
极速分析:通过块级、行级过滤与多层缓存技术,加速查询响应;
实时导入:支持批量、流式及全实时数据写入,单 DN 写入速度最高达 300MB/s;
低成本:依靠列存压缩与存算分离,大幅降低数据存储与计算资源开销。
二、融合架构:统一与优化兼得
YashanDB 列式存储并非孤立模块,而是与行存共享统一的接口、事务、备份恢复、HA 同步等核心机制。
关键特点:
统一接口:支持标准 DDL、DML 操作,列存传递的是 DataSet 结构;
统一元数据管理:分区、索引等元数据体系与行表一致;
空间管理创新:列表采用 databucket 方式按目录文件管理,区别于行表的 Segment/Page 管理;
缓存优化:变长块缓存+本地磁盘缓存,提升存算分离场景下的数据访问效率。
三、存储结构:三层组织,灵活高效
LSC 表的数据组织分为三层:
分布(Distribute):打散到不同数据节点;
分区(Partition):节点内进一步分区,支持 Range/List/Hash;
切片(Slice):分区内部以小块管理,分为可变切片、内存切片和稳态切片。
稳态切片采用列式存储,经排序、压缩、编码优化,查询效率极高。
四、极速分析:四大加速武器
- 块级过滤(Block Filter)
通过 Slice/Block 的 MIN/MAX 统计信息与布隆过滤器,提前排除大量无关数据,减少 IO 与解码开销。
- 行级过滤(Row Filter)
利用字典编码,在未解码前就完成行过滤,避免无意义的数据加载与处理。
- 缓存与高效 IO
多级缓存(PageCache、DiskCache、SColDataBuffer)智能加速;
支持连续 Block 合并 IO,特别优化远端对象存储读取。
- 删除合并优化
使用 roaring bitmap 存储删除信息,降低批量查询开销;后台支持小切片合并,避免碎片化影响查询性能。
五、实时导入:毫秒级写入不是梦
批量导入
离线批量(yasldr 工具):单 DN 高达 300MB/s;
在线批量(DataX 等工具):单 DN 可达 50MB/s。
流式导入
通过 Flink + Upsert 索引机制,支持高效去重与删除,极大提升流数据导入性能。
全实时导入
采用可变列存(支持原地更新),结合 All-in-Mem 表空间,实现真正意义上的毫秒级实时写入。
六、低成本优势:存储优化与资源弹性
编码压缩
自动选择最优编码(RLE、Delta、字典、前缀等);
支持 ZSTD/LZ4 多等级压缩,压缩比最高可达 5:1.
存算分离
热数据本地加速,冷数据云端对象存储;
支持无状态化计算节点弹性伸缩,显著降低资源占用与成本。
七、未来展望
YashanDB 列式存储引擎将持续演进,未来将进一步强化高并发低延时能力,深耕存算分离与湖仓一体化方向,为实时大数据分析提供更强支撑。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。