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

Возможности различных типов таблиц

Ключевые столбцы и ключ сортировки

Таблица с Primary KeyТаблица с Duplicate KeyТаблица AggregateТаблица с Unique Key
Ключевые столбцы и ограничения UNIQUE Первичный ключ имеет ограничение UNIQUE и ограничение NOT NULL. Duplicate key не имеет ограничения UNIQUE. Aggregate key имеет ограничение UNIQUE. Unique key имеет ограничение UNIQUE.
Логические связи между ключевыми столбцами и изменениями данных Если значение первичного ключа новой строки данных совпадает с существующей строкой данных в таблице, происходит нарушение ограничения уникальности. Тогда новая строка данных заменит существующую строку данных.
По сравнению с таблицей Unique Key, таблица Primary Key имеет улучшенный базовый механизм хранения и поэтому может заменить таблицу Unique Key.
Duplicate key не имеет ограничения UNIQUE. Поэтому, если значение Duplicate Key новой строки данных совпадает с существующей строкой данных в таблице, обе новая и старая строки данных сохраняются в таблице. Если значение aggregate Key новой строки данных совпадает с существующей строкой данных в таблице, новая и старая строки данных будут агрегированы на основе aggregate key и агрегатных функций столбцов значений. Если значение unique key новой строки данных совпадает с существующей строкой данных в таблице, новая строка данных заменит существующую строку данных.
Таблицу Unique Key можно рассматривать как таблицу Aggregate, агрегатной функцией которой является replace.
Связь между ключевыми столбцами и ключом сортировкиНачиная с версии 1.5.0, ключ сортировки отделен от первичного ключа в таблице Primary Key.Начиная с версии 1.5.0, таблицы Duplicate Key поддерживают указание ключей сортировки с помощью ORDER BY. Если используются и ORDER BY, и DUPLICATE KEY, то ORDER BY имеет приоритет.Начиная с версии 1.5.0, ключ сортировки отделен от aggregate key в таблице Aggregate. Таблица Aggregate поддерживает указание ключа сортировки с помощью ORDER BY и указание aggregate key с помощью AGGREGATE KEY. Столбцы в ключе сортировки и aggregate key должны быть одинаковыми, но порядок столбцов не обязательно должен быть одинаковым.Начиная с версии 1.5.0, ключ сортировки отделен от unique key в таблице Unique Key. Таблица Unique Key поддерживает указание ключа сортировки с помощью ORDER BY и указание unique key с помощью UNIQUE KEY. Столбцы в ключе сортировки и unique key должны быть одинаковыми, но порядок столбцов не обязательно должен быть одинаковым.
Типы данных, поддерживаемые ключевыми столбцами и ключом сортировки Числовые (включая целые числа и BOOLEAN), строковые и дата (DATE и DATETIME). Числовые (включая целые числа, BOOLEAN и DECIMAL), строковые и дата (DATE и DATETIME).
Связь между ключевыми столбцами и столбцами партиционирования/бакетирования Столбцы партиционирования и бакетирования должны быть в первичном ключе. Нет Столбцы партиционирования и бакетирования должны быть в aggregate key. Столбцы партиционирования и бакетирования должны быть в unique key.

Типы данных ключевых столбцов и столбцов значений

Ключевые столбцы поддерживают следующие типы данных: числовые (включая целые числа, BOOLEAN и DECIMAL), строковые и дата (DATE и DATETIME).

примечание

Ключевые столбцы таблицы Primary Key не поддерживают тип данных DECIMAL.

С другой стороны, столбцы значений поддерживают базовые типы данных, включая числовые, строковые и дата (DATE и DATETIME). Поддержка BITMAP, HLL и полуструктурированных типов различается для столбцов значений разных типов таблиц, как подробно описано ниже:

Таблица с Primary KeyТаблица с Duplicate KeyТаблица AggregateТаблица с Unique Key
BITMAPПоддерживаетсяНе поддерживается Поддерживается. Агрегатные функции должны быть bitmap_union, replace или replace_if_not_null. Поддерживается
HLLПоддерживается Не поддерживается Поддерживается. Агрегатные функции должны быть hll_union, replace или replace_if_not_null. Поддерживается
PERCENTILEПоддерживается Не поддерживается Поддерживается. Агрегатные функции должны быть percentile_union, replace или replace_if_not_null. Поддерживается
полуструктурированные типы данных:JSON/ARRAY/MAP/STRUCTПоддерживается ПоддерживаетсяПоддерживается. Агрегатные функции должны быть replace или replace_if_not_null. Поддерживается

