clickhouse简介

ClickHouse是一款适用于OLAP的列式数据库管理系统,以其高效压缩、多核并行处理及分布式处理能力著称。它支持SQL语法,拥有向量化引擎和实时数据更新,适用于大数据分析。不过,ClickHouse目前不支持事务处理和完整的UPDATE/DELETE操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是ClickHouse?

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。

在传统的行式数据库系统中,数据按如下顺序存储:处于同一行中的数据总是被物理的存储在一起。

Id  Device_code Title   Cmd Log_time
1   89354350662 read    500 2018-10-18 05:19:20
2   90329509958 Contact 501 2018-10-18 08:10:20
3   89953706054 Mission 102 2018-10-18 07:38:00

常见的行式数据库系统有: MySQL、Oracle、 SQL Server。 在列式数据库系统中,数据按如下的顺序存储:

Id          1           2           3
Device_code 89354350662 90329509958 89953706054
Title       read        Contact     Mission
Cmd         500         501         102
Log_time    2018-10-18 05:19:20 2018-10-18 08:10:20 2018-10-18 07:38:00

该示例中只展示了数据在列式数据库中数据的排列顺序。 对于存储而言,列式数据库总是将同一列的数据存储在一起,不同列的数据也总是分开存储。

常见的列式数据库有: hbase、 Google Dremel、 Drill、 Druid。

不同的存储方式适合不同的场景,这里的查询场景包括: 进行了哪些查询,多久查询一次以及各类查询的比例; 每种查询读取多少数据————行、列和字节;读取数据和写入数据之间的关系;使用的数据集大小以及如何使用本地的数据集;是否使用事务,以及它们是如何进行隔离的;数据的复制机制与数据的完整性要求;每种类型的查询要求的延迟与吞吐量等等。

OLAP场景的关键特征

  • 大多数是读请求
  • 数据总是以相当大的批(> 1000 rows)进行写入
  • 不修改已添加的数据
  • 每次查询都从数据库中读取大量的行,但是同时又仅需要少量的列
  • 宽表,即每个表包含着大量的列
  • 较少的查询(通常每台服务器每秒数百个查询或更少)
  • 对于简单查询,允许延迟大约50毫秒
  • 列中的数据相对较小: 数字和短字符串(例如,每个URL 60个字节)
  • 处理单个查询时需要高吞吐量(每个服务器每秒高达数十亿行)
  • 事务不是必须的
  • 对数据一致性要求低
  • 每一个查询除了一个大表外都很小
  • 查询结果明显小于源数据,换句话说,数据被过滤或聚合后能够被盛放在单台服务器的内存中

面向列的数据库更适合于OLAP方案(对于大多数查询,处理速度至少提高了100倍),原因如下:

1 对于分析查询,只需要读取少量的列。在面向列的数据库中,您只能读取所需的数据。例如,如果您需要100列中的5列,则I/O可能会减少20倍。

2 由于数据是以数据包的形式读取的,因此压缩比较容易。列中的数据也更容易压缩。这进一步减少了I/O量。

3 由于减少的I/O,更多的数据适合在系统缓存中。

ClickHouse的显著特性

1.真正的面向列的DBMS

2.数据高效压缩

3.磁盘存储的数据

4.多核并行处理

5.在多个服务器上分布式处理

6.SQL语法支持

7.向量化引擎

8.实时数据更新

9.索引

10.适合在线查询

11.支持近似预估计算

12.支持嵌套的数据结构,支持数组作为数据类型

13.支持限制查询复杂性以及配额

14.复制数据复制和对数据完整性的支持

我们来看看其中的一些功能:

1.面向列的DBMS

在一个真正的面向列的DBMS中,没有任何额外的数据会被存在value中。即使在未压缩的情况下,紧凑地存储数据是非常重要的,因为解压缩的速度(CPU使用率)主要取决于未压缩数据的量。

2.数据压缩

一些面向列的DBMS(InfiniDB CE和MonetDB)不使用数据压缩。但是,数据压缩确实提高了性能。clickhouse提供了两种:LZ4和ZSTD LZ4在速度上会更快,但是压缩率较低,ZSTD正好相反。尽管ZSTD比LZ4慢,但是相比传统的压缩方式Zlib,无论是在压缩效率还是速度上,都可以作为Zlib的替代品。

3.磁盘存储的数据

许多面向列的DBMS(SAP HANA和Google PowerDrill)只能在内存中工作。但即使在数千台服务器上,内存也太小,无法在Yandex.Metrica中存储所有浏览量和会话。ClickHouse设计用于常规硬盘驱动器,这意味着每GB数据存储的成本很低

4.多核并行处理

多核多节点并行化大型查询。会获取到集群的所有可用资源

5.在多个服务器上分布式处理

上面列出的列式DBMS几乎都不支持分布式处理。在ClickHouse中,数据可以驻留在不同的分片上。每个分片可以是用于容错的一组副本。查询在所有分片上并行处理。

6.SQL支持

ClickHouse支持基于SQL的声明性查询语言,在许多情况下与SQL标准相同。支持的查询包括GROUP BY,ORDER BY,FROM,IN和JOIN查。不支持关联子查询和窗口函数。子查询在FROM,IN,JOIN子句中被支持;

7.向量化引擎

数据不仅按列存储,而且由矢量(列的部分)进行处理。这使我们能够实现高CPU性能。

8.索引

通过主键对物理数据进行物理排序,可以提取具有低延迟(小于几十毫秒)的特定值或值范围的数据。

9.支持在线查询

我们使用该系统作为Web界面的后端。可以无延迟实时地处理查询,前端即时显示

10.数据复制和对数据完整性的支持。

使用异步多主复制。写入任何可用的副本后,数据将分发到所有剩余的副本。系统在不同的副本上保持相同的数据。数据在失败后自动恢复。

ClickHouse目前未实现功能

1.无事务处理。

2.缺乏全面的UPDATE / DELETE实现

ClickHouse是一个开源的列式数据库管理系统,用于处理大规模数据分析。它的文件存储位置可以在配置文件中指定,配置文件的路径是/etc/clickhouse-server/config.xml。启动ClickHouse的可执行文件位于/usr/bin目录下,数据存储在/var/lib/clickhouse目录中,日志文件位于/var/log/clickhouse-server目录中。\[1\] 如果你想下载ClickHouse,可以在http://repo.red-soft.biz/repos/clickhouse/stable/el7/找到下载地址。在单机模式下,你需要将以下5个文件上传到/usr/local/clickhouse目录中: - clickhouse-client-1.1.54236-4.el7.x86_64.rpm - clickhouse-compressor-1.1.54236-4.el7.x86_64.rpm - clickhouse-debuginfo-1.1.54236-4.el7.x86_64.rpm - clickhouse-server-1.1.54236-4.el7.x86_64.rpm - clickhouse-server-common-1.1.54236-4.el7.x86_64.rpm\[2\] 然后,你可以使用以下命令安装这5个rpm文件: rpm -ivh /usr/local/clickhouse/*.rpm\[2\] 最后,你可以使用以下命令启动ClickHouse服务器: nohup clickhouse-server --config-file=/etc/clickhouse-server/config.xml >/dev/null 2>&1 &\[3\] #### 引用[.reference_title] - *1* [【用户画像】ClickHouse简介、特点、安装和部署](https://blog.youkuaiyun.com/weixin_43923463/article/details/127471546)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [ClickHouse原理及使用](https://blog.youkuaiyun.com/weixin_32265569/article/details/111822811)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值