ClickHouse简介

ClickHouse 是一款高效、快速、开源的 OLAP 数据库管理系统。它基于列存,能够使用 SQL 查询实时生成分析报告。

官方网站:

https://clickhouse.tech/

源码地址:

https://github.com/ClickHouse/ClickHouse

一、ClickHouse 特点

  • 速度非常快
  • 硬件效率高
  • 可线性扩展
  • 高容错能力
  • 高可靠性
  • 功能特性丰富

ClickHouse 宣称比传统数据库访问速度快 100~1000 倍。ClickHouse 的性能超过了目前市场上可比较的面向列存的数据库管理系统,每台服务器每秒能够处理数百亿字节的数据。

官方提供了 ClickHouse,Vertica 和 Greenplum 的性能测试对比,ClickHouse 性能具有巨大的优势 ,见地址:

https://clickhouse.tech/benchmark/dbms/

1.1 为什么 ClickHouse 具备上述强大的性能

ClickHouse 执行速度快, 能够使用硬件提供的所有能力,最大程度地发挥硬件潜能,来处理查询,使查询执行尽可能地快速。ClickHouse 单个查询的峰值处理性能达到每秒 2 TB 以上(解压缩后,仅使用字段列)。在分布式部署架构中,能够在多个副本之间进行读取的负载均衡,以避免增加延迟。

ClickHouse 具有高容错性,支持多主异步复制,可以跨多个数据中心部署。所有节点都是相等的,可以避免单点故障。单个节点或整个数据中心的停机不会影响系统的读写可用性。

ClickHouse 易于使用,它足够简单,开箱即用,它简化了所有数据处理流程,将所有结构化数据存储到系统中,能够立即用于生成报告。类似 SQL 的语句能够表达所需的结果,而不用涉及任何自定义非标准 API。

ClickHouse 具备高可靠性,可以配置成一个纯分布式系统,位于独立节点上,没有任何单点问题。它还包括许多企业级的安全特性和防止人为错误的故障安全机制。

1.2 硬件高效利用

ClickHouse 在同等的 I/O 吞吐量和 CPU容量条件下,处理典型的分析查询的速度比传统的面向行存的系统快 2 到 3 个数量级。列存储格式的数据能够在内存中放置更多的热数据,从而缩短响应时间。通过使用带传统旋转磁盘驱动器而不是企业级 NVMe或 SSD,可以进一步降低硬件成本,而不会对大多数类型的查询性能产生影响。

CPU 效率提高,矢量化查询执行涉及 SIMD 处理器指令和运行时代码生成,在列存中处理数据会提高 CPU 行缓存命中率。

磁盘访问优化,ClickHouse 最大限度地减少了范围查询的搜索次数,提高了使用传统磁盘驱动器的效率,因为它保持了连续存储数据的引用位置。

最小化数据传输,ClickHouse 能够管理其数据和创建报告,而无需使用专门针对高性能计算的网络。

1.3 ClickHouse 丰富的数据库特性

用户友好的类 SQL 语言:
ClickHouse 提供了一种类 SQL 的查询语言,具有许多内置的分析功能。除了可以在大多数 DBMS 中找到的常见函数外,ClickHouse 还提供了许多针对 OLAP 特定场景的功能和特性。

高效管理非规范化数据的能力:
ClickHouse 基于列存的特性允许每个表有成百上千个列,而不会减慢 SELECT 查询的速度。通过利用广泛的数据组织选项(如数组、元组和嵌套数据结构),可以将更多的数据打包。

分布式联接查询或分布式数据定位能力:
ClickHouse 提供了各种连接表的选项。连接可以是本地集群,也可以访问存储在外部系统中的数据。还有一个外部字典支持,它为从外部源访问数据提供了另一种更简单的语法。

近似查询处理:
用户可以控制结果准确性和查询执行时间之间的权衡,这在处理 TB 或 PB 级的数据时非常方便。ClickHouse 还提供了概率数据结构,用于快速、高效地计算基数和分位数。

1.4 ClickHouse 线性扩展

ClickHouse 能够很好地进行水平和垂直扩展,既可以在具有数百或数千个节点的集群上执行,也可以在单个服务器上执行,甚至可以在小型虚拟机上执行。目前,每个节点的数据量可以超过数万亿行或数百兆兆字节。有许多 ClickHouse 集群由数百个节点组成,其中包括 Yandex Metrica 的几个集群,而已知最大的 ClickHouse 集群远远超过 1000 个节点。

二、ClickHouse 适用场景与不适用场景

2.1 ClickHouse适用于哪些场景
  • Web and App analytics
  • Advertising networks and RTB
  • Telecommunications(电信业务)
  • E-commerce and finance(电子商务与金融)
  • Information security(信息安全)
  • Monitoring and telemetry(监测和遥测)
  • Time series(时间序列)
  • Business intelligence(商业智能)
  • Online games(在线游戏)
  • Internet of Things(物联网)
2.2 不适用于哪些场景
  • Transactional workloads(OLTP,事务性工作负载)
  • Blob or document storage(Blob 或者文档存储)
  • Key-value requests with a high rate(高速率的键值请求)
  • Over-normalized data(过度规范化数据)

三、ClickHouse 特性汇总

  • True column-oriented storage(真正的面向列的存储)
  • Vectorized query execution(矢量化查询执行)
  • Parallel and distributed query execution(并行分布式查询执行)
  • Real-time query processing(实时查询处理)
  • Real-time data ingestion(实时数据获取)
  • On-disk locality of reference(磁盘上的引用位置)
  • Secondary data-skipping indexes(次要的数据跳过索引)
  • Data compression(数据压缩)
  • Hot and cold storage separation(冷热存储分离)
  • SQL support(SQL支持)
  • JSON documents query functions(JSON文档查询函数)
  • Features for web and mobile analytics(Web和移动分析功能)
  • High availability(高可用)
  • Cross-datacenter replication(跨数据中心复制)
  • Local and distributed joins(本地和分布式连接)
  • Adaptive join algorithm(自适应连接算法)
  • Pluggable external dimension tables(可插拔的外部维度表)
  • Arrays and nested data types(数组和嵌套数据类型)
  • Focus on OLAP workloads(聚焦OLAP业务类型)
  • S3-compatible object storage support(兼容S3对象存储支持)
  • Hadoop, MySQL, Postgres integration(Hadoop, MySQL, Postgres集成)
  • Approximate query processing(支持近似查询)
  • Probabilistic data structures(概率数据结构)
  • Full support of IPv6(IPv6的完全支持)
  • State-of-the-art algorithms(最先进的算法)
  • Detailed documentation(详细的文档)
  • Clean documented code(干净的文档化的代码)

文章评论

0条评论