clickhouse官方文档_基于Clickhouse实现实时聚合计算秒级响应技术方案

本文介绍了京东如何利用Clickhouse构建实时计算分析引擎,实现秒级响应的资源位数据聚合计算。Clickhouse凭借其列式存储、实时聚合查询、支持SQL等特性,适合实时业务数据查询。文章详细讨论了数据写入、建表优化、监控体系以及针对大容量数据的查询优化策略,确保在数据量增长时仍能保持高性能。
摘要由CSDN通过智能技术生成

为了能够实时地了解线上业务数据,京东算法智能应用部打造了一款基于Clickhouse的实时计算分析引擎,给业务团队提供实时数据支持,并通过预警功能发现潜在的问题。

本文结合了引擎开发过程中对资源位数据进行聚合计算业务场景,对数据实时聚合计算实现秒级查询的技术方案进行概述。Clickhouse是整个引擎的基础,故下文首先介绍了Clickhouse的相关特性和适合的业务场景,以及最基础的表引擎MergeTree。接下来详细的讲述了技术方案,包括Kafka数据消费到数据写入、结合Clickhouse特性建表、完整的数据监控,以及从几十亿数据就偶现查询超时到几百亿数据也能秒级响应的优化过程。

Clickhouse 4d2644b734646ab61f1be759cf22f949.png

Clickhouse是Yandex公司内部业务驱动产出的列式存储数据库。为了更好地帮助自身及用户分析网络流量,开发了Clickhouse用于在线流量分析,一步一步最终形成了现在的Clickhouse。在存储数据达到20万亿行的情况下,也能做到90%的查询能够在1秒内返回结果。

Clickhouse能够实现实时聚合,一切查询都是动态、实时的,用户发起查询的那一刻起,整个过程需要能做到在一秒内完成并返回结果。Clickhouse的实时聚合能力和我们面对的业务场景非常符合。

Clickhouse支持完整的DBMS。支持动态创建、修改或删除数据库、表和视图,可以动态查询、插入、修改或删除数据。

Clickhouse采用列式存储,数据按列进行组织,属于同一列的数据会被保存在一起,这是后续实现秒级查询的基础。

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

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

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

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

适合的场景 4d2644b734646ab61f1be759cf22f949.png

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

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

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

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

MergeTree 4d2644b734646ab61f1be759cf22f949.png

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

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

  • 排序。在一个数据片段内,数据以何种方式排序。当使用多个字段排序时ORDER BY(T1,T2),

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值