clickhouse

什么是clickhouse?优势是什么,为什么选择ch?

全称 :Click Stream Data WareHouse 简称ClickHouse 是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。

ClickHouse的核心特性

  1. ClickHouse拥有完备的管理功能,所以它称得上是一个DBMS(Database Management System,数据库管理系统),而不仅是一个数据库。
  • DDL(数据定义语言):可以动态地创建、修改或删除数据库、表和视图,而无须重启服务。
  • DML(数据操作语言):可以动态查询、插入、修改或删除数据。
  • 权限控制:可以按照用户粒度设置数据库或者表的操作权限,保障数据的安全性。
  • 数据备份与恢复:提供了数据备份导出与导入恢复机制,满足生产环境的要求。
  • 分布式管理:提供集群模式,能够自动管理多个数据库节点。
  1. 列式存储与数据压缩
  • 列式存储:想让查询变得更快,最简单且有效的方法是减少数据扫描范围和数据传输时的大小。假设一张数据表A拥有50个字段A1~A50,以及100行数据。现在需要查询前5个字段并进行数据分析,则可以用如下SQL实现:

SELECT A1,A2,A3,A4,A5 FROM A

如果数据按行存储,数据库首先会逐行扫描,并获取每行数据的所有50个字段,再从每一行数据中返回A1~A5这5个字段。尽管只需要前面的5个字段,但由于数据是按行进行组织的,实际上还是扫描了所有的字段。

如果数据按列存储,就不会发生这样的问题。由于数据按列组织,数据库可以直接获取

A1~A5 这5列的数据,从而避免了多余的数据扫描。

  • 数据压缩:

压缩的本质:按照一定步长对数据进行匹配扫描,当发现重复部分的时候就进行编码转换。

压缩前:abcdefghi_bcdefghi

压缩后:abcdefghi_(9,8)

从下划线开始向前移动9个字节,会匹配到8个字节长度的重复项。

属于同一个列字段的数据,因为它们拥有相同的数据类型和现实语义,重复项的可能性自然就 更高。

  • 向量化执行:消除程序中循环的优化。利用CPU的SIMD指令,用单条指令操作多条数据。

官网:https://clickhouse.tech/docs/zh/