カラムの種類
一般的な参照についてはデータ型を参照してください。
数値型
数値型のエンコーディングは、AMD64やARM64のようなリトルエンディアンCPUのメモリレイアウトと一致します。
これにより、非常に効率的なエンコーディングとデコーディングが実現します。
整数
IntおよびUIntの8、16、32、64、128または256ビットの配列で、リトルエンディアンでエンコードされています。
浮動小数点数
IEEE 754バイナリ表現のFloat32およびFloat64です。
文字列
単なるStringの配列、すなわち(len, value)です。
FixedString(N)
Nバイトシーケンスの配列です。
IP
IPv4はUInt32
数値型のエイリアスで、UInt32として表現されます。
IPv6はFixedString(16)
のエイリアスで、バイナリとして直接表現されます。
タプル
タプルは単なるカラムの配列です。例えば、Tuple(String, UInt8)は連続してエンコードされた2つのカラムです。
マップ
Map(K, V)
は3つのカラムで構成されています: Offsets ColUInt64, Keys K, Values V
。
Keys
カラムとValues
カラムの行数はOffsets
の最後の値です。
配列
Array(T)
は2つのカラムで構成されています: Offsets ColUInt64, Data T
。
Data
の行数はOffsets
の最後の値です。
Nullable
Nullable(T)
はNulls ColUInt8, Values T
で構成され、同じ行数を持ちます。
UUID
FixedString(16)
のエイリアスで、UUID値はバイナリとして表現されます。
列挙型
Int8
またはInt16
のエイリアスですが、各整数はあるString
値にマッピングされます。
低カーディナリティ
LowCardinality(T)
はIndex T, Keys K
で構成され、
ここでK
はIndex
のサイズに応じて(UInt8, UInt16, UInt32, UInt64)のいずれかです。
ブール
UInt8
のエイリアスで、0
はfalse、1
はtrueです。