ClickHouse 知识点整理

ClickHouse深度解析:列式数据库与OLAP实战
ClickHouse是一个由俄罗斯开发的高性能列式数据库,专为在线分析处理(OLAP)设计,适合高查询量、低写入频率的场景。它采用MergeTree表引擎,通过后台合并数据片段实现高效分析。此外,还支持多种数据类型如Int、Float、Decimal及枚举,并能映射MySQL数据。尽管性能出色,但ClickHouse对CPU和内存资源需求较大。了解OLAP与OLTP的区别,以及ClickHouse的表引擎特性,对于充分利用其能力至关重要。

前言

  • ClickHouse是战斗民族搞得一个OLAP引擎,适合做分析
  • ClickHouse适合查询多,写少的场景
  • 是一个列式数据库,这点上与HBase是一样的
  • ClickHouse性能很棒,但高效的背后是对CPU和内存的具有较大的消耗

OLAP和OLTP的区别

  • OLAP:在线分析处理查询
  • OLTP:联机事务处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一。

ClickHouse在线演示

ClickHouse提供了在线演示,但DDL和插入操作在演示网站是不被允许的

物化引擎

ClickHouse支持映射已经存在的Mysql数据库,但实际上并没有本地存在数据

如果想要让ClickHouse映射通过保存本地一份数据,可以使用ClickHouse的物化引擎,其本质原理是复制一份Mysql的数据,并通过binlog同步mysql的增量数据修改。

数据类型

  • 整形int:int8、int16…int64
  • 布尔类型boolean:ClickHouse中没有专门的类型来表示boolean,一般是直接通过Uint8的0或1来区分true或者false
  • 浮点型float:float32和float64
  • Demical类型:有符号的浮点数,可以在加、减和惩罚运算过程中保持精度,这点设计上与Java的BigDemical类是很像的
  • 字符型:ClickHouse内部使用String来声明字符型数据,在ClickHouse中,String可以替代其他数据库中的Varchar、BLOB、CLOB等类型
  • 枚举类型:包含Enum8和Enum16两种类型,使用Enum来表示String与Integer的关系

表引擎

类似于Mysql中提供的Innodb和Myisam引擎,但ClickHouse的表引擎面向海量数据,更强大

表引擎决定了:

  • 数据的存储方式和位置,写到哪里以及从哪里读取数据
  • 支持哪些查询以及如何支持。
  • 并发数据访问。
  • 索引的使用(如果存在)
  • 是否可以执行多线程请求。
  • 数据复制参数

ClickHouse提供了很多表引擎,整体可以分为四类

1.MergeTree

适用于高负载任务的最通用、最强大的表引擎,在生产环境的绝大部分场景中,都会使用此系列的表引擎。

MergeTree的核心思想是:

  • MergeTree在写入一批数据时,数据会以数据片段的形式写入磁盘,且该数据片段是不可修改的。

  • 之后,ClickHouse会经过后台线程,按期合并这些数据片段,属于相同分区的数据片段会被合成一个新的片段,这也是为什么叫MergeTree引擎。

2.日志引擎

最小功能的轻量级引擎,可以用来存一些日志和练习用。

3.集成引擎

用于集成其他数据库的引擎

4.特定功能引擎

用于一些特定功能的引擎,例如ClickHouse中的分布式表,数据保存在不同的文件中,这样的实现就是一种特定功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值