ClickHouse数据分析列式数据库概述
⼀. 概述
随着物联⽹IOT时代的来临,IOT设备感知和报警存储的数据越来越⼤,有⽤的价值数据需要数据分析师去分析。⼤数据分析成了⾮常重要的环节。当然近两年开启的开源⼤潮,为⼤数据分析⼯程师提供了⼗分富余的⼯具。但这同时也增加了开发者选择合适的⼯具的难度,尤其对于新⼊⾏的开发者来说。学习成本,框架的多样化和复杂度成了很⼤的难题。例如kafka,hdfs,spark,hive 等等组合才能产⽣最后的分析结果。把各种开源框架、⼯具、库、平台⼈⼯整合到⼀起所需⼯作之复杂,是⼤数据领域开发和数据分析师常有的抱怨之⼀,也是他们⽀持⼤数据分析平台简单化和统⼀化的⾸要原因。
⼆.Clickhouse 发展历史
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 ⽀持特性剖析
在看Clickhouse 运⾏场景之前要了解技术的功能特性以及弊端是⼀个技术架构以及开发⼈员所要了解的。只有”知⼰知彼”才可以”百战不殆”,接下来我们看⼀下Clickhouse的具体特点;
Ø 1.真正的⾯向列的DBMS
Ø 2.数据⾼效压缩
Ø 3.磁盘存储的数据
Ø 4.多核并⾏处理
Ø 5.在多个服务器上分布式处理
Ø 6.SQL语法⽀持
Ø 7.向量化引擎
Ø 8.实时数据更新
Ø 9.索引
Ø 10.适合在线查询
Ø 11.⽀持近似预估计算
Ø 12.⽀持嵌套的数据结构
Ø ⽀持数组作为数据类型
Ø 13.⽀持限制查询复杂性以及配额
Ø 14.复制数据复制和对数据完整性的⽀持
我们来看看其中的⼀些功能:
1.真正的⾯向列的DBMS
在⼀个真正的⾯向列的DBMS中,没有任何“垃圾”存储在值中。例如,必须⽀持定长数值,以避免在数值旁边存储长度“数字”。例如,⼗亿个UInt8类型的值实际上应该消耗⼤约1 GB的未压缩磁盘空间,否则这将强烈影响CPU的使⽤。由于解压缩的速度(CPU使⽤率)主要取决于未压缩的数据量,所以即使在未压缩的情况下,紧凑地存储数据(没有任何“垃圾”)也是⾮常重要的。
因为有些系统可以单独存储单独列的值,但由于其他场景的优化,⽆法有效处理分析查询。例如HBase,BigTable,Cassandra和HyperTable。在这些系统中,每秒钟可以获得⼤约⼗万⾏的吞吐量,但是每秒不会达到数亿⾏。
另外,ClickHouse是⼀个DBMS,⽽不是⼀个单⼀的数据库。ClickHouse允许在运⾏时创建表和数据库,加载数据和运⾏查询,⽽⽆需重新配置和重新启动服务器。
2.数据压缩
⼀些⾯向列的DBMS(InfiniDB CE和MonetDB)不使⽤数据压缩。但是,数据压缩确实提⾼了性能。
3.磁盘存储的数据
许多⾯向列的DBMS(SAP HANA和GooglePowerDrill)只能在内存中⼯作。但即使在数千台服务器上,内存也太⼩,⽆法在
Yandex.Metrica中存储所有浏览量和会话。
4.多核并⾏处理
多核多节点并⾏化⼤型查询。
5.在多个服务器上分布式处理
上⾯列出的列式DBMS⼏乎都不⽀持分布式处理。在ClickHouse中,数据可以驻留在不同的分⽚上。每个分⽚可以是⽤于容错的⼀组副本。查询在所有分⽚上并⾏处理。这对⽤户来说是透明的。
6.SQL⽀持
如果你熟悉标准的SQL,我们不能真正谈论SQL的⽀持。NULL不⽀持。所有的函数都有不同的名字。JOIN⽀持。⼦查询在
FROM,IN,JOIN⼦句中被⽀持;标量⼦查询⽀持。关联⼦查询不⽀持。
7.向量化引擎
数据不仅按列存储,⽽且由⽮量 - 列的部分进⾏处理。这使我们能够实现⾼CPU性能。
8.实时数据更新
ClickHouse⽀持主键表。为了快速执⾏对主键范围的查询,数据使⽤合并树(MergeTree)进⾏递增排序。由于这个原因,数据可以不断地添加到表中。添加数据时⽆锁处理。
9.索引
例如,带有主键可以在特定的时间范围内为特定客户端(Metrica计数器)抽取数据,并且延迟时间⼩于⼏⼗毫秒。
10.⽀持在线查询
这让我们使⽤该系统作为Web界⾯的后端。低延迟意味着可以⽆延迟实时地处理查询,⽽Yandex.Metrica界⾯页⾯正在加载(在线模式)。
11.⽀持近似计算
1.系统包含⽤于近似计算各种值,中位数和分位数的集合函数。
2.⽀持基于部分(样本)数据运⾏查询并获得近似结果。在这种情况下,从磁盘检索⽐例较少的数据。
3.⽀持为有限数量的随机密钥(⽽不是所有密钥)运⾏聚合。在数据中密钥分发的特定条件下,这提供了相对准确的结果,同时使⽤较少的资源。
常见mpp数据库12.数据复制和对数据完整性的⽀持。
使⽤异步多主复制。写⼊任何可⽤的副本后,数据将分发到所有剩余的副本。系统在不同的副本上保持相同的数据。数据在失败后⾃动恢复
ClickHouse的不完美:
Ø 1.不⽀持事物。
Ø 2.不⽀持Update/Delete操作。
Ø 3.⽀持有限操作系统。
现在⽀持ubuntu,centos 需要⾃⼰编译,不过有热⼼⼈已经编译好了,拿来⽤就⾏。对于Windows 不⽀持。
四.ClickHouse应⽤场景
⾃从ClickHouse2016年6⽉15⽇开源后,ClickHouse中⽂社区随后成⽴。中⽂开源组开始以易观,海康威视,美团,新浪,京东,58,腾讯,酷狗⾳乐和俄罗斯开源社区等⼈员组成,随着开源社区的不断活跃,陆续有神州数码,青云,PingCAP,中软国际等公司成员加⼊以及其他公司成员加⼊。初始在⾥讨论技术后续有⼀些⼤型公司陆续运⽤到项⽬中,介于分享不⽅便问题解决,建⽴了相应的论坛。根据交流得知⼀些⼤公司已经运⽤。
可以应⽤以下场景:
1.电信⾏业⽤于存储数据和统计数据使⽤。
2.新浪微博⽤于⽤户⾏为数据记录和分析⼯作。
3.⽤于⼴告⽹络和RTB,电⼦商务的⽤户⾏为分析。
4.信息安全⾥⾯的⽇志分析。
5.检测和遥感信息的挖掘。
6.商业智能。
7.⽹络游戏以及物联⽹的数据处理和价值数据分析。
8.最⼤的应⽤来⾃于Yandex的统计分析服务Yandex.Metrica,类似于⾕歌Analytics(GA),或友盟统计,⼩⽶统计,帮助⽹站或移动应⽤进⾏数据分析和精细化运营⼯具,据称Yandex.Metrica为世界上第⼆⼤的⽹站分析平台。ClickHouse在这个应⽤中,部署了近四百台机器,每天⽀持200亿的事件和历史总记录超过13万亿条记录,这些记录都存有原始数据(⾮聚合数据),随时可以使⽤SQL查询和分析,⽣成⽤户报告。
五.ClickHouse 和⼀些技术的⽐较
1.商业OLAP数据库
例如:HP Vertica, Actian the Vector,
区别:ClickHouse是开源⽽且免费的
2.云解决⽅案
例如:亚马逊RedShift和⾕歌的BigQuery
区别:ClickHouse可以使⽤⾃⼰机器部署,⽆需为云付费
3.Hadoop⽣态软件
例如:Cloudera Impala, Spark SQL, Facebook Presto , Apache Drill
区别:
ClickHouse⽀持实时的⾼并发系统
ClickHouse不依赖于Hadoop⽣态软件和基础
ClickHouse⽀持分布式机房的部署
4.开源OLAP数据库
例如:InfiniDB, MonetDB, LucidDB
区别:这些项⽬的应⽤的规模较⼩,并没有应⽤在⼤型的互联⽹服务当中,相⽐之下,ClickHouse的成熟度和稳定性远远超过这些软件。
5.开源分析,⾮关系型数据库
例如:Druid , Apache Kylin
区别:ClickHouse可以⽀持从原始数据的直接查询,ClickHouse⽀持类SQL语⾔,提供了传统关系型数据的便利。
六.总结
在⼤数据分析领域中,传统的⼤数据分析需要不同框架和技术组合才能达到最终的效果,在⼈⼒成本,
技术能⼒和硬件成本上以及维护成本让⼤数据分析变得成为昂贵的事情。让很多中⼩型企业⾮常苦恼,不得不被迫租赁第三⽅⼤型公司的数据分析服务。
ClickHouse开源的出现让许多想做⼤数据并且想做⼤数据分析的很多公司和企业⽿⽬⼀新。ClickHouse 正是以不依赖Hadoop ⽣态、安装和维护简单、查询速度快、可以⽀持SQL等特点在⼤数据分析领域越⾛越远。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。