数据类型
SUPER 模拟 Arrays/Structs) ,
而这也一直是用户的常见痛点。ClickHouse 还允许持久化聚合
状态,无论是在查询时,还是直接存储在表中。
这使得数据可以预先聚合,通常是通过
materialized view 来实现,并且能够显著提升常见查询的性能。
下面我们将为每种 Redshift 类型映射其对应的 ClickHouse 类型:
UInt8, UInt32, UInt32 and UInt64。
**ClickHouse 的 String 类型默认长度不受限制,但也可以使用 约束 将其限定为特定长度。
DDL 语法
排序键
SORTKEY 子句来定义排序键:
ORDER BY 子句来指定排序方式:
COMPOUND 类型,就可以在 ClickHouse
中使用与 Redshift 相同的排序键列及其顺序。当数据写入 Redshift
后,你应运行 VACUUM 和 ANALYZE 命令,对新写入的数据重新排序,
并为查询规划器更新统计信息——否则,未排序空间会不断增长。ClickHouse
则不需要这一过程。
Redshift 为排序键提供了几项便捷功能。第一项是
自动排序键 (使用 SORTKEY AUTO) 。虽然这可能适合
入门使用,但如果排序键选择得当,显式指定排序键更能确保最佳性能
和存储效率。第二项是 INTERLEAVED 排序键,
它会对排序键中的部分列赋予相同权重,以提升
查询使用一个或多个次级排序列时的性能。ClickHouse
支持显式投影,通过略有不同的配置方式
即可达到相同效果。
你应当注意,“主键”这一概念
在 ClickHouse 和 Redshift 中所指并不相同。在 Redshift 中,主键类似于传统
RDBMS 中用于强制执行约束的概念。不过,它们在 Redshift 中并不会被严格
强制执行,而是作为查询规划器的提示,以及节点间数据
分布的依据。在 ClickHouse 中,主键表示用于构建
稀疏主索引的列,该索引用于确保数据在磁盘上有序存放,
从而最大限度提高压缩效果,同时避免主索引受到污染并
浪费内存。