列类型
有关通用说明,请参阅 数据类型。
数值类型
数值类型的编码与 AMD64 或 ARM64 等小端 CPU 的内存布局相同。
这使得可以实现非常高效的编码和解码。
整数
8、16、32、64、128 或 256 位的小端序 Int 和 UInt 类型表示。
浮点数
IEEE 754 二进制表示的 Float32 和 Float64。
String
本质上就是一个由 String 构成的数组,即 (len, value)。
FixedString(N)
由 N 字节长序列构成的数组。
IP
IPv4 是 UInt32 数值类型的别名,并以 UInt32 形式表示。
IPv6 是 FixedString(16) 的别名,并直接以二进制形式表示。
Tuple
Tuple 只是一个由列组成的数组。比如,Tuple(String, UInt8) 就是两个按顺序连续编码的列。
Map
Map(K, V) 由三列组成:Offsets ColUInt64、Keys K、Values V。
Keys 和 Values 列中的行数等于 Offsets 列中的最后一个值。
Array
Array(T) 由两列组成:Offsets ColUInt64, Data T。
Data 中的行数等于 Offsets 中的最后一个值。
Nullable
Nullable(T) 由 Nulls ColUInt8 和 Values T 构成,且二者的行数相同。
UUID
FixedString(16) 的别名,UUID 值以二进制形式表示。
Enum
Int8 或 Int16 的别名,但每个整数都会映射到某个 String 类型的值。
LowCardinality 类型
LowCardinality(T) 由 Index T 和 Keys K 组成,
其中 K 是 (UInt8, UInt16, UInt32, UInt64) 之一,具体取决于 Index 的大小。
Bool
是 UInt8 的别名,其中 0 表示 false,1 表示 true。