メインコンテンツへスキップ
メインコンテンツへスキップ

ネイティブプロトコルのカラム型

一般的な事項については Data Types を参照してください。

ヒント

数値型のエンコーディングは、AMD64 や ARM64 のようなリトルエンディアン CPU のメモリレイアウトと一致しており、非常に効率的にエンコードおよびデコードできます。

TypeEncoding
Integers (Int/UInt)リトルエンディアンで表現される 8、16、32、64、128 または 256 ビット
Floats (Float32/Float64)IEEE 754 のバイナリ表現
String(len, value) 形式の文字列配列
FixedString(N)N バイトシーケンスの配列
IPv4UInt32 のエイリアスで、UInt32 として表現される
IPv6FixedString(16) のエイリアスで、バイナリとして表現される
Tuple連続してエンコードされたカラム配列。例: Tuple(String, UInt8) = 連続した 2 つのカラム
MapMap(K, V) = 3 つのカラム: Offsets ColUInt64, Keys K, Values V。Keys/Values の行数 = Offsets の最後の値
ArrayArray(T) = 2 つのカラム: Offsets ColUInt64, Data T。Data の行数 = Offsets の最後の値
NullableNullable(T) = 2 つのカラム: 同じ行数を持つ Nulls ColUInt8, Values T。Nulls はマスクで、1=null、0=value を表す
UUIDFixedString(16) のエイリアスで、バイナリとして表現される
EnumInt8 または Int16 のエイリアスで、各整数は String 値にマッピングされる
LowCardinalityLowCardinality(T) = 2 つのカラム: Index T, Keys K(K は UInt8/16/32/64)。Index はユニーク値を保持し、Keys は Index へのインデックスを保持
BoolUInt8 のエイリアス: 0=false、1=true

例: Nullable のエンコーディング

To encode [null, "", "hello", null, "world"]:
  Values: ["", "", "hello", "", "world"] (len: 5)
  Nulls:  [ 1,  0,       0,  1,       0] (len: 5)

例: LowCardinality エンコード

To encode ["Eko", "Eko", "Amadela", "Amadela", "Amadela", "Amadela"]:
  Index: ["Eko", "Amadela"] (String)
  Keys:  [0, 0, 1, 1, 1, 1] (UInt8)