一. 概述
随着物联网 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
在一个真正的面向列的 DBMS 中,没有任何“垃圾”存储在值中。例如,必须支持定长数值,以避免在数值旁边存储长度“数字”。例如,十亿个 UInt8 类型的值实际上应该消耗大约 1 GB 的未压缩磁盘空间,否则这将强烈影响 CPU 的使用。由于解压缩的速度(CPU 使用率)主要取决于未压缩的数据量,所以即使在未压缩的情况下,紧凑地存储数据(没有任何“垃圾”)也是非常重要的。
因为有些系统可以单独存储单独列的值,但由于其他场景的优化,无法有效处理分析查询。例如 HBase,BigTable,Cassandra 和 HyperTable。在这些系统中,每秒钟可以获得大约十万行的吞吐量,但是每秒不会达到数亿行。