一. 概述

随着物联网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.支持为有限数量的随机密钥(而不是所有密钥)运行聚合。在数据中密钥分发的特定条件下,这提供了相对准确的结果,同时使用较少的资源。

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等特点在大数据分析领域越走越远。

参考链接:https://www.jianshu.com/p/350b59e8ea68

ClickHouse数据分析列式数据库概述相关推荐

  1. 最近很火的 ClickHouse【列式数据库】 是什么?

    ClickHouse 是 Yandex(俄罗斯最大的搜索引擎)开源的一个用于实时数据分析的基于列存储的数据库,其处理数据的速度比传统方法快 100-1000 倍. ClickHouse 的性能超过了目 ...

  2. 数仓选型必列入考虑的OLAP列式数据库ClickHouse(上)

    概述 定义 ClickHouse官网地址 https://clickhouse.com/ 最新版本22.4.5.9 ClickHouse官网文档地址 https://clickhouse.com/do ...

  3. 联机分析的列式数据库 clickHouse

    ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS). 在传统的行式数据库系统中,数据按如下顺序存储: Row WatchID JavaEnable Title Good ...

  4. 2022-05-19 列式数据库-Clickhouse

    什么事列式数据库,顾名思义它与平时的主流关系型数据库不太一致,例如mysql 它是行式数据库,什么意思呢? image.png 这就是普通的行式数据库的存储,一行是一条完整的数据; 接下来看看列式数据 ...

  5. 如何看待yandex开源clickhouse这个列式文档数据库?

    如何看待yandex开源clickhouse这个列式文档数据库? 大数据云计算 water 5天前 24℃ 0评论 欧阳辰<Druid实时大数据分析>作者,"互联居"作 ...

  6. 数据仓库一些整理(列式数据库)

    术语备注: 1.OLTP.这是on-line transaction processing的简写.翻译成联机事务处理.就是在线交易的业务数据.这方面的数据库是关系型数据库. 2.OLAP.On-Lin ...

  7. 列式数据库和行式数据库的区别

    前言 最近学习了hbase,其中涉及的到知识就是hbase采用了列式存贮,而用惯了mysql的我当然一脸懵逼,于是有了本篇文章,本文不是论文,所有涉及的知识点他人都有讲,我只是为了记录一下,如果想要看 ...

  8. Hbase与Oracle比较(列式数据库与行式数据库)

    1 主要区别 1.1.Hbase适合大量插入同时又有读的情况 1.2. Hbase的瓶颈是硬盘传输速度,Oracle的瓶颈是硬盘寻道时间. Hbase本质上只有一种操作,就是插入,其更新操作是插入一个 ...

  9. 行式数据库 VS 列式数据库

    行式数据库 VS 列式数据库 一   基本概念 1  行式数据库    http://zhusihu.blog.163.com/blog/static/178880235201102381753490 ...

最新文章

  1. cs python课程 加州大学_B站的CS课程整理 搬运
  2. python sys.argv 默认值
  3. Python编程语言学习:for循环中常用方法经验技巧(利用enumerate函数对列表实现自带索引等)之详细攻略
  4. linux基本操作之目录、vi等
  5. 51nod 1101 换零钱 完全背包的变型 动态规划
  6. Oracle打开虚拟机闪退,虚拟机上启动Oracle服务为什么自动停止,怎么处理?
  7. 转载 vue的基础使用
  8. 配置IPsec on GRE Tunnel with IOS Firewall and NAT
  9. python输出国际象棋棋盘_python输出国际象棋棋盘的实例分享
  10. php文件里搜索关键字,php - PHP从文本文件中搜索关键字(Action'),使用该关键字打印所有行,然后计算打印的行数 - SO中文参考 - www.soinside.com...
  11. Jenkins 无法运行 putty.exe问题解决
  12. HDU2084 数塔【DP】
  13. 初窥JQuery(二)-事件机制(1)
  14. wide and deep及其发展
  15. 大数据、Hadoop、Hbase介绍
  16. Docker安装迅雷下载工具实现远程下载
  17. R可视化绘图二-ggplot2
  18. laravel项目启动
  19. 国外博士论文下载网址
  20. Windows 10与微软公有云Azure

热门文章

  1. erlang精要(30)-卫语句
  2. 【机器学习】机器学习模型验证,这3个 Python 包可轻松解决95%的需求!
  3. 【小白学PyTorch】11.MobileNet详解及PyTorch实现
  4. 技术干货 | JavaScript 之事件循环(Event Loop)
  5. 0122互联网新闻 | 知乎短视频“即影”正式上线;天猫与故宫开启2019“天猫新文创”计划...
  6. 今夜,我们一起缅怀对美好事物痴迷的青葱岁月
  7. 责任链(Chain of Responsibility Pattern)
  8. React事件优雅绑定
  9. 成为一名优秀的程序员基本要素
  10. jQuery的Autocomplete插件的远程url取json数据的问题