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

Обзор

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

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:

  • IPv4: хранит адреса IPv4 в виде бинарного значения размером 4 байта. Используется совместно с семейством функций ipv4_*.
  • IPv6: хранит адреса IPv6 в виде бинарного значения размером 16 байт. Используется совместно с семейством функций ipv6_*.