Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Типы столбцов собственного протокола

См. Типы данных для общей справки.

Type Encoding
Целые числа (Int/UInt) 8, 16, 32, 64, 128 или 256 бит в формате little-endian
Числа с плавающей точкой (Float32/Float64) Двоичное представление IEEE 754
String Массив строк в виде (len, value)
FixedString(N) Массив N-байтовых последовательностей
IPv4 Псевдоним для UInt32, представляется как UInt32
IPv6 Псевдоним для FixedString(16), представляется в двоичном виде
Tuple Массив столбцов, закодированных подряд. Пример: Tuple(String, UInt8) = два столбца подряд
Map Map(K, V) = три столбца: Offsets ColUInt64, Keys K, Values V. Число строк в Keys/Values = последнее значение Offsets
Array Array(T) = два столбца: Offsets ColUInt64, Data T. Число строк в Data = последнее значение Offsets
Nullable Nullable(T) = два столбца: Nulls ColUInt8, Values T с одинаковым числом строк. Nulls — это маска: 1=null, 0=value
UUID Псевдоним для FixedString(16), представляется в двоичном виде
Enum Псевдоним для Int8 или Int16, где каждому целому числу сопоставлено значение String
LowCardinality LowCardinality(T) = два столбца: Index T, Keys K, где K — UInt8/16/32/64. Index содержит уникальные значения, Keys содержит индексы в Index
Bool Псевдоним для UInt8: 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)
Navigation