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

Обзор моделей таблиц

При создании таблицы в Doris необходимо указать модель таблицы, которая определяет, как данные хранятся, дедуплицируются, агрегируются и обновляются. Doris предоставляет три модели таблиц: модель Duplicate (Duplicate Key), модель Unique (Unique Key) и модель Aggregate (Aggregate Key). Они охватывают три типичных сценария: сохранение исходных данных, обновление по первичному ключу и анализ предварительно агрегированных данных. После создания таблицы изменить её модель нельзя, поэтому важно правильно её выбрать.

Выбор модели таблицы по сценарию​

Следующая таблица поможет быстро выбрать подходящую модель перед созданием таблицы:

Бизнес-сценарийРекомендуемая модельОсновные характеристики
Журналы, события, анализ поведения и другие сценарии, в которых нужно сохранять все исходные записиМодель Duplicate (Duplicate Key)Значения столбцов Key могут повторяться; подходит для запросов ad-hoc по любым измерениям
Таблицы измерений реального времени, заказы, профили пользователей и другие сценарии с обновлением по первичному ключуМодель Unique (Unique Key)Значения столбцов Key уникальны; для одного и того же Key сохраняются только последние данные
Сводные отчёты, статистика трафика и другие виды анализа с фиксированными измерениями, требующие предварительной агрегацииМодель Aggregate (Aggregate Key)Выполняет предварительную агрегацию по столбцам Key, сокращая объём сканирования и вычислений

Подробное описание трёх моделей таблиц​

Модель Duplicate Key​

  • Основной механизм: Значения указанных столбцов Key могут повторяться. Уровень хранения сохраняет все записанные данные без дедупликации и агрегации.
  • Сценарии применения: Сценарии, в которых необходимо сохранять все исходные записи, например журналы, подробные события и потоки данных о поведении пользователей.
  • Преимущества: Отсутствие ограничений, связанных с агрегацией, позволяет в полной мере использовать преимущества столбцового хранения. Запросы читают только нужные столбцы, без необходимости читать все столбцы Key, поэтому модель подходит для запросов ad-hoc по любым измерениям.
  • Ограничения: Не позволяет использовать ускорение запросов за счёт предварительной агрегации.
  • Подробнее: Модель Duplicate

Модель Unique Key​

  • Основной механизм: Значение Key каждой строки уникально. Уровень хранения сохраняет для каждого Key только последние записанные данные.
  • Сценарии применения: Сценарии, требующие уникальности первичного ключа и непрерывного обновления данных, например таблицы измерений реального времени, статусы заказов и профили пользователей.
  • Преимущества: Гарантирует уникальность первичного ключа, поддерживает операторы UPDATE и DELETE, а также обновление как всей строки, так и отдельных столбцов при загрузке данных.
  • Ограничения: Не позволяет использовать ускорение запросов за счёт механизмов предварительной агрегации, таких как ROLLUP.
  • Подробнее: Модель Unique

Модель Aggregate Key​

  • Основной механизм: Выполняет предварительную агрегацию столбцов Value по столбцам Key. Уровень хранения сохраняет только результаты агрегации.
  • Сценарии применения: Отчётные запросы с фиксированными измерениями, например сводные расчёты метрик, статистика трафика и агрегация кликов по рекламе.
  • Преимущества: Предварительная агрегация значительно сокращает объём сканируемых данных и вычислений при выполнении запросов.
  • Ограничения:
    • Плохо подходит для запросов count(*).
    • Способ агрегации столбцов Value задаётся при создании таблицы. При выполнении других типов запросов с агрегацией необходимо учитывать семантическую корректность.
  • Подробнее: Модель Aggregate
Частичное обновление столбцов

Модели Unique и Aggregate поддерживают частичное обновление столбцов. Рекомендации по использованию приведены в разделах Частичное обновление столбцов в модели Unique и Частичное обновление столбцов в модели Aggregate.

Ключ сортировки​

В Doris данные хранятся по столбцам, а столбцы таблицы делятся на две категории:

  • Столбцы Key: Используются для группировки и сортировки; явно указываются при создании таблицы.
  • Столбцы Value: Хранятся вместе со столбцами Key и используются для вычислений при агрегации.

Набор столбцов Key может состоять из одного или нескольких полей. Независимо от выбранной модели таблицы столбцы Key необходимо указать при создании таблицы. На уровне хранения данные сортируются и сохраняются по столбцам Key. Назначение столбцов Key немного различается в зависимости от модели:

Модель таблицыРоль столбцов Key
Модель Duplicate (Duplicate Key)Используются только для сортировки; уникальность не обеспечивается
Модель Unique (Unique Key)Сортировка и ограничение уникальности; используются для дедупликации по первичному ключу
Модель Aggregate (Aggregate Key)Сортировка и ограничение уникальности; используются для предварительной агрегации по Key

Преимущества продуманного ключа сортировки​

Продуманный ключ сортировки повышает производительность тремя способами:

  1. Ускоряет выполнение запросов: Ключ сортировки помогает сократить объём сканируемых данных. Запросы по диапазону или с фильтрацией могут находить данные непосредственно по ключу сортировки. Он также позволяет ускорить запросы, которым требуется сортировка.
  2. Улучшает сжатие данных: Ключ сортировки располагает похожие данные рядом, что значительно повышает коэффициент сжатия и сокращает объём занимаемого хранилища.
  3. Снижает затраты на дедупликацию: В модели Unique ключ сортировки позволяет Doris эффективнее устранять дубликаты первичных ключей и обеспечивать уникальность данных.

Рекомендации по выбору ключа сортировки​

При выборе столбцов Key придерживайтесь следующих принципов:

  • Столбцы Key должны располагаться перед всеми столбцами Value.
  • Отдавайте предпочтение целочисленным типам: Целые числа значительно эффективнее строк при вычислениях и поиске.
  • Выбирайте минимально необходимую разрядность целочисленного типа: Используйте целочисленный тип наименьшего размера, достаточного для диапазона значений, требуемого бизнесом.
  • Задавайте для VARCHAR и STRING только необходимую длину: Избегайте резервирования избыточной длины полей.

Сравнение возможностей моделей таблиц​

Следующая таблица обобщает различия между тремя моделями таблиц в части дедупликации, представлений, обновления и загрузки данных:

ВозможностьМодель DuplicateМодель UniqueМодель Aggregate
Ограничение уникальности столбцов KeyНе поддерживается; значения столбцов Key могут повторятьсяПоддерживаетсяПоддерживается
Синхронное материализованное представлениеПоддерживаетсяПоддерживаетсяПоддерживается
Асинхронное материализованное представлениеПоддерживаетсяПоддерживаетсяПоддерживается
Оператор UPDATEНе поддерживаетсяПоддерживаетсяНе поддерживается
Оператор DELETEПоддерживается частичноПоддерживаетсяНе поддерживается
Обновление всей строки при загрузке данныхНе поддерживаетсяПоддерживаетсяНе поддерживается
Частичное обновление столбцов при загрузке данныхНе поддерживаетсяПоддерживаетсяПоддерживается частично

Дальнейшие шаги​

Разобравшись в различиях между моделями, перейдите к подробной документации по каждой из них: