• 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)指令集,允许同时对多个数据元素执行相同的操作。向量化代码利用这些指令来执行相同操作的多个数据元素,从而减少了指令的数量和循环次数。

  • 相关阅读:
    魔众文库系统 v5.6.0 DWG文件格式支持,部分数据封面显示异常,定时调度清理临时文件
    【F280039C】Serial Peripheral Interface (SPI)
    Word处理控件Aspose.Words功能演示:使用Java合并MS Word文档
    【机器学习】网络爬虫实战详解
    Python对象的内置方法(__del__和__str__)的介绍和使用
    神经网络和深度学习-后向传播back propagation
    C 多维数组
    实战型开发1/3--结果&业务导向
    分割等和子集
    使用jQuery移除元素的readonly属性
  • 原文地址:https://blog.csdn.net/qq_52163230/article/details/133563441