ClickHouse

维基百科,自由的百科全书
跳转到导航 跳转到搜索
Clickhouse
File:Clickhouse.png
开发者ClickHouse Inc 及 ClickHouse开源社区
首次发布2016年6月15日,​10年前​(2016-06-15
当前版本
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    源代码库
    • {{URL|example.com|可选的显示文本}}
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    编程语言C++
    引擎
      Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
      操作系统Linux, macOS
      许可协议Apache License 2.0
      网站clickhouse.yandex

      ClickHouse是一个用于联机分析处理(OLAP)的开源列式数据库

      ClickHouse是由俄罗斯IT公司Yandex为Yandex.Metrica网络分析服务开发的。[1][2][3][4] ClickHouse允许分析实时更新的数据。该系统以高性能为目标。[5]

      这个项目是在2016年6月发布的Apache许可证下的开源软件[6]

      Yandex.Tank负载测试工具使用ClickHouse。[6] Yandex.Market使用ClickHouse来监控网站的可访问性和KPI。[7] ClickHouse还在CERNLHCb实验[8]中实现了对100亿个事件的元数据进行存储和处理,每个事件有超过1000个属性,Tinkoff Bank使用ClickHouse作为项目的数据存储。[9]

      历史[编辑]

      Yandex.Metrica以前使用一种经典的方法,即以聚合形式存储原始数据。[10] 这种方法可以帮助减少存储的数据量。然而,它有几个局限性和缺点:

      • 可用报表的列表必须是预先确定的,而且无法生成自定义报表。
      • 聚合之后,数据量可能会增加。当数据由大量键进行聚合或使用具有高基数的键(如URL)时,就会发生这种情况。
      • 对于具有不同聚合的报表,很难支持逻辑一致性。

      另一种方法是存储未聚合的数据。处理原始数据需要高性能的系统,因为所有计算都是实时进行的。为了解决这个问题,需要一个能够处理整个互联网规模的分析数据的列式数据库。Yandex开始开发自己的列式数据库。 ClickHouse的第一个原型在2009年出现。2014年底,Yandex.Metrica 2.0版发布。新版本有一个用于创建自定义报告的接口,并使用ClickHouse存储和处理数据。

      ClickHouse Inc.于2021年9月在加州旧金山成立,以持续发展ClickHouse;最初由Index Ventures、Benchmark Capital和Yandex共投资 5000 万美元。2021年10月Coatue Management、Altimeter Capital等B轮融资2.5亿美元,使公司估值达20亿美元。直至2023年ClickHouse Inc员工人数为120人。

      功能[编辑]

      Clickhouse DBMS 的主要功能是:[11]

      • 真正的列式数据库。 没有任何内容与值一起存储。例如,支持常量长度值,以避免将它们的长度“ number”存储在值的旁边。
      • 线性可扩展性。 可以通过添加服务器来扩展集群。
      • 容错性。 系统是一个分片集群,其中每个分片都是一组副本。ClickHouse使用异步多主复制。数据写入任何可用的副本,然后分发给所有剩余的副本。Zookeeper用于协调进程,但不涉及查询处理和执行。
      • 能够存储和处理数PB的数据。
      • SQL支持。 Clickhouse支持类似SQL的扩展语言,包括数组和嵌套数据结构、近似函数和URI函数,以及连接外部键值存储的可用性。
      • 高性能。[12]
        • 使用向量计算。数据不仅由列存储,而且由向量处理(一部分列)。这种方法可以实现高CPU性能。
        • 支持采样和近似计算。
        • 可以进行并行和分布式查询处理(包括JOIN)。
      • 数据压缩。
      • HDD优化。 该系统可以处理不适合内存的数据。
      • 用于数据库(DB)连接的客户端。 数据库连接方式包括控制台客户端、HTTP API,或者各种编程语言的wrapper(可以用的有PythonPHP[13]NodeJS[14]Perl[15]Ruby[16]R[17]语言)。ClickHouse也可以使用JDBC驱动。[18]
      • 详细的文档。页面存档备份,存于互联网档案馆

      限制[编辑]

      Clickhouse有一些可以被视为缺点的特点:

      • 不支持事务
      • 默认情况下,在执行聚合时,查询中间状态必须适合单个服务器上的RAM。但是,在这种情况下,可以将ClickHouse配置为溢出到磁盘上来解决。
      • 缺乏完整的UPDATE/DELETE实现。

      使用场景[编辑]

      Clickhouse是为OLAP查询而设计的。[11]

      • 它可以处理少量包含大量字段的表。
      • 查询可以使用从数据库中提取的大量行,但只用一小部分字段。
      • 查询相对较少(通常每台服务器大约100个RPS)。
      • 对于简单的查询,允许大约50毫秒的延迟。
      • 列值相当小,通常由数字和短字符串组成(例如每个URL,60字节)。
      • 处理单个查询时需要高吞吐量(每台服务器每秒数十亿行)。
      • 查询结果主要是过滤或聚合的。
      • 数据更新使用简单的场景(通常只是批量处理,没有复杂的事务)。

      ClickHouse的一个常见情况是服务器日志分析。在将常规数据上传到ClickHouse之后(建议将数据每次1000条以上批量插入),就可以通过即时查询分析事件或监视服务的指标,如错误率、响应时间等。

      ClickHouse还可以用作内部分析师的内部数据仓库。ClickHouse可以存储来自不同系统的数据(比如Hadoop或某些日志),分析人员可以使用这些数据构建内部指示板,或者为了业务目的执行实时分析。

      基准测试结果[编辑]

      根据开发人员进行的基准测试[12] 对于OLAP查询,ClickHouse的速度比Hive(基于Hadoop技术栈的DBMS)或MySQL(通用RDBMS)快100倍以上。

      商业实现[编辑]

      • Altinity
      • ClickHouse Inc
      • Firebolt
      • ByteHouse

      参考文献[编辑]

      1. ^ Usage Statistics and Market Share of Traffic Analysis Tools for Websites, November 2016. w3techs.com. [2016-11-10]. (原始内容存档于2014-01-21). 
      2. ^ Datanyze. Analytics Market Share Report | Competitor Analysis | Google Analytics, Google Universal Analytics, Yandex Metrica. Datanyze. [2016-11-10]. (原始内容存档于2016-10-21) (en-US). 
      3. ^ Wappalyzer. Analytics. wappalyzer.com. 2011-12-30 [2016-11-10]. (原始内容存档于2017-05-12). 
      4. ^ Analytics - SEOMON.com. seomon.com. [2016-11-10]. (原始内容存档于2016-10-12). 
      5. ^ ClickHouse: High-Performance Distributed DBMS for Analytics | Percona Live Amsterdam - Open Source Database Conference 2016. www.percona.com. [2016-11-10]. (原始内容存档于2016-10-21). 
      6. ^ 6.0 6.1 Яндекс открывает ClickHouse. [2016-11-10]. (原始内容存档于2016-10-21). 
      7. ^ Здоровье Маркета: как мы превращаем логи в графики, Дмитрий Андреев (Яндекс) — События Яндекса. events.yandex.ru. [2016-11-10]. (原始内容存档于2017-08-30). 
      8. ^ Yandex — Yandex Launches Search Tool for LHC Events at CERN. Yandex. [2016-11-10]. (原始内容存档于2016-10-20). 
      9. ^ Сравнение аналитических in-memory баз данных. [2016-11-10]. (原始内容存档于2016-10-21). 
      10. ^ Эволюция структур данных в Яндекс.Метрике. [2016-11-10]. (原始内容存档于2016-12-28). 
      11. ^ 11.0 11.1 ClickHouse Guide. clickhouse.yandex. [2016-11-10]. (原始内容存档于2016-11-11). 
      12. ^ 12.0 12.1 Performance comparison of analytical DBMS. clickhouse.yandex. [2016-11-10]. (原始内容存档于2016-10-20). 
      13. ^ smi2/phpClickHouse. GitHub. [2016-11-10]. (原始内容存档于2019-09-24). 
      14. ^ apla/node-clickhouse. GitHub. [2016-11-10]. (原始内容存档于2019-09-24). 
      15. ^ elcamlost/perl-DBD-ClickHouse. GitHub. [2016-11-10]. (原始内容存档于2018-06-12). 
      16. ^ archan937/clickhouse. GitHub. [2016-11-10]. (原始内容存档于2018-06-12). 
      17. ^ hannesmuehleisen/clickhouse-r. GitHub. [2016-11-10]. (原始内容存档于2019-09-24). 
      18. ^ yandex/clickhouse-jdbc. GitHub. [2016-11-10]. (原始内容存档于2019-09-24). 

      外部链接[编辑]