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

Руководство по проектированию таблиц в 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Значительно снижает стоимость хранения