一 简介:进一步了解clickhouse
二 数据操
1 单机建表
create TABLE aaa
(
id UInt32,
uid UInt32,
amount Float64,
create_time Date
)
ENGINE = MergeTree//单机默认引擎
ORDER BY id
SETTINGS index_granularity = 8192
2 复制集群建表
CREATE TABLE image_label
(
label_id UInt32,
abel_name String,
insert_time Date
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/01-01/image_label', 'IP', insert_time, (label_id, insert_time), 8192)//这里指定ZK信息+主键+稀松索引
3 同步数据
CREATE TABLE article_clientuser_sum
ENGINE = MergeTree ORDER BY id AS
SELECT *
FROM mysql('host:port', 'db', 'article_clientuser_sum', 'user', 'password')
4 总结
可以采用1和2的这种方式建立表,也可以采用3方式建立表要注意几点
1 clickhouse在方案3下会自动建立表结构,但是一定要加上order by 主键字段,这样会按照主键字段排序插入,是有序的
2 clickhouse在方案2下最好指定相应主键(主键名称,主键构成,稀松索引粒度)
3 INDEX_GRANULARITY一般情况下为8192,代表每隔多少行做一个标记
4 Date/int类型作为主键效果最好,尽量不要用string,在uuid作为主键的时候要选择日期,这样效率很高
5 clickhouse会自动识别并且兑换mysql的相关列,对于不能识别的列变化成string,但是这种列很少
三 数据类型
1 整型:JInt8,UInt16,UInt32,UInt64,Int8,Int16,Int32,Int64 释:(范围U开头-2^N/2~2^N-1;非U开头0~2^N-1)
2 精度类型:FLOAT32,FLOAT64
3 枚举类型:Enum8,Enum16 释:(Enum('hello'=1,'test'=-1),Enum是有符号的整型映射的,因此负数也是可以的)
4 字符串型:FixedString(N),String 释:(N是最大字节数)
5 时间类型:Date
6 数组类型:Array(T)
7元祖数:Tuple
8结构:Nested(name1 Type1,name2 Type2,...) 释:(类似一种map的结构)
补充:对于clickhouse不支持的类型会以string识别,针对blob,text等建议也用string代替
四 常见的数据操作
1 增加 insert into value
2 删除 alter table delete where truncate 包括简单条件和子查询都可以
3 更改 alter table 针对列和分区的操作
五 附录
1 http://www.clickhouse.com.cn/ clickhouse中文社区
2 DBeaver 可视化工具
3 https://tech.jikelab.com/labs-docs/zh-cn/docs/intro/quickstart.html JDP集群平台