ClickHouse 是 Yandex(俄罗斯最大的搜索引擎)开源的一个用于实时数据分析的基于列存储的数据库,其处理数据的速度比传统方法快 100-1000 倍。ClickHouse 的性能超过了目前市场上可比的面向列的 DBMS,每秒钟每台服务器每秒处理数亿至十亿多行和数十千兆字节的数据。html
什么时候使用 ClickHouse:
用于分析结构良好且不可变的事件或日志流,建议将每一个此类流放入具备预链接维度的单个宽表中。
什么时候不使用 ClickHouse:
不适合事务性工做负载(OLTP)、高价值的键值请求、Blob 或文档存储。git
首先咱们了解一下 OLAP 场景的特色:github
针对分析类查询,一般只须要读取表的一小部分列。在列式数据库中你能够只读取你须要的数据。例如,若是只须要读取 100 列中的 5 列,这将帮助你最少减小 20 倍的 I/O 消耗。算法
因为数据老是打包成批量读取的,因此压缩是很是容易的。同时数据按列分别存储这也更容易压缩。这进一步下降了 I/O 的体积。因为 I/O 的下降,这将帮助更多的数据被系统缓存。数据库
例如,查询《统计每一个广告平台的记录数量》须要读取《广告平台 ID》这一列,它在未压缩的状况下须要 1 个字节进行存储。若是大部分流量不是来自广告平台,那么这一列至少能够以十倍的压缩率被压缩。当采用快速压缩算法,它的解压速度最少在十亿字节(未压缩数据)每秒。换句话说,这个查询能够在单个服务器上以每秒大约几十亿行的速度进行处理。这其实是当前实现的速度。缓存
ClickHouse 从 OLAP 场景需求出发,定制开发了一套全新的高效列式存储引擎服务器
column-oriented 图片来源见水印相比于行式存储,列式存储在分析场景下有着许多优良的特性。网络
sudo yum install yum-utils sudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG sudo yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64 sudo yum install clickhouse-server clickhouse-client
本案例安装的是单机版本。yum 安装会自动建立 clickhouse 用户。
yum 安装完成以后,配置文件,数据文件日志目录设置以下:运维
配置文件目录:/etc/clickhouse-server/ 数据文件目录:/var/lib/clickhouse/ 日志文件目录:/var/log/clickhouse-server/
clickhouse 相关的各个目录能够在配置文件 /etc/clickhouse-serverconfig.xml
中进行修改。异步
启动
sudo /etc/init.d/clickhouse-server start
链接
clickhouse-client -m #默认以 default 用户登陆
在 /etc/clickhouse-server/users.xml
中能够设置其余用户的访问权限等。
clickhouse-client [--user=xxx --password=xxx --host=xxx]
localhost :) SELECT :-] C_CITY, :-] S_CITY, :-] toYear(LO_ORDERDATE) AS year, :-] sum(LO_REVENUE) AS revenue :-] FROM lineorder_flat :-] WHERE (C_CITY = 'UNITED KI1' OR C_CITY = 'UNITED KI5') AND (S_CITY = 'UNITED KI1' OR S_CITY = 'UNITED KI5') AND year >= 1992 AND year <= 1997 :-] GROUP BY :-] C_CITY, :-] S_CITY, :-] year :-] ORDER BY :-] year ASC, :-] revenue DESC; SELECT C_CITY, S_CITY, toYear(LO_ORDERDATE) AS year, sum(LO_REVENUE) AS revenue FROM lineorder_flat WHERE ((C_CITY = 'UNITED KI1') OR (C_CITY = 'UNITED KI5')) AND ((S_CITY = 'UNITED KI1') OR (S_CITY = 'UNITED KI5')) AND (year >= 1992) AND (year <= 1997) GROUP BY C_CITY, S_CITY, year ORDER BY year ASC, revenue DESC ┌─C_CITY─────┬─S_CITY─────┬─year─┬────revenue─┐ │ UNITED KI1 │ UNITED KI1 │ 1992 │ 5776096629 │ │ UNITED KI5 │ UNITED KI1 │ 1992 │ 5555883901 │ │ UNITED KI5 │ UNITED KI5 │ 1992 │ 5348705805 │ │ UNITED KI1 │ UNITED KI5 │ 1992 │ 5326870427 │ │ UNITED KI1 │ UNITED KI1 │ 1993 │ 5892974670 │ │ UNITED KI1 │ UNITED KI5 │ 1993 │ 5490859451 │ │ UNITED KI5 │ UNITED KI1 │ 1993 │ 5468354303 │ │ UNITED KI5 │ UNITED KI5 │ 1993 │ 5089909647 │ │ UNITED KI5 │ UNITED KI1 │ 1994 │ 5437315108 │ │ UNITED KI1 │ UNITED KI1 │ 1994 │ 5348775917 │ │ UNITED KI5 │ UNITED KI5 │ 1994 │ 5310936695 │ │ UNITED KI1 │ UNITED KI5 │ 1994 │ 5237461110 │ │ UNITED KI1 │ UNITED KI1 │ 1995 │ 5737551920 │ │ UNITED KI5 │ UNITED KI5 │ 1995 │ 5657584590 │ │ UNITED KI5 │ UNITED KI1 │ 1995 │ 5260093556 │ │ UNITED KI1 │ UNITED KI5 │ 1995 │ 5213763257 │ │ UNITED KI5 │ UNITED KI1 │ 1996 │ 5522325005 │ │ UNITED KI1 │ UNITED KI1 │ 1996 │ 5451244409 │ │ UNITED KI5 │ UNITED KI5 │ 1996 │ 5231759057 │ │ UNITED KI1 │ UNITED KI5 │ 1996 │ 5203962897 │ │ UNITED KI1 │ UNITED KI1 │ 1997 │ 5340760807 │ │ UNITED KI5 │ UNITED KI1 │ 1997 │ 5295685214 │ │ UNITED KI1 │ UNITED KI5 │ 1997 │ 5188428156 │ │ UNITED KI5 │ UNITED KI5 │ 1997 │ 5024634475 │ └────────────┴────────────┴──────┴────────────┘ 24 rows in set. Elapsed: 1.723 sec. Processed 546.67 million rows, 4.46 GB (317.28 million rows/s., 2.59 GB/s.)
扫描 1.7 秒处理 546w 的数据量,每秒处理 317w 行数据,速度是至关快了。
没有银弹,各类数据存储类型仍是要结合具体的场景使用。
图片来自 新浪 高鹏的 ppt 目前大量使用 ClickHouse 的互联网公司:
1. 今日头条内部用 ClickHouse 来作用户行为分析,内部一共几千个 ClickHouse 节点,单集群最大 1200 节点,总数据量几十 PB,日增原始数据 300TB 左右。
2. 腾讯内部用 ClickHouse 作游戏数据分析,而且为之创建了一整套监控运维体系。
3. 携程内部从 18 年 7 月份开始接入试用,目前 80% 的业务都跑在 ClickHouse 上。天天数据增量十多亿,近百万次查询请求。
4. 快手内部也在使用 ClickHouse,存储总量大约 10PB, 天天新增 200TB, 90% 查询小于 3S。
5. 在国外,Yandex 内部有数百节点用于作用户点击行为分析,CloudFlare、Spotify 等头部公司也在使用。固然还有一些没有关注到的公司也在大量使用,有兴趣的朋友能够积极尝试。
本文是浅出的介绍了 Clickhouse 的是什么,有哪些新特性。须要深刻学习仍是要看官方文档,纸上来得终觉浅,绝知此事要躬行。
关于 ClickHouse 的技术内容,大家还有什么想知道的吗?赶忙留言告诉小编吧!