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

Типы данных

Apache Doris поддерживает следующие типы данных:

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

Название типаРазмер хранения (байты)Описание
BOOLEAN1Логическое значение. 0 означает ложь, 1 означает истину.
TINYINT1Целое число со знаком, диапазон [-128, 127].
SMALLINT2Целое число со знаком, диапазон [-32768, 32767].
INT4Целое число со знаком, диапазон [-2147483648, 2147483647].
BIGINT8Целое число со знаком, диапазон [-9223372036854775808, 9223372036854775807].
LARGEINT16Целое число со знаком, диапазон [-2^127 + 1 ~ 2^127 - 1].
FLOAT4Число с плавающей точкой, диапазон [-3.410^38 ~ 3.410^38].
DOUBLE8Число с плавающей точкой, диапазон [-1.7910^308 ~ 1.7910^308].
DECIMAL4/8/16/32Число с фиксированной точкой высокой точности. Формат: DECIMAL(P[,S]). P задаёт общее число значащих цифр (точность), а S задаёт число цифр после десятичной точки (масштаб). Диапазон P: [1, MAX_P]. При enable_decimal256=false MAX_P=38; при enable_decimal256=true MAX_P=76. Диапазон S: [0, P].
По умолчанию значение enable_decimal256 равно false. Установка значения true обеспечивает более точные результаты, но требует дополнительных вычислительных ресурсов.
Размер хранения:
  • При 0 < precision <= 9 занимает 4 байта.
  • При 9 < precision <= 18 занимает 8 байт.
  • При 18 < precision <= 38 занимает 16 байт.
  • При 38 < precision <= 76 занимает 32 байта.

Типы даты и времени​

Название типаРазмер хранения (байты)Описание
DATE4Тип даты. Текущий диапазон значений: ['0000-01-01', '9999-12-31'], формат вывода по умолчанию: 'yyyy-MM-dd'.
DATETIME8Тип даты и времени. Формат: DATETIME([P]). Необязательный параметр P задаёт точность времени и принимает значения в диапазоне [0, 6], то есть поддерживается до 6 цифр дробной части секунды (микросекунды). Если параметр не задан, по умолчанию используется значение 0.
Диапазон значений: ['0000-01-01 00:00:00[.000000]', '9999-12-31 23:59:59[.999999]']. Формат вывода: 'yyyy-MM-dd HH:mm:ss.SSSSSS'.
TIMESTAMP_NS8Тип даты и времени без учёта часового пояса, с фиксированной наносекундной точностью. Диапазон значений: ['1677-09-21 00:12:43.145224192', '2262-04-11 23:47:16.854775807']. Формат вывода: 'yyyy-MM-dd HH:mm:ss.SSSSSSSSS'.

Строковые типы​

Название типаРазмер хранения (байты)Описание
CHARMСтрока фиксированной длины. M задаёт длину строки фиксированной длины в байтах. Диапазон M: 1-255.
VARCHARПеременныйСтрока переменной длины. M задаёт длину строки переменной длины в байтах. Диапазон M: 1-65533. Строки переменной длины хранятся в кодировке UTF-8, поэтому английский символ обычно занимает 1 байт, а китайский иероглиф занимает 3 байта.
STRINGПеременныйСтрока переменной длины. По умолчанию поддерживает 1048576 байт (1MB); максимальную длину можно увеличить до 2147483643 байт (2GB). Она настраивается с помощью параметра конфигурации BE string_type_length_soft_limit_bytes. Тип String можно использовать только в столбцах Value; его нельзя использовать в столбцах Key, а также в столбцах секционирования или распределения по бакетам.

Полуструктурированные типы​

