Обзор
Числовые типы
Doris поддерживает следующие числовые типы данных:
BOOLEAN
Возможны два значения: 0 означает ложь, а 1 — истину.
Подробнее см. BOOLEAN.
Целочисленные типы
Все целочисленные типы являются знаковыми. Типы INT различаются количеством занимаемых байтов и диапазоном представляемых значений:
-
TINYINT: 1 байт, [-128, 127]
-
SMALLINT: 2 байта, [-32768, 32767]
-
INT: 4 байта, [-2147483648, 2147483647]
-
BIGINT: 8 байтов, [-9223372036854775808, 9223372036854775807]
-
LARGEINT: 16 байтов, [-2^127, 2^127 - 1]
Типы с плавающей точкой
К ним относятся типы с плавающей точкой FLOAT и DOUBLE, которые не гарантируют точного представления значений и соответствуют типам float и double в распространённых языках программирования.
Типы с фиксированной точкой
Точный тип с фиксированной точкой DECIMAL используется в финансовых расчётах и других задачах, требующих строгой точности.
Типы даты и времени
К типам даты и времени относятся DATE, TIME, DATETIME, TIMESTAMP_NS и TIMESTAMPTZ. DATE хранит дату с точностью до дня. DATETIME хранит дату и время без часового пояса с точностью до микросекунд. TIMESTAMP_NS хранит дату и время без часового пояса с фиксированной наносекундной точностью в диапазоне от 1677 до 2262 года. TIME хранит только время и в настоящее время не поддерживает хранение в таблицах; его можно использовать только при обработке запросов. TIMESTAMPTZ — тип даты и времени с поддержкой часовых поясов, который хранит значения в UTC и автоматически преобразует их при выполнении запросов с учётом часового пояса сеанса.
Для вычислений с типами даты и времени или их преобразования в числовые типы используйте такие функции, как TIME_TO_SEC, DATE_DIFF, UNIX_TIMESTAMP. Корректность результата прямого преобразования в числовые типы не гарантируется.
Подробнее см. DATE, TIME, DATETIME, TIMESTAMP_NS и TIMESTAMPTZ.
Строковые типы
Doris поддерживает строки как фиксированной, так и переменной длины:
-
CHAR(M): строка фиксированной длины, где M — длина в байтах. Диапазон значений M: [1, 255].
-
VARCHAR(M): строка переменной длины, где M — максимальная длина. Диапазон значений M: [1, 65533].
-
STRING: строка переменной длины с максимальной длиной по умолчанию 1,048,576 байтов (1 MB). Эту максимальную длину можно увеличить до 2,147,483,643 байтов (2 GB), изменив параметр
string_type_length_soft_limit_bytes.
Двоичные типы
- VARBINARY: двоичная последовательность байтов переменной длины, где M — максимальная длина в байтах. Аналогичен VARCHAR, но хранение и сравнение выполняются побайтово, без использования набора символов и правил сортировки; подходит для хранения произвольных двоичных данных, например фрагментов файлов, зашифрованных или сжатых данных. Поддерживается с версии 4.0; в настоящее время не поддерживается при создании таблиц и хранении данных в Doris, однако с помощью Catalog можно отобразить в Doris столбцы BINARY из других баз данных и работать с ними.
Полуструктурированные типы
Doris поддерживает различные полуструктурированные типы данных для обработки JSON, каждый из которых предназначен для определённых сценариев использования.
-
ARRAY / MAP / STRUCT: поддерживают вложенные данные и фиксированную схему, поэтому хорошо подходят для аналитических задач, таких как анализ поведения и профилей пользователей, а также для запросов к данным в форматах озера данных, например Parquet. Благодаря фиксированной схеме отсутствуют накладные расходы на её динамическое определение, что обеспечивает высокую производительность записи и анализа.
-
VARIANT: поддерживает вложенные данные и гибкую схему. Хорошо подходит для аналитических задач, таких как анализ журналов, трассировок и данных IoT. Позволяет работать с любыми корректными данными JSON, которые автоматически разворачиваются в подстолбцы в колоночном формате хранения. Такой подход обеспечивает высокую степень сжатия при хранении и высокую производительность агрегации, фильтрации и сортировки данных.
-
JSON: поддерживает вложенные данные и гибкую схему. Оптимизирован для точечных запросов с высоким уровнем параллелизма. Гибкая схема позволяет загружать любые корректные данные JSON, которые сохраняются в двоичном формате. Извлечение полей из этого двоичного формата JSON выполняется более чем в 2 раза быстрее, чем при использовании обычных строк JSON.
Агрегатные типы
Агрегатные типы данных хранят результаты агрегации или промежуточные результаты, полученные в ходе агрегации. Они используются для ускорения запросов с большим объёмом агрегаций.
-
BITMAP: используется для точной дедупликации, например при подсчёте уникальных посетителей (UV) и сегментации аудитории. Применяется совместно с функциями BITMAP, такими как
bitmap_union,bitmap_union_count,bitmap_hashиbitmap_hash64. -
HLL: используется для приближённого подсчёта уникальных значений и обеспечивает более высокую производительность, чем
COUNT DISTINCT. Применяется совместно с функциями HLL, такими какhll_union_agg,hll_raw_agg,hll_cardinalityиhll_hash. -
QUANTILE_STATE: используется для приближённого вычисления процентилей и обеспечивает более высокую производительность, чем функция
PERCENTILE. Применяется совместно с такими функциями, какQUANTILE_PERCENT,QUANTILE_UNIONиTO_QUANTILE_STATE. -
AGG_STATE: используется для ускорения агрегаций в сочетании с комбинаторами агрегатных функций, такими как state/merge/union.
Типы IP
Типы данных IP хранят IP-адреса в двоичном формате, что обеспечивает более быстрое выполнение запросов и более экономное использование памяти по сравнению с хранением адресов в виде строк. Поддерживаются два типа данных IP:
- IPv4: хранит адреса IPv4 в виде 4-байтового двоичного значения. Применяется совместно с семейством функций
ipv4_*. - IPv6: хранит адреса IPv6 в виде 16-байтового двоичного значения. Применяется совместно с семейством функций
ipv6_*.
UUID
UUID — тип 128-битных идентификаторов с фиксированным размером хранения 16 байтов. Принимает текст в каноническом или компактном шестнадцатеричном представлении, выводит каноническое текстовое представление в нижнем регистре и поддерживает сравнение, сортировку, группировку и соединения.