Типы столбцов
См. раздел Типы данных для общей информации.
Числовые типы
Кодирование числовых типов соответствует расположению в памяти на процессорах с порядком байт little-endian, таких как AMD64 или ARM64.
Это позволяет реализовать очень эффективное кодирование и декодирование.
Целые числа
Последовательность значений Int и UInt размером 8, 16, 32, 64, 128 или 256 бит в формате little-endian.
Числа с плавающей запятой
Float32 и Float64 в двоичном представлении IEEE 754.
String
Просто массив строк (String), т. е. (len, value).
FixedString(N)
Массив последовательностей длиной N байт.
IP
IPv4 — это псевдоним числового типа UInt32 и хранится как значение UInt32.
IPv6 — это псевдоним FixedString(16) и хранится непосредственно в двоичном виде.
Tuple
Tuple — это просто массив столбцов. Например, Tuple(String, UInt8) — это просто два столбца, закодированные последовательно.
Map
Map(K, V) состоит из трёх столбцов: Offsets ColUInt64, Keys K, Values V.
Количество строк в столбцах Keys и Values соответствует последнему значению в Offsets.
Массив
Array(T) состоит из двух столбцов: Offsets ColUInt64, Data T.
Число строк в Data — это последнее значение в Offsets.
Nullable
Nullable(T) состоит из Nulls ColUInt8 и Values T с одинаковым количеством строк.
UUID
Псевдоним типа FixedString(16), значение UUID, хранящееся в бинарном виде.
Enum
Псевдоним типа Int8 или Int16, но каждому целому числу соответствует некоторое значение типа String.
Тип LowCardinality
LowCardinality(T) состоит из Index T, Keys K,
где K — один из (UInt8, UInt16, UInt32, UInt64) в зависимости от размера индекса Index.
Bool
Псевдоним для типа UInt8, где 0 — ложь, а 1 — истина.