基于ClickHouse造实时计算引擎,庞大的数据秒级响应!

列式存储能够减少数据扫描范围,数据按列组织,数据库可以直接获取查询字段的数据。而按行存逐行扫描,获取每行数据的所有字段,再从每一行数据中返回需要的字段,虽然只需要部分字段还是扫描了所有的字段,按列存储避免了多余的数据扫描。

另外列式存储压缩率高,数据在网络中传输更快,对网络带宽和磁盘IO的压力更小。

除了完整的DBMS、列式存储外,还支持在线实时查询、拥有完善的SQL支持和函数、拥有多样化的表引擎满足各类业务场景。

正因为ClickHouse的这些特性,在它适合的场景下能够实现动态、实时的秒级别查询。

适合的场景

读多于写。数据一次写入,多次查询,从各个角度对数据进行挖掘,发现数据的价值。

大宽表,读大量行聚合少量列。选择少量的维度列和指标列,对大宽表的数据做聚合计算,得出少量的结果集。

数据批量写入,不需要经常更新、删除。数据写入完成后,相关业务不要求经常对数据更新或删除,主要用于查询分析数据的价值。

ClickHouse适合用于商业智能领域,广泛应用于广告流量、App流量、物联网等众多领域。借助ClickHouse可以实时计算线上业务数据,如资源位的点击情况,以及并对各资源位进行bi预警。

MergeTree

MergeTree系列引擎是最基础的表引擎,提供了主键索引、数据分区等基本能力。了解这部分内容,是后续开发和优化的基础和方向。

分区

指定表数据分区方式,支持多个列,但单个列分区查询效果最好。有数据写入时属于同一分区的数据最终会被合并到同一个分区目录,不同分区的数据永远不会被合并在一起。结合业务场景设置合理的分区可以减少查询时数据文件的扫描范围。

排序

在一个数据片段内,数据以何种方式排序。当使用多个字段排序时ORDER BY(T1,T2),先按照T1排序,相同值再按照T2排序。

MergeTree存储结构

一张数据表的完整物理结构依次是数据表、分区以及各分区下具体的数据文件。分区下具体的数据文件包括一级索引、每列压缩文件、每列字段标记文件,了解他们的存储和查询原理,为后面建表、聚合计算的优化提供方向。

【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章