彪悍开源的分析数据库-ClickHouse

原文地址: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

2.代码: GitHub - yandex/ClickHouse: ClickHouse is a free analytic DBMS for big data.

3参考文章:
Yandex.Metrike的架构演化:
Эволюция структур данных в Яндекс.Метрике / Блог компании Яндекс / Хабрахабр(俄文)很棒的文章
MPP数据库基础架构:
http://vldb.org/pvldb/vol5/p1790_andrewlamb_vldb2012.pdf
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的源代码,还没有理清楚头绪,下次搞清楚逻辑后再和大家介绍一下,这里先纸上谈兵,点到为止了。

猜你喜欢

转载自blog.csdn.net/huojiao2006/article/details/81334336