starrocks

starrocks

分布式OLAP数据库系统,高效支持大数据量级的多维分析、实时分析、高并发分析等多种数据分析场景

定位
面向在线报表和分析的数据仓库系统。它采用了全面向量化技术,比同类产品平均快3-5倍。在查询性能上远超当代最快的开源数据库clickhouse

整体架构

  • FE 前端节点。多个FE组成第一层,提供FE的横向扩展和高可用。主要负责接收和返回客户端请求、元数据以及集群管理、查询计划生成
  • BE 后端节点。多个BE组成第二层,负责数据存储与管理、查询计划执行

采用列式存储、对数据以高压缩比进行压缩存储、向量化执行等先进技术,因此获得了极高的查询效率

列式存储

表中的每一列数据都会在物理上相邻存储,而不是将整个行的数据存储在一起

  • 压缩率高:由于列中的数据通常是同一类型的,因此可以应用高效的压缩算法,从而减少存储空间的需求
    • RLE:压缩列中连续相同值的情况,例如日期列
    • Bit Packing:将列中的多个值打包成一个字节,压缩稀疏列,0/1较多的列
    • Delta Encoding:将列中的值替换为前一个值与当前值之间的差值。排序或有序列的列
  • 快速扫描:非常适合执行聚合操作,因为只需扫描和加载需要的列,而不必加载整个行
  • 快速过滤:过滤操作,列式存储可以跳过不相关的列,从而减少I/O操作

向量化技术

基于列式存储

充分利用 CPU 的缓存。例如,有 10 列的一行数据和只需操作一列的查询计划。在基于行的查询处理模式中,9 列数据会不必要的占用缓存,限制了可以进入缓存的数据数量。在基于列的处理中,只会读入感兴趣的列数据,这样可以一起处理更多的值

核心思想:由列找行的实际转化推迟到查询计划的很靠后的位置进行处理

且现代CPU提供了SIMD(Single Instruction, Multiple Data)指令集,允许同时对多个数据元素执行相同的操作。向量化代码利用这些指令来执行相同操作的多个数据元素,从而减少了指令的数量和循环次数。

你可能感兴趣的:(数据仓库)