Обзор моделей таблиц
При создании таблицы в 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 |
Преимущества продуманного ключа сортировки
Продуманный ключ сортировки повышает производительность тремя способами:
- Ускоряет выполнение запросов: Ключ сортировки помогает сократить объём сканируемых данных. Запросы по диапазону или с фильтрацией могут находить данные непосредственно по ключу сортировки. Он также позволяет ускорить запросы, которым требуется сортировка.
- Улучшает сжатие данных: Ключ сортировки располагает похожие данные рядом, что значительно повышает коэффициент сжатия и сокращает объём занимаемого хранилища.
- Снижает затраты на дедупликацию: В модели Unique ключ сортировки позволяет Doris эффективнее устранять дубликаты первичных ключей и обеспечивать уникальность данных.
Рекомендации по выбору ключа сортировки
При выборе столбцов Key придерживайтесь следующих принципов:
- Столбцы Key должны располагаться перед всеми столбцами Value.
- Отдавайте предпочтение целочисленным типам: Целые числа значительно эффективнее строк при вычислениях и поиске.
- Выбирайте минимально необходимую разрядность целочисленного типа: Используйте целочисленный тип наименьшего размера, достаточного для диапазона значений, требуемого бизнесом.
- Задавайте для
VARCHARиSTRINGтолько необходимую длину: Избегайте резервирования избыточной длины полей.
Сравнение возможностей моделей таблиц
Следующая таблица обобщает различия между тремя моделями таблиц в части дедупликации, представлений, обновления и загрузки данных:
| Возможность | Модель Duplicate | Модель Unique | Модель Aggregate |
|---|---|---|---|
| Ограничение уникальности столбцов Key | Не поддерживается; значения столбцов Key могут повторяться | Поддерживается | Поддерживается |
| Синхронное материализованное представление | Поддерживается | Поддерживается | Поддерживается |
| Асинхронное материализованное представление | Поддерживается | Поддерживается | Поддерживается |
Оператор UPDATE | Не поддерживается | Поддерживается | Не поддерживается |
Оператор DELETE | Поддерживается частично | Поддерживается | Не поддерживается |
| Обновление всей строки при загрузке данных | Не поддерживается | Поддерживается | Не поддерживается |
| Частичное обновление столбцов при загрузке данных | Не поддерживается | Поддерживается | Поддерживается частично |
Дальнейшие шаги
Разобравшись в различиях между моделями, перейдите к подробной документации по каждой из них:
Модель Duplicate
Подробное описание модели Duplicate Key: синтаксис создания таблицы и поведение при записи. Подходит для сценариев, в которых нужно сохранять исходные записи, например журналы и события.
Модель Unique
Подробное описание модели Unique Key: дедупликация по первичному ключу, UPDATE/DELETE и частичное обновление столбцов. Подходит для сценариев с обновлением данных в реальном времени.
Модель Aggregate
Подробное описание модели Aggregate Key: механизм предварительной агрегации и выбор агрегатных функций. Подходит для анализа отчётности и сводных метрик.
Лучшие практики
Рекомендации по выбору модели таблицы, ограничения модели Aggregate и лучшие практики выбора столбцов Key и типов данных при создании таблицы.