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

Руководство по проектированию таблиц в Apache Doris

В Apache Doris проектирование таблиц напрямую определяет производительность записи, эффективность запросов и стоимость хранения. Эта глава построена вокруг типичных сценариев проектирования и поможет вам создать таблицу с нуля или оптимизировать структуру существующей таблицы.

Порядок проектирования​

Проектирование таблицы в Doris обычно включает следующие шаги:

  1. Выберите модель таблицы: определите, как данные будут храниться, дедуплицироваться и агрегироваться.
  2. Определите столбцы и типы данных: выберите подходящие типы для полей ваших бизнес-данных.
  3. Спланируйте партиционирование и бакетирование: обеспечьте равномерное распределение данных и возможность отсечения ненужных данных.
  4. Добавьте индексы: ускорьте точечные запросы, сканирование диапазонов или полнотекстовый поиск.
  5. Оптимизируйте хранение: сократите затраты за счёт сжатия, гибридного строчно-столбцового хранения или разделения горячих и холодных данных по уровням хранения.
  6. Адаптируйте схему: изменяйте схему или используйте столбцы с автоинкрементом по мере изменения бизнес-требований.

Создание таблицы​

Для создания таблицы в Doris используйте оператор CREATE TABLE. Чтобы создать новую таблицу на основе существующей, можно использовать:

Правила именования таблиц​

По умолчанию имена таблиц в Doris чувствительны к регистру, а их максимальная длина составляет 64 байта. Это поведение можно настроить с помощью следующих параметров:

ПараметрЗначение по умолчаниюОписание
lower_case_table_namesС учётом регистраЗадаётся только при первичной инициализации кластера; впоследствии изменить нельзя
table_name_length_limit64 байтаНе рекомендуется задавать слишком большое значение

Основные свойства таблицы​

При создании таблицы можно указать часто используемые свойства в PROPERTIES. Подробнее см. CREATE TABLE:

СвойствоНазначение
bucketsОпределяет гранулярность распределения данных внутри таблицы
storage_mediumЗадаёт носитель или тип хранилища, например HDD, SSD или удалённое общее хранилище
replication_numЗадаёт количество реплик данных для обеспечения избыточности и надёжности
storage_policyНастраивает политику миграции горячих и холодных данных между уровнями хранения
подсказка

Свойства таблицы применяются на уровне партиций. Изменение свойств таблицы действует только на партиции, созданные после изменения; существующие партиции не затрагиваются. Подробнее см. ALTER TABLE PROPERTY и ALTER TABLE DISTRIBUTION. При динамическом партиционировании эти свойства можно задавать отдельно.

Выбор модели таблицы​

Определение столбцов и типов данных​

Планирование партиционирования и бакетирования​

Принципы распределения данных

Узнайте, как партиционирование и бакетирование распределяют данные по tablet, чтобы в полной мере использовать ресурсы хранения и вычислений нескольких узлов

Основные понятия

Объяснение основных терминов распределения данных, включая партицию, бакет, tablet и реплику

Ручное партиционирование

Явно задавайте диапазоны партиций при создании таблицы; подходит для сценариев с фиксированными партициями и потребностью в точном управлении

Динамическое партиционирование

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

Автоматическое партиционирование

Автоматически создавайте партиции на основе поступающих данных без необходимости заранее задавать диапазоны партиций

Бакетирование данных

Выберите подходящие столбцы бакетирования и количество бакетов, чтобы данные равномерно распределялись внутри партиций

Распространённые проблемы

Типичные ошибки при проектировании партиционирования и бакетирования и способы их устранения

Ускорение запросов: индексы​

Оптимизация хранения​

Изменение схемы​

Специальные таблицы и рекомендации​

Что учитывать при проектировании​

Аспект проектированияОписаниеВлияние
Модель данныхНельзя изменить после создания таблицы; заранее выберите подходящую модель данныхОпределяет дальнейшие способы записи данных и выполнения запросов
Количество бакетовКоличество бакетов в уже созданных партициях нельзя изменить напрямую, но его можно скорректировать с помощью замены партиций; при динамическом партиционировании можно изменить количество бакетов для будущих партицийВлияет на равномерность распределения данных и параллелизм запросов
Изменения столбцовДобавление или удаление столбцов VALUE является легковесной операцией (выполняется за секунды); добавление или удаление столбцов KEY либо изменение типов данных является тяжеловесной операциейПо возможности избегайте изменения столбцов KEY в больших наборах данных
Политика храненияИспользуйте разделение горячих и холодных данных по уровням хранения для переноса холодных данных на HDD, в S3 или HDFSЗначительно снижает стоимость хранения