[数据库] --- clickhouse

clickhouse是一个列式数据库(系统)。
官方文档
官网比较全,但也可以说比较杂,下面就是我个人的一些总结,以及在实际工作中的应用场景。

1.clickhouse适用场景

clickhouse主要适合那种大量数据做分析的场景。
一般数据insert进去,也就不要修改和删除了。
比如那种埋点的数据,每秒成百上千条插入,但对事务的要求不高。
clickhouse比较吃内存,这也是它比较快的原因之一。
我实际工作的场景,就是把每天几百万甚至几千万的业务数据,在各个维度把数据拉平,存在clickhouse中,所以存的是最细分的数据,然后作为统计报表的查询库,可以查出各个维度下或多个维度下的数据了。

2.clickhouse与mysql类比。

初学的时候,你可以把clickhouse类比mysql来用。
同样的都有数据库,都要创建表,都支持sql标准。
clickhouse的数据也是存在表中的,先建库,再建表,最后insert数据。
clickhouse默认有一个default库,建表的时候,数据类型的定义和mysql不一样,以及引擎也不一样。
clickhouse一般都用的是mergeTree引擎,我们后面也是以这个引擎为例。

3.clickhouse常用数据类型

clickhouse表中的每个字段,都必须在创建表的时候指定数据类型,常用的有以下几种:

1.整形
整型范围
Int8 - [-128 : 127]
Int16 - [-32768 : 32767]
Int32 - [-2147483648 : 2147483647]
Int64 - [-9223372036854775808 : 9223372036854775807]
无符号整型范围
UInt8 - [0 : 255]
UInt16 - [0 : 65535]
UInt32 - [0 : 4294967295]
UInt64 - [0 : 18446744073709551615]

常用UInt16

2.浮点型

Float32, Float64
我用的比较少

3.Decimal

涉及到钱等类似其他精细计算的类型

4.String

最常用的类型,万物皆String

5.Date

精确到天,对应java中,是long类型。
insert的时候注意单位
当表的引擎用mergeTree时,还必须要有个Date类型的字段。

6.DateTime

精确到秒,对应java中,也是long类型
insert的时候,也是注意单位

7.其他

官网还提供了其他类型,平时用不到,所以先不说了

5.clickhouse的引擎

clickhouse提供了很多引擎,我们注意说说mergeTree
mergeTree引擎,主要有个分区的特点。
我们可以指定按天分区,或者按月分区,那么后面查询或者删除的时候,就可以按天或按月。
建表规范如下

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
    name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
    ...
    INDEX index_name1 expr1 TYPE type1(...) GRANULARITY value1,
    INDEX index_name2 expr2 TYPE type2(...) GRANULARITY value2
) ENGINE = MergeTree()
[PARTITION BY expr]
[ORDER BY expr]
[PRIMARY KEY expr]
[SAMPLE BY expr]
[SETTINGS name=value, ...]

重点看mergeTree()后面各个属性的定义顺序

删除数据(mergeTree引擎)

带分区的引擎,可以按分区删除。
以按天分区的表举例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值