ネイティブプロトコルのカラム型
一般的な事項については Data Types を参照してください。
ヒント
数値型のエンコーディングは、AMD64 や ARM64 のようなリトルエンディアン CPU のメモリレイアウトと一致しており、非常に効率的にエンコードおよびデコードできます。
| Type | Encoding |
|---|---|
| Integers (Int/UInt) | リトルエンディアンで表現される 8、16、32、64、128 または 256 ビット |
| Floats (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 エンコード