列存储和行列混存
数据在磁盘中按照列的方式进行组织和物理存储。行存储架构和列存储架构的数据库分别适用于不同的应用,具备各自的优劣势,如下图所示。列存储架构对查询、统计和分析类操作具备天然的优势。
例如,在分析系统中对 100 列的业务表进行分析查询,对该业务表列的引用一般不超过 10 个。对 I/O 是主要瓶颈的分析系统而言,相较于传统的行式数据库,列式存储技术可以很容易地带来一个数量级的性能提升。面对海量数据分析的 I/O 瓶颈,分析型数据库把表数据按列的方式存储, 其优势体现在以下几个方面。
降低 I/O:只有访问查询所涉及的列产生 I/O,查询没有涉及的列不需要访问,不产生 I/O;
高压缩比:压缩比可以达到 1:2 ~ 1:20 以上;
支持行列混存,降低 select *场景下的 I/O 量提升性能。
高效透明压缩
高效透明压缩技术能够按照数据类型和数据分布规律自动选择最优压缩算法,尽可能减少数据所占的存储空间,降低 I/O 消耗,提升查询性能。支持库级,表级,列级压缩选项,灵活平衡性能与压缩比的关系,而且压缩与解压缩过程对用户是透明的。
从 I/O 资源消耗节约的角度来看,对 I/O 是主要瓶颈的分析系统而言, 相较于传统的行式数据库,高效透明压缩技术可以带来约一个数量级的性能提升。
缩比可达到 1:2 至 1:20 甚至更优,远远高于行存储;
节省 50%-95%的存储空间,大大降低数据处理能耗;
内置数十种不同等级的压缩算法,根据数据特征自动选择最优压缩算法;
压缩态下对 I/O 要求大大降低,数据加载和查询性能明显提升。
智能索引
智能索引是一种粗粒度索引,包含数据统计信息。数据存储时每 65536 行数据打成一个 Data Cell(简称 DC)包,每个数据包在数据入库时自动建立智能索引,在数据查询时不需要解包就能得到统计值、进行数据过滤,可进一步降低 I/O,对复杂查询的优化效果明显。如下图所示,左侧的“SmartIndex of Col 1”即在第一列数据上,以各数据包(DC)为单位建立的智能索引。
表中的所有列自动建立智能索引,不需用户手工建立和维护;
智能索引本身占空间少(1%左右),不会造成数据膨胀;
智能索引基于数据包建立,建立速度快,不受已存在数据包的影响。与传统数据库索引技术相比,智能索引建立在数据包上(粗粒度索引),并且每个字段均自动建有索引,而传统索引建立在每行数据上(细粒度索引), 因此访问智能索引要比访问传统索引需要更少的 I/O。同时,智能索引所占空间大约是数据的百分之一,而传统数据库索引则要占到数据的 20~ 50%。
并行技术
针对数据加载、数据加工和数据查询实现了自动高效的并行处理技术,充分利用 SMP 多核 CPU 资源并行处理海量数据。支持在数据扫描过滤、JOIN 计算、group by 聚集、order by 排序、查询结果物化等阶段并行计算。
高性能
单节点数据计算引擎通过基于规则及基于代价的成本评估,自动选择最优的执行计划及算法,借助列式存储、高效压缩、智能索引技术,节省了 3 个量级的 CPU 和 I/O 资源消耗,分析查询性能比传统行式数据库高 50 到 1000 倍。
支持在多 NUMA 节点的服务器上部署多个计算节点,为每个计算节点绑定一个 NUMA 节点,避免跨 NUMA 节点运算带来的性能损耗。多实例部署方式可以提升 1 倍以上的性能。