[数据库] — 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.整形

常用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引擎,主要有个分区的特点。
我们可以指定按天分区,或者按月分区,那么后面查询或者删除的时候,就可以按天或按月。
建表规范如下

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

删除数据(mergeTree引擎)

带分区的引擎,可以按分区删除。
以按天分区的表举例:
表名:response_event
不需要指定字段名,因为建表的时候已经指定了。

如果这个字段是null,就用 ‘0000-00-00’

4.实战—java中使用clickhouse

1.使用maven

2.JDBC连接数据库

3.创建表

4.插入数据

5.查询数据

5.clickhouse可视化软件

类似于mysql的navicat,clickhouse常用DBeaver来可视化
DBeaver官网下载,直接安装

[数据库] --- clickhouse

文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树数据库组成31461 人正在系统学习中

来源:zhangSir134

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年10月16日
下一篇 2019年10月17日

相关推荐