暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

clickhouse

原创 ttt 2023-05-26
305

技术选型和演进
极光开发者服务数据分析的技术选型和演进主要分为3个阶段,第一阶段业务早期数据量较少,直接在Mysql数据库中存储就可以满足分析查询需求;第二阶段随着业务发展,数据规模越来越大,要借助Hbase、Kylin的一些nosql组件,对数据建模,实现多维度预计算;第三阶段数据持续增加和维度爆炸,预计算成本和可维护性越来越差,这时就需要一种支持海量数据存储、查询灵活、高效且运维成本较低的OLAP数据库。

经过对主流OLAP组件对比调研发现,ClickHouse有三个特征满足极光开发者服务数据分析使用要求:

01、支持列式存储和数据压缩

为了实现支持单表百亿数据集中查询分析时,能够灵活选择各种维度组合并且秒级返回执行结果,ClickHouse按列存储的特性便可以极大提升数据查询的效率,因为按列存储与按行存储相比,前者可以有效减少查询时所需扫描的数据量,如果数据按行存储,数据库首先会逐行扫描,并获取每行数据的所有字段,再从每一行数据中返回查询所需要的字段,导致会扫描所有的字段。如果数据按列组织,数据库可以直接获取想查询的列的数据,从而避免了多余的数据行扫描。

ClickHouse采用的压缩算法可以将列的数据进行压缩处理,数据中的重复项越多,则压缩率越高;压缩率越高,则数据体量越小;而数据体量越小,则数据在网络中的传输越快,对网络带宽和磁盘I/O的压力也就会进一步地变小,并且支持LZ4、ZSTD压缩算法,其中ZSTD可以提供极高压缩比,节省大量存储空间。

02、MPP架构

MPP ( Massively Parallel Processing),即大规模并行处理,在数据库集群中,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上,每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服务。ClickHouse是一款MPP(Massively Parallel Processing)架构的列式存储数据库,支持大规模并行处理,以多主对等的扁平架构,保证了海量数据在各个节点的分布式存储。并且充分发挥单节点性能,提供了极高的能效比。

03、高性能表引擎+向量执行+高效索引

为了高效的使用CPU,数据不仅仅按列存储,同时还可利用SIMD 指令进一步加速执行效率,这部分是ClickHouse 优于大量同类OLAP 产品的重要因素;

主键索引采用排序+稀疏索引结构,只要过滤条件在索引列中包含即可触发索引快速查询,即使作为过滤条件的数据不在索引中,由于各种并行处理机制ClickHouse全表扫描的速度也很快,列式存储用于减少不必要的字段读取,而索引则用于减少不必要的记录读取。ClickHouse同时支持丰富的二级索引,支持跳表结构、Bloom Filter等过滤功能,从而在查询时尽可能的减少不必要的记录读取,提高查询性能。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论