Типы колонок
Смотрите Типы данных для общего справочника.
Числовые типы
Кодирование числовых типов соответствует размещению в памяти процессоров little endian, таких как AMD64 или ARM64.
Это позволяет реализовать очень эффективное кодирование и декодирование.
Целые числа
Строка Int и UInt размером 8, 16, 32, 64, 128 или 256 бит, в little endian.
Числа с плавающей точкой
Float32 и Float64 в двоичном представлении IEEE 754.
Строка
Просто массив строк, т.е. (len, value).
FixedString(N)
Массив последовательностей длиной N байт.
IP
IPv4 является псевдонимом числового типа UInt32 и представлен как UInt32.
IPv6 является псевдонимом FixedString(16) и представлен как двоичное значение напрямую.
Кортеж
Кортеж — это просто массив колонок. Например, 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, при этом каждое целое число соответствует какому-то строковому значению.
Тип LowCardinality
LowCardinality(T) состоит из Index T, Keys K, где K — это один из (UInt8, UInt16, UInt32, UInt64) в зависимости от размера Index.
Bool
Псевдоним UInt8, где 0 — это false, а 1 — это true.