列式数据库管理系统
一、架构
CK 采用MPP
,全称为Massively Parallel Processor
,翻译过来就是大规模并行处理
MPP和MS(主从架构)的主要区别:MS有一台主服务器,其余的从服务器从主服务器读取数据。一旦主服务器崩溃,从服务器也会无法使用。
而MPP每一台都是平等的,所以每次建立集群要在所有的服务器节点建立。
二、数据结构
里面最重要的两点:
- nullable() 在CK中,对数据格式有严格限定。如果无法确定一定没有null的数据,必须使用nullable修饰。比如
nullable(string)
,而不可以直接string
- ck中没有double类型
三、引擎
- 引擎我认为就是进行计算的东西。CK最重要的是mergeTree引擎,下面还有ReplicatedMergeTree(分布式mergeTree),ReplacingMergeTree(去重MergeTree)。
- mergeTree引擎不支持insert
- 存储的数据排序后分片段是根据
主键
后内容,而非ORDER BY
。如果没有主键,就按照ORDER BY
后的内容组合进行排序 - 使用关键字
optimize final
进行去重,是对每个片段内进行去重,并不会对最终的结果进行去重。
optimize table test_tbl final;
如果想要再对结果去重,可以使用final
进行结果去重合并