ClickHouse/docs/ja/native-protocol/columns.md
2024-11-18 11:58:58 +09:00

3.0 KiB

slug sidebar_position
/ja/native-protocol/columns 4

カラムタイプ

一般的な情報については、データタイプを参照してください。

数値タイプ

:::tip

数値タイプのエンコーディングは、AMD64やARM64のようなリトルエンディアンCPUのメモリレイアウトと一致しています。

これにより、非常に効率的なエンコーディングとデコーディングを実現できます。

:::

整数

IntとUIntの8, 16, 32, 64, 128または256ビットの文字列で、リトルエンディアン形式です。

浮動小数点数

IEEE 754のバイナリ表現でのFloat32とFloat64です。

文字列

単なる文字列の配列です。つまり、(len, value)。

FixedString(N)

Nバイトシーケンスの配列です。

IP

IPv4はUInt32数値型のエイリアスで、UInt32として表現されます。

IPv6はFixedString(16)のエイリアスで、バイナリで直接表現されます。

Tuple

Tupleは単にカラムの配列です。例えば、Tuple(String, UInt8)は2つのカラムが連続してエンコードされたものです。

Map

Map(K, V)は3つのカラムから成ります: Offsets ColUInt64, Keys K, Values V

KeysValuesカラムの行数はOffsetsの最後の値です。

配列

Array(T)は2つのカラムから成ります: Offsets ColUInt64, Data T

Dataの行数はOffsetsの最後の値です。

Nullable

Nullable(T)Nulls ColUInt8, Values Tという同じ行数を持つ内容で構成されています。

// NullsはValuesカラムに対するnullableの「マスク」です。
// 例えば、[null, "", "hello", null, "world"]をエンコードする場合
//	Values: ["", "", "hello", "", "world"] (len: 5)
//	Nulls:  [ 1,  0,       0,  1,       0] (len: 5)

UUID

FixedString(16)のエイリアスで、UUID値はバイナリで表現されます。

Enum

Int8またはInt16のエイリアスですが、それぞれの整数がいくつかのString値にマッピングされています。

Low Cardinality

LowCardinality(T)Index T, Keys Kから成り、KIndexのサイズに応じて(UInt8, UInt16, UInt32, UInt64)のいずれかです。

// インデックス(すなわち、Dictionary)カラムはユニークな値を含み、Keysカラムは
// インデックスカラムのインデックスのシーケンスを含み、それが実際の値を表します。
//
// 例えば、["Eko", "Eko", "Amadela", "Amadela", "Amadela", "Amadela"]は
// 以下のようにエンコードできます:
//	Index: ["Eko", "Amadela"] (String)
//	Keys:  [0, 0, 1, 1, 1, 1] (UInt8)
//
// CardinalityKeyはIndexサイズに応じて選択されます。選択されたタイプの最大値は、
// Index要素のインデックスを表現できる必要があります。

Bool

UInt8のエイリアスであり、0はfalse、1はtrueを表します。