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

Типы данных

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

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

Имя типаРазмер хранения (байт)Описание
BOOLEAN1Логическое значение. 0 означает false, 1 означает true.
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'.

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

Имя типаРазмер хранения (байт)Описание
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, автоматически выделяя поля 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_*.

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