Изменение данных

Таблица с Primary KeyТаблица с Duplicate KeyТаблица AggregateТаблица с Unique Key
INSERT через загрузку данных Поддерживается. Настройте __op=0 в задании загрузки для выполнения INSERT.
Во внутренней реализации Selena рассматривает операции INSERT и UPDATE как операции UPSERT.
ПоддерживаетсяПоддерживается (Строки данных с одинаковым значением aggregate Key будут агрегированы.)Поддерживается (Строки данных с одинаковым значением unique key будут обновлены.)
UPDATE через загрузку данных Не поддерживается Поддерживается (Это можно достичь, используя replace в качестве агрегатной функции.) Поддерживается (Саму таблицу Unique Key можно рассматривать как таблицу Aggregate, использующую агрегатную функцию replace.)
DELETE через загрузку данных Поддерживается. Настройте __op=1 в задании загрузки для выполнения DELETE. Не поддерживается
Целостность значений столбцов данных для загрузки По умолчанию необходимо загружать все значения столбцов. Однако, если включено частичное обновление столбцов (partial_update), или столбец имеет значение по умолчанию, не все значения столбцов нужно загружать.По умолчанию необходимо загружать все значения столбцов. Однако, если столбец имеет значение по умолчанию, не все значения столбцов нужно загружать. По умолчанию необходимо загружать все значения столбцов. Однако таблицы Aggregate могут достичь частичного обновления столбцов, указав агрегатные функции для столбцов значений как REPLACE_IF_NOT_NULL. Подробности см. в aggr_type. Также, если столбец имеет значение по умолчанию, не все значения столбцов нужно загружать.По умолчанию необходимо загружать все значения столбцов. Однако, если столбец имеет значение по умолчанию, не все значения столбцов нужно загружать.
DML INSERTПоддерживается
DML UPDATE
  • Ключевые столбцы как условия фильтрации: Поддерживается
  • Столбцы значений как условия фильтрации: Поддерживается
Не поддерживается
DML DELETE
  • Ключевые столбцы как условия фильтрации: Поддерживается
  • Столбцы значений как условия фильтрации: Поддерживается
  • Ключевые столбцы как условия фильтрации: Поддерживается
  • Столбцы значений как условия фильтрации: Поддерживается
Обратите внимание, что поддерживаются только простые условия фильтрации на основе самих ключевых или столбцов значений, такие как =, <, >. Сложные условия фильтрации, такие как функции или подзапросы, не поддерживаются.
  • Ключевые столбцы как условия фильтрации: Поддерживается. Обратите внимание, что поддерживаются только простые условия фильтрации на основе самих ключевых столбцов, такие как =, <, >. Сложные условия фильтрации, такие как функции или подзапросы, не поддерживаются.
  • Столбцы значений как условия фильтрации: Не поддерживается.

Совместимость с другими функциями

Таблица с Primary KeyТаблица с Duplicate KeyТаблица AggregateТаблица с Unique Key
Bitmap index/bloom filter indexСоздание индексов на ключевых столбцахПоддерживается
Создание индексов на столбцах значенийПоддерживаетсяПоддерживаетсяНе поддерживаетсяНе поддерживается
Партиционирование/бакетированиеПартиционирование по выражениям/list partitioningПоддерживается
Случайное бакетированиеНе поддерживаетсяПоддерживается начиная с версии 1.5.0Не поддерживаетсяНе поддерживается
Материализованные представленияАсинхронные материализованные представленияПоддерживается
Синхронные материализованные представленияНе поддерживаетсяПоддерживаетсяПоддерживаетсяПоддерживается
Другие функцииCTASПоддерживаетсяПоддерживаетсяНе поддерживается Не поддерживается
Резервное копирование и восстановлениеПоддерживается начиная с версии 1.5.0Поддерживается