初识ClickHouse

ClickHouse最近几年很火,几家互联网大厂都开始用上了ClickHouse,培训机构也是宣传各种概念,那么ClickHouse到底是什么,跟传统的数据库又有什么区别,下面我们介绍下ClickHouse。

什么是ClickHouse

简单一句话,ClickHouse是一种列式存储数据库管理系统,应用于OLAP场景(online analytical processing of queries)。
Hive ORC, Hive Parquet, Apache HBase, Vertica, Sybase HANA, Google Dremel等都用到了列式存储。
要提一句,ClickHouse产地俄罗斯,官方文档和示例也是能看到很多俄语,算近几年眼前一亮的社区产品了。

OLAP场景的特点

  • 绝大多数是读请求
  • 数据以相当大的批次(> 1000行)更新,而不是单行更新;或者根本不更新
  • 已添加到数据库的数据一般不修改
  • 对于读取,从数据库中提取相当多的行,但只提取一小部分的列
  • 宽表,即每个表包含着大量的列
  • 查询相对较少(通常每台服务器每秒查询数百次或更少)
  • 对于简单查询,允许延迟大约50毫秒
  • 列中的数据相对较小:数字和短字符串(例如,每个URL 60个字节)
  • 处理单个查询时需要高吞吐量(每台服务器每秒可达数十亿行)
  • 事务不是必须的
  • 对数据一致性要求低
  • 每个查询有一个大表。除此以外,其他的表都很小
  • 查询结果明显小于源数据。换句话说,数据经过过滤或聚合,因此结果能存储在单台机器的内存中

为什么列式数据库在OLAP场景中更胜一筹

ClickHouse官网给了一个形象的图来解释为什么列式存储更适合于OLAP场景。
事实上,也很容易理解,因为OLAP场景一般是对几列数据进行聚合分析,那么用列式存储可以直接扫描对应的列,抽取出来加工分析,比按行扫描出来一行行数据再抽取对应的列进行加工,要快得多。
在大部分OLAP场景中,列式存储号称速度要快100倍以上。

  • 行式存储数据库

  • 列式存储数据库

ClickHouse的特点

列式存储

作为真·列式数据库管理系统(官网就是这么吹的),ClickHouse不存储额外的数据。怎么理解这句话呢,就是普通的数据库,不仅仅会存一个值,还会把这个值的长度也存下来,那么这个长度值就是额外的存储开销。比如10亿量级的UInt8类型的值会消耗1GB的未压缩存储,在处理这个未压缩数据时是很耗CPU资源的。
换句话说,ClickHouse是列式存储,因为不存储除值之外的数据,那么在后期的数据加工时消耗的CPU资源更少。
官网宣称其他的列式数据库管理系统,比如HBase,BigTable,Cassandra,HyperTable等的吞吐量在每秒10万级,但ClickHouse的吞吐量能达到亿级,相差一千倍。

数据压缩

ClickHouse支持特定的编解码方式,比如Delta(delta_bytes) , DoubleDelta, Gorilla, T64。

磁盘存储

ClickHouse可以使用普通的机械盘,当然SSD或RAM效果更好。

并行处理

支持多核并行处理。

分布式处理

支持分布式处理,这个算是ClickHouse跟普通列式数据库相比的优点了,ClickHouse也是通过分片+副本的形式实现分布式容错的,这个跟elasticsearch很像。这些底层的数据分布和加工处理细节对用户是全透明的。

SQL支持

ClickHouse使用一种声明式的SQL语言,基本语法跟ANSI SQL语法相同。比如支持GROUP BY, ORDER BY, FROM, JOIN, IN等。
目前还不支持相关子查询和窗口函数,未来可能会支持。

向量计算引擎

数据不仅仅是列式存储的,而且加工处理也是向量化的,可以节省CPU消耗。

实时数据更新

ClickHouse的表支持主键,底层通过合并树对数据进行增量排序,在向表中持续写入数据的过程中不会导致锁表。

主索引

在物理上通过主键进行排序,在查询特定值时耗时能控制在十几毫秒。

副索引

副索引又叫数据跳过索引,在ClickHouse中它们可以直接告诉数据库某些数据块的所有行数据都不满足查询条件,可以不用来读取。

在线查询适配

官方宣称亚秒级响应。

近似计算

ClickHouse提供几种近似计算方法:

  • 近似计算的聚合函数,如去重,中位数,分位数
  • 通过对采样数据进行查询得到近似值
  • 对一部分随机的键进行聚合,而不是所有的键

自适应JOIN算法

ClickHouse可以自动判断如何对多张表进行JOIN

数据复制

ClickHouse使用异步多主节点复制技术。灾难恢复可以自动化或半自动化完成。

基于角色的权限控制(RBAC)

ClickHouse有Role-Based Access Control的权限控制

ClickHouse的不足

  • 不成熟的事务
  • 对已插入的数据进行修改或删除效率不高
  • 稀疏索引的特点导致查询单条记录值的场景效率不高
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值