玄武分析存储引擎为用户提供高可靠、高可用、高性能、低成本的企业级数据存储能力,是AnalyticDB实现高吞吐实时写入、高性能实时查询的基础支撑。

高吞吐实时写入

AnalyticDB通过三层并行架构实现了极强的吞吐能力,从接入层、到存储节点层再到持久分布式存储层,都可以并行扩展,再结合行列混合存储引擎,增量和全量的异步转换实现了高吞吐高并发实时写入。

在实时可见性方面,AnalyticDB通过Raft一致性协议+同步写入Apply的方式,实现了写入立即可查,保证写入一致性。存储引擎上通过基于Mark-for-delete技术实现了高吞吐的实时更新和删除,同时基于MVCC的技术保证数据原子性和完整性。

高吞吐实时写入

行列混合存储

玄武存储引擎支持行列混存和行存的存储格式,其中行列混存是一种以列存为基础兼顾行存的模式,类似于Hadoop中的ORC/Parquet格式。不同的是玄武的行列混存不仅兼顾分析类的列裁剪和大吞吐扫描性能,而且结合其行对齐的能力,可以实现很好的随机查找性能,这对于任意多维索引过滤的场景也拥有出色的性能优势。

行列混存的存储格式如下:

行列混存

自适应索引

OLAP场景下需要支持任意维度查询,传统的OLTP单列或组合索引难以满足该需求。玄武采用了自适应列级自动索引技术,针对字符串、数字、文本、JSON、向量等列类型都有自动配置的索引数据结构,并且可以做到列级索引任意维度组合检索、多路渐进流式归并,大幅提升了数据过滤性能。

目前索引类型主要有:倒排索引、BKD-Tree索引和Bitmap索引。同时索引的性能主要受数据分布特征影响,包括:cardinality(散列程度),范围查询的记录数/表记录数。在某些情况下,例如 age > 0 and age <100 这种查询走索引的开销反而比扫描高。因此玄武基于CBO智能选择索引或扫描。

多种索引类型多路归并查找的过程如下所示:

玄武-自适应索引

结构化与非结构化融合

玄武存储层索引管理器实现结构化索引与非结构化索引的统一管理,如数值类的BKD索引、字符串类的倒排索引、非结构化的JSON索引及向量索引,还有文本数据的全文索引。对计算层提供统一的表达式,使得计算层的SQL逻辑兼容异构数据类型,同时都得到索引加速。因此AnalyticDB实现了全文数据与结构化表之间的关联分析,SQL表达的复杂逻辑都能够统一支持。如下图所示:

玄武-结构与非结构融合

SQL语义说明:对子查询里的全文检索的结果集进行关联分析,分析后的结果按照打分值降序排列,输出前10,000行。