专业的编程技术博客社区

网站首页 > 博客文章 正文

ClickHouse简记(clickhouse parts)

baijin 2024-10-23 08:53:14 博客文章 6 ℃ 0 评论

初识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。

官方性能报告:https://clickhouse.yandex/benchmark.html

非常好用的小功能

  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官网

简书同作者

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表