Перейти к содержимому
Последнее обновление

Обзор

Числовые типы​

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 байтов. Принимает текст в каноническом или компактном шестнадцатеричном представлении, выводит каноническое текстовое представление в нижнем регистре и поддерживает сравнение, сортировку, группировку и соединения.