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

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

一般的なリファレンスについては、Data Typesを参照してください。

ヒント

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

TypeEncoding
整数 (Int/UInt)リトルエンディアンの 8、16、32、64、128、または 256 ビット
浮動小数点数 (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)