2019-10-18
clickhouse
basic
-
分布式列数据库
-
集群规模线性扩展
-
多副本
定义分布式表需确定cluster name (system.cluster查看)
shards规则可选,随机rand(),按string字段sipHash(xxx)
推荐通过分布式表做查询,写入本地表
feature
-
多核硬件环境下,单个查询的并行处理
-
多个服务器环境下,分布式处理
-
适用于实时查询
-
宽表支持
-
几乎支持标准sql
-
近似计算
-
不同存储,各种mergeTree
-
适合结构日志、事件数据、时间序列数据(mergeTree存储需要数据域)
-
支持主键索引
-
数据副本间完整性支持
merge tree
GraphiteMergeTree
实时数据,按时间版本
ReplacingMergeTree
按主键去重
Concurrent Data Access
For concurrent table access, we use multi-versioning. In other words, when a table is simultaneously read and updated, data is read from a set of parts that is current at the time of the query. There are no lengthy locks. Inserts do not get in the way of read operations.
磁盘格式
-
/data
-
/db/table
-
/part-block_number-level
-
CheckSums.txt
-
Columns.txt
-
Primary.txt 主键索引文件
-
.mrk
-
.bin
-
-
-
-
View 增量 建议batch
query
array join 行列转换 (datatype=array)
server 扫描配置文件/30s
副本表
layer-shard/table,(replica)
zk
以part为粒度做merge,保证副本
autopurge.snapRetainCount
replica间同步merge,zk管理merge是否一致
避免小part
网友评论