简单剖析OLAP异域猛兽——ClickHouse设计思路

ClickHouse是一个专为OLAP设计的高性能数据库系统,由Yandex开发,适合大数据实时分析。其特点包括列式存储、数据排序、分布式查询、预聚合等,提供快速查询能力。与HBase相比,ClickHouse更适合场景2类型的统计分析。尽管ClickHouse在某些方面如事务支持和细粒度查询存在不足,但其速度和灵活性使其在大数据分析领域具有优势。Kylin作为OLAP引擎,预聚合出色但不支持自定义分析。ClickHouse的优点包括快速扫描、分布式处理和SQL支持,适合结构化日志和时间序列数据的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ClickHouse 是一个用于联机分析 (OLAP) 的列式数据库管理系统 (DBMS)。

异域是因为它来自俄罗斯,Yandex 公司,这家公司是俄罗斯本土搜索引擎企业,原本是为了分析自家的 Web 流量而开发的一款产品 ,后来经过演变,逐渐形成为现在的 ClickHouse,全称是:Click Stream,Data WareHouse 

ClickHouse 官网

它具有 ROLAP、在线实时查询、完整的 DBMS 功能支持、列式存储、不需要任何数据预处理、支持批量更新、拥有非常完善的 SQL 支持和函数、支持高可用、不依赖 Hadoop 复杂生态、开箱即用等许多特点。


今天我们来剖析ClickHouse 设计思路

先看看这下面的2个SQL

-- 场景1 根据键key找到值
select name from table where id = 1

-- 场景2 统计平均金额
select city,avg(amount) from table group by city

对于上面这两种场景,

数据量不大,而且又是结构化数据,可以用MySQL存储和分析

数据量大的话,对于场景1来说可以使用HBase来解决。

但是大数据量情况下场景2需求特别多,那么需要设计一个专门用来做分析的存储计算引擎解决分

析的低效率问题。


海量数据中,如果能够快速的把待搜寻的数据范围降低到原来的1/n,然后在结合索引或者热点数

据放在内存等思想,就能实现高效率的查询了

那么一个专门用来做 OLAP 分析的存储引擎该如何设计呢?如何在海量数据中,针对大量数据进

行查询分析呢?一些常见的方案和手段如下:

1、列式存储+字段类型统一

2、列裁剪

3、数据排序

4、数据分区分片+ 分布式查询

5、预聚合

6、利用CPU特性:向量化引擎,

7、构建多种不同索引:主键索引+二级索引+位图索引+布隆索引

8、支持近似计算 pv

9、定制引擎:多样化的存储引擎满足不同场景的特定需要

10、多样化算法选择

具体设计思路:单挑记录的增删改等操作,通过数据的横向划分,做到数据操作的快速定位

在海量的数据查询分析中,一般就是针对某些列做分析既然并不是全部列,

那么把数据做纵向切分把表的数据按照列的单独存储,那么在做分析的时候,同样可以快速把待查

询分析的数据总理降低到原来的1/n


说到OLAP,Kylin也是适合于OLAP场景的一个分布式分析引擎, Kylin 把预聚合发挥到极致,但是它的缺点:

  • 只支持固定的分析场景,无法满足自定义分析场景
  • 维度组合爆炸会导致数据膨胀
  • 增量数据 ,预聚合不能进行数据更,所以会产生大量的重算

ClickHouse优点

  • 1.非常快的扫描,可用于实时查询
  • 2.在多个服务器上分布式处理
  • 3.并行处理单个查询(利用多核)
  • 4.列存储非常适用于“宽”/“非规格化”表(多列)
  • 5.SQL支持(有限的支持)
  • 6.良好的压缩特性
  • 7.不同的存储引擎的支持(磁盘存储格式)
  • 8.一系列函数的支持,包括对近似计算的支持
  • 9.非常适合结构性日志/事件数据以及时间序列数据(引擎的合并树需要日期字段)
  • 10. 索引支持(仅主键支持,不是所有的存储引擎都支持)
  • 11.漂亮的命令行界面,用户友好的进度条和格式

当然ClickHouse 也并不完美,比如

  1. 没有完整的事务支持
  2. 稀疏索引,不擅长细粒度查询
  3. 不擅长高频率,低延迟修改或者删除数据
  4. 不擅长join操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据_苡~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值