原文地址:https://zhuanlan.zhihu.com/p/22165241
<https://zhuanlan.zhihu.com/p/22165241>

今天介绍一个来自俄罗斯的凶猛彪悍的分析数据库:ClickHouse,它是今年6月开源,俄语社区为主,好酒不怕巷子深。


本文内容较长,分为三个部分:走马观花,死而后生,遥指杏花村;第一章,走马观花,初步了解一下基本特性;第二章,死而后生,介绍ClickHouse的技术架构演化的今生前世;第三章,遥指杏花村,介绍一些参考资料,包括一些俄文资料。

第一章,走马观花

俄罗斯的‘百度’叫做Yandex,覆盖了俄语搜索超过68%的市场,有俄语的地方就有Yandex;有中文的地方,就有百度么?好像不一定 :) 。


Yandex在2016年6月15日开源了一个数据分析的数据库,名字叫做ClickHouse,这对保守俄罗斯人来说是个特大事。更让人惊讶的是,这个列式存储数据库的跑分要超过很多流行的商业MPP数据库软件,例如Vertica。如果你没有听过Vertica,那你一定听过
Michael Stonebraker,2014年图灵奖的获得者,PostgreSQL和Ingres发明者(Sybase和SQL Server都是继承
Ingres而来的), Paradigm4和SciDB的创办者。Michael
Stonebraker于2005年创办Vertica公司,后来该公司被HP收购,HP
Vertica成为MPP列式存储商业数据库的高性能代表,Facebook就购买了Vertica数据用于用户行为分析。

简单的说,ClickHouse作为分析型数据库,有三大特点:一是跑分快, 二是功能多 ,三是文艺范

1. 跑分快:
ClickHouse跑分是Vertica的5倍快:

*
ClickHouse性能超过了市面上大部分的列式存储数据库,相比传统的数据ClickHouse要快100-1000X,ClickHouse还是有非常大的优势:
100Million 数据集:
ClickHouse比Vertica约快5倍,比Hive快279倍,比My SQL快801倍
1Billion 数据集:
ClickHouse比Vertica约快5倍,MySQL和Hive已经无法完成任务了
2. 功能多
ClickHouse支持数据统计分析各种场景

* 支持类SQL查询,
* 支持繁多库函数(例如IP转化,URL分析等,预估计算/HyperLoglog等)
* 支持数组(Array)和嵌套数据结构(Nested Data Structure)
* 支持数据库异地复制部署
3.文艺范
目前ClickHouse的限制很多,生来就是为小资服务的

* 目前只支持Ubuntu系统
* 不提供设计和架构文档,设计很神秘的样子,只有开源的C++源码
* 不理睬Hadoop生态,走自己的路
谁在用ClickHouse?
由于项目今年6月才开源,因此外部商业应用并不多件,但是开发社区的讨论还是保持热度(主要用俄语)

Yandex有十几个项目在用使用ClickHouse,它们包括:Yandex数据分析,电子邮件,广告数据分析,用户行为分析等等

2012年,欧洲核子研究中心使用ClickHouse保存粒子对撞机产生的大量实验数据,每年的数据存储量都是PB级别,并支持统计分析查询

ClickHouse最大应用:

最大的应用来自于Yandex的统计分析服务Yandex.Metrica,类似于谷歌Analytics(GA),或友盟统计,小米统计,帮助网站或移动应用进行数据分析和精细化运营工具,据称Yandex.Metrica为世界上第二大的网站分析平台。ClickHouse在这个应用中,部署了近四百台机器,每天支持200亿的事件和历史总记录超过13万亿条记录,这些记录都存有原始数据(非聚合数据),随时可以使用SQL查询和分析,生成用户报告。

ClickHouse就是快:比Veritca快约5倍
下面是100M数据集的跑分结果:ClickHouse 比Vertia快约5倍,比Hive快279倍,比My SQL
快801倍;虽然对不同的SQL查询,结果不完全一样,但是基本趋势是一致的。ClickHouse跑分有多块? 举个例子:ClickHouse
1秒,Vertica 5.42秒,Hive 279秒;



ClickHouse是什么,适合什么场景?

到底什么是ClickHouse数据库,场景应用是什么,参考下面说明:


ClickHouse的不完美:

* 不支持Transaction:想快就别想Transaction
* 聚合结果必须小于一台机器的内存大小:不是大问题
* 缺少完整的Update/Delete操作
* 支持有限操作系统
* 开源社区刚刚启动,主要是俄语为主
ClickHouse和一些技术的比较

1.商业OLAP数据库
例如:HP Vertica, Actian the Vector,
区别:ClickHouse是开源而且免费的

2.云解决方案
例如:亚马逊RedShift和谷歌的BigQuery
区别:ClickHouse可以使用自己机器部署,无需为云付费

3.Hadoop生态软件
例如:Cloudera Impala, Spark SQL, Facebook Presto , Apache Drill
区别:

* ClickHouse支持实时的高并发系统
* ClckHouse不依赖于Hadoop生态软件和基础
* ClickHouse支持分布式机房的部署
4.开源OLAP数据库
例如:InfiniDB, MonetDB, LucidDB
区别:这些项目的应用的规模较小,并没有应用在大型的互联网服务当中,相比之下,ClickHouse的成熟度和稳定性远远超过这些软件。

5.开源分析,非关系型数据库
例如:Druid , Apache Kylin
区别:ClickHouse可以支持从原始数据的直接查询,ClickHouse支持类SQL语言,提供了传统关系型数据的便利。

……..

第三部分:遥指杏花村


这一部分包括了一些ClickHouse的一些基本信息,帮助大家进入ClickHouse的世界。为了深度了解ClickHouse社区,不仅仅需要翻墙,也需要谷歌或者必应的翻译器,俄文翻译的效果不错。

1主页: https://clickhouse.yandex
<https://link.zhihu.com/?target=https://clickhouse.yandex>

2.代码: GitHub - yandex/ClickHouse: ClickHouse is a free analytic DBMS for big
data. <https://link.zhihu.com/?target=https://github.com/yandex/ClickHouse>

3参考文章:
Yandex.Metrike的架构演化:
Эволюция структур данных в Яндекс.Метрике / Блог компании Яндекс / Хабрахабр
<https://link.zhihu.com/?target=https://habrahabr.ru/company/yandex/blog/273305/>
(俄文)很棒的文章
MPP数据库基础架构:
http://vldb.org/pvldb/vol5/p1790_andrewlamb_vldb2012.pdf
<https://link.zhihu.com/?target=http://vldb.org/pvldb/vol5/p1790_andrewlamb_vldb2012.pdf>
http://www.cs.yale.edu/homes/dna/talks/Column_Store_Tutorial_VLDB09.pdf
<https://link.zhihu.com/?target=http://www.cs.yale.edu/homes/dna/talks/Column_Store_Tutorial_VLDB09.pdf>

4关于Yandex的

Yandex的(纳斯达克股票代码:YNDX)是互联网公司在俄罗斯主导,经营该国最流行的搜索引擎和访问量最大的网站。Yandex的还经营在乌克兰,哈萨克斯坦,白俄罗斯和土耳其。Yandex的的使命是回答任何互联网用户的任何问题(Answer
any question Internet users may have)。

最近在学习一些ClickHouse的源代码,还没有理清楚头绪,下次搞清楚逻辑后再和大家介绍一下,这里先纸上谈兵,点到为止了。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信