ネイティブプロトコルのカラム型
一般的なリファレンスについては、Data Typesを参照してください。
ヒント
数値型のエンコーディングは、AMD64 や ARM64 などのリトルエンディアン CPU のメモリレイアウトに一致しているため、非常に効率よくエンコードおよびデコードできます。
| Type | Encoding |
|---|---|
| 整数 (Int/UInt) | リトルエンディアンの 8、16、32、64、128、または 256 ビット |
| 浮動小数点数 (Float32/Float64) | IEEE 754 のバイナリ表現 |
| String | 文字列の配列。各要素は (len, value) |
| FixedString(N) | N バイトのシーケンスの配列 |
| IPv4 | UInt32 の別名で、UInt32 として表現されます |
| IPv6 | FixedString(16) の別名で、バイナリとして表現されます |
| Tuple | 連続してエンコードされたカラムの配列。例: Tuple(String, UInt8) = 連続する 2 つのカラム |
| Map | Map(K, V) = 3 つのカラム: Offsets ColUInt64, Keys K, Values V。Keys/Values の行数 = 最後の Offsets 値 |
| Array | Array(T) = 2 つのカラム: Offsets ColUInt64, Data T。Data の行数 = 最後の Offsets 値 |
| Nullable | Nullable(T) = 2 つのカラム: Nulls ColUInt8, Values T。行数は同じです。Nulls はマスクです: 1=null、0=value |
| UUID | FixedString(16) の別名で、バイナリとして表現されます |
| Enum | Int8 または Int16 の別名で、各整数が String 値に対応付けられます |
| LowCardinality | LowCardinality(T) = 2 つのカラム: Index T, Keys K。K は UInt8/16/32/64 です。Index には一意の値が含まれ、Keys には Index 内のインデックスが含まれます |
| Bool | UInt8 の別名: 0=false、1=true |
例: Nullable のエンコーディング
例: LowCardinality のエンコーディング