ClickHouse简记

初识ClickHouse

第一次接触ClickHouse是在朋友圈,很凑巧的是当时正在寻找一款不依赖Hadoop生态圈的分析引擎数据库,同类数据库也看了不少 ,比如刚刚研究的InfoBright,性能上的确不错,但是缺点也很多(详情请看上一篇),所以遇到ClickHouse后发现眼前一亮!

什么是ClickHouse?

ClickHouse是一个用于联机分析(OLAP)的列式存储数据库(DBMS)

和我们传统的行存储数据库比较

行存储

列存储

OLAP使用场景

1.读请求占大多数。
2.数据总是以大批量(> 1000 rows)进行写入。
3.已添加的数据不修改。
4.每次查询都从数据库中读取大量的行,但是同时又仅需要少量的列。
5.宽表,即每个表包含着大量的列。
6.较少的查询。(通常每台服务器每秒数百个查询或更少)
7.对于简单查询,允许延迟大约50毫秒。
8.列中的数据相对较小: 数字和短字符串。(例如,每个URL 60个字节)
9.处理单个查询时需要高吞吐量。(每个服务器每秒高达数十亿行)
10.事务不是必须的。
11.对数据一致性要求低。
12.每一个查询除了一个大表外其他都很小。
13.查询结果明显小于源数据,换句话说,数据被过滤或聚合后能够被盛放在单台服务器的内存中。

那么多数据库,为啥用它?

1.快 。(这一个字就够了吧)
2.数据压缩。
3.多核并行处理,在大型查询中ClickHouse可以并行化处理,合理利用资源。
4.分布式处理,大部分列式存储数据库,几乎没有一个支持分布式的查询处理。
5.完美支持SQL(没有开窗函数有点遗憾)
6.支持近似计算,牺牲了精确度,换的是速度。
7.异步的多主复制技术,在大多数情况下ClickHouse能在故障后自动恢复。

几乎可以忽略的缺点

1.没有完整的事物支持。
2.没有Update/Delete.
3.多服务器上DDL不同步。

它究竟有多快?

1.简单的查询速度可达30GB/s 。
2.短查询非常低的延迟时间,延迟少于50毫秒。
3.批量写入50~200MB/s。
这里有性能报告

非常好用的小功能

1.从Mysql中拉取数据,有点像Mysql的Federated引擎

# du出的表大小
13.7G    playlog.ibd
# ClickHouse操作语句
CREATE TABLE playlog
ENGINE = MergeTree
ORDER BY id AS
SELECT *
FROM mysql('host:port', 'db', 'playlog', 'user', 'password')
# 耗时和平均速度
0 rows in set. Elapsed: 230.232 sec. Processed 45.32 million rows, 17.6 GB (138.23 thousand rows/s., 52.31 MB/s.)

2.从Kafka中读取数据

# ClickHouse操作语句
  CREATE TABLE queue (
    timestamp UInt64,
    level String,
    message String
  ) ENGINE = Kafka('localhost:9092', 'topic', 'group1', 'JSONEachRow');
今天的总结就写这些吧!
以上部分图片和数据出自ClickHouse官网

你可能感兴趣的:(ClickHouse简记)