Обзор
Числовые типы
Doris поддерживает следующие числовые типы данных:
BOOLEAN
Возможны два значения: 0 означает false, а 1 означает true.
Подробнее см. в разделе 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 и TIMESTAMPTZ. Тип DATE хранит только дату с точностью до дня, а тип DATETIME хранит дату и время с точностью до микросекунд. Тип TIME хранит только время и пока не поддерживается при создании таблиц и хранении данных, а может использоваться только при выполнении запросов. TIMESTAMPTZ представляет дату и время с учётом часового пояса: значения хранятся в UTC и автоматически преобразуются в соответствии с часовым поясом сеанса при выполнении запросов.
Для вычислений со значениями типов даты и времени или их преобразования в числовые типы используйте такие функции, как TIME_TO_SEC, DATE_DIFF, UNIX_TIMESTAMP. Корректность результата прямого преобразования этих значений в числовые типы не гарантируется.
Подробнее см. в документации по типам DATE, TIME, DATETIME и 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 можно сопоставлять столбцы BINARY из других баз данных для использования в Doris.
Полуструктурированные типы
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: