Перейти к основному содержимому
Версия: 2.0.x

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

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

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

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

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

примечание

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

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

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

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

Primary Key tableDuplicate Key tableAggregate tableUnique Key table
Bitmap index/bloom filter indexСоздание индексов на ключевых столбцахПоддерживается
Создание индексов на столбцах значенийПоддерживаетсяПоддерживаетсяНе поддерживаетсяНе поддерживается
Партиционирование/bucketingПартиционирование по выражению/партиционирование спискомПоддерживается
Случайный bucketingНе поддерживаетсяПоддерживается начиная с версии 3.1Не поддерживаетсяНе поддерживается
Материализованные представленияАсинхронные материализованные представленияПоддерживается
Синхронные материализованные представленияНе поддерживаетсяПоддерживаетсяПоддерживаетсяПоддерживается
Другие функцииCTASПоддерживаетсяПоддерживаетсяНе поддерживается Не поддерживается
Backup & restoreПоддерживается начиная с версии 2.5Поддерживается