Название типаРазмер хранения (байты)Описание
ARRAYПеременныйМассив, состоящий из элементов типа T. Не может использоваться в качестве столбца Key. В настоящее время поддерживается в таблицах моделей Duplicate и Unique.
MAPПеременныйОтображение, состоящее из элементов типов K и V. Не может использоваться в качестве столбца Key. В настоящее время поддерживается в таблицах моделей Duplicate и Unique.
STRUCTПеременныйСтруктура, состоящая из нескольких полей, которую также можно рассматривать как набор столбцов. Не может использоваться в качестве Key. В настоящее время STRUCT поддерживается только в таблицах модели Duplicate. Имена и количество полей в Struct фиксированы, а сами поля всегда имеют свойство Nullable.
JSONПеременныйДвоичный тип JSON. Хранится в двоичном формате JSON, а доступ к внутренним полям JSON осуществляется с помощью функций JSON. Ограничение длины и способ настройки такие же, как у String.
VARIANTПеременныйДинамически изменяемый тип данных, предназначенный для полуструктурированных данных, таких как JSON. Может хранить произвольный JSON, автоматически выделяя его поля в отдельные подстолбцы для хранения, что повышает эффективность хранения и производительность аналитических запросов. Ограничение длины и способ настройки такие же, как у String. Тип Variant можно использовать только в столбцах Value; его нельзя использовать в столбцах Key, а также в столбцах секционирования или распределения по бакетам.

Агрегатные типы​

Название типаРазмер хранения (байты)Описание
HLLПеременныйHLL используется для приближённой дедупликации. При большом объёме данных его производительность выше, чем у Count Distinct. Погрешность HLL обычно составляет около 1%, а иногда достигает 2%. HLL нельзя использовать в качестве столбца Key, а при создании таблицы необходимо указать тип агрегации HLL_UNION. Пользователям не требуется указывать длину и значение по умолчанию. Система сама управляет длиной в зависимости от степени агрегации данных. Запрашивать или использовать столбцы HLL можно только с помощью соответствующих функций hll_union_agg, hll_raw_agg, hll_cardinality и hll_hash.
BITMAPПеременныйСтолбцы типа Bitmap можно использовать в таблицах моделей Aggregate, Unique и Duplicate. В таблицах моделей Unique и Duplicate они должны быть столбцами, не входящими в Key. В таблицах модели Aggregate они также должны быть столбцами, не входящими в Key, а при создании таблицы необходимо указать тип агрегации BITMAP_UNION. Пользователям не требуется указывать длину и значение по умолчанию. Система сама управляет длиной в зависимости от степени агрегации данных. Запрашивать или использовать столбцы BITMAP можно только с помощью соответствующих функций bitmap_union_count, bitmap_union, bitmap_hash, bitmap_hash64 и других функций.
QUANTILE_STATEПеременныйQUANTILE_STATE используется для вычисления приближённых значений квантилей. При загрузке он предварительно агрегирует различные значения Value для одного и того же Key. Если число значений не превышает 2048, все данные сохраняются подробно. Если число значений превышает 2048, для агрегации (кластеризации) данных используется алгоритм TDigest, а после кластеризации сохраняются центроиды. QUANTILE_STATE нельзя использовать в качестве столбца Key, а при создании таблицы необходимо указать тип агрегации QUANTILE_UNION. Пользователям не требуется указывать длину и значение по умолчанию. Система сама управляет длиной в зависимости от степени агрегации данных. Запрашивать или использовать столбцы QUANTILE_STATE можно только с помощью соответствующих функций QUANTILE_PERCENT, QUANTILE_UNION, TO_QUANTILE_STATE и других функций.
AGG_STATEПеременныйАгрегатная функция. Может использоваться только совместно с комбинаторами функций state/merge/union. AGG_STATE нельзя использовать в качестве столбца Key, а при создании таблицы также необходимо объявить сигнатуру агрегатной функции. Пользователям не требуется указывать длину и значение по умолчанию. Фактический размер хранимых данных зависит от реализации функции.

Типы IP​

Название типаРазмер хранения (байты)Описание
IPv44 байтаХранит адрес IPv4 в виде 4 байт двоичных данных, используется совместно с семейством функций ipv4_*.
IPv616 байтХранит адрес IPv6 в виде 16 байт двоичных данных, используется совместно с семейством функций ipv6_*.

UUID​

Название типаРазмер хранения (байты)Описание
UUID16Нативный 128-битный идентификатор, отображаемый в каноническом текстовом виде со строчными буквами.

Все типы данных, поддерживаемые Apache Doris, также можно просмотреть с помощью оператора SHOW DATA TYPES;.