Партиционирование данных

Содержание раздела
  1. Управление партиционированием данных
  2. Возможности масштабирования данных
  3. Шардирование данных с помощью партиций
  4. Репликация партиционированных данных
  5. Ключи и диапазоны партиционирования
    1. Требования к ключам и диапазонам партиционирования
    2. Пример ключа и диапазонов партиционирования
  6. Как работает изменение партиционированных данных
    1. Изменение данных в партиционированной таблице
    2. Изменение данных в партиции
  7. Как работает чтение и выгрузка партиционированных данных
    1. Чтение и выгрузка данных из партиционированной таблицы
    2. Чтение и выгрузка данных из партиции
  8. Сочетание с retention-правилами

Партиционирование данных — распределение данных логической таблицы на подмножества (партиции). Партиционирование увеличивает эффективность работы с большим количеством данных за счет обращения к отдельным партициям, а не к полному объему данных таблицы.

Партиционирование доступно только для СУБД ADP.

Управление партиционированием данных

Партиционирование данных реализуется с помощью специальных логических таблиц — партиционированных таблиц и партиций — как описано в разделе Работа с системой > Управление партиционированием данных. Партиционированная таблица задает структуру и порядок распределения данных и предоставляет доступ к партициям, а партиции содержат сами данные. Партиционированная таблица может иметь неограниченное число партиций.

Партиционированная таблица и ее партиции должны принадлежать одной логической БД, а их структура должна полностью совпадать.

Работать с партиционированными данными — читать, выгружать, загружать и обновлять — можно как в партиционированных таблицах, так и напрямую в партициях.

Возможности масштабирования данных

Все партиции одной партиционированной таблицы могут размещаться в одном или разных датасорсах. Это позволяет организовать масштабирование следующих видов:

  • вертикальное — если все партиции размещаются в одном датасорсе,
  • горизонтальное — если партиции размещаются в разных датасорсах,
  • комбинированное — если часть партиций размещается в одном датасорсе, а часть партиций — в другом датасорсе.

На рисунке ниже показан пример горизонтального масштабирования, где каждая партиция партиционированной таблицы размещается в своем датасорсе.

Пример горизонтального масштабирования без репликации

Шардирование данных с помощью партиций

С помощью партиций также можно реализовать шардирование данных по разным серверам (инстансам) СУБД. Для этого следует разместить партиции в разных датасорсах, представляющих собой разные серверы СУБД.

Репликация партиционированных данных

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

На рисунке ниже показан пример размещения партиций двух партиционированных таблиц в разных датасорсах. Для всех партиций используется репликация данных: каждая из них размещается в двух датасорсах одновременно. Партиции каждой партиционированной таблицы выделены своим цветом.

Пример горизонтального масштабирования с репликацией данных

Ключи и диапазоны партиционирования

Каждая партиция партиционированной таблицы хранит свой набор записей с определенными значениями ключа партиционирования.

Состав ключа партиционирования задается при создании партиционированной таблицы, значения ключа партиционирования — при создании партиции. Значения ключа партиционирования, которые будут храниться в партиции, можно определить в виде одного или нескольких диапазонов значений (далее — диапазонов партиционирования).

Требования к ключам и диапазонам партиционирования

  • Ключ партиционирования должен быть подмножеством первичного ключа.
  • Диапазоны партиционирования всех партиций, относящихся к одной партиционированной таблице, должны быть заданы без пересечения значений.
  • Диапазоны одной партиции должны быть заданы без пересечения и примыкания значений.

Автоматическая проверка диапазонов партиционирования отсутствует. Все требования к диапазонам партиционирования должны быть реализованы на стороне внешней системы, использующей Prostore.

Пример ключа и диапазонов партиционирования

Первичным ключом партиционированной таблицы может быть, например, комбинация идентификатора записи и кода региона, ключом партиционирования — код региона, а диапазонами партиционирования партиций — списки кодов регионов. Пример таблиц с такими ключами и диапазонами см. в разделе CREATE TABLE > Партиционированные таблицы и партиции с распределением данных по регионам.

Как работает изменение партиционированных данных

Изменение данных в партиционированной таблице

При изменении данных в партиционированной таблице записи автоматически распределяются по партициям. Ко всем изменениям применяется фильтр: в каждой партиции сохраняются только те записи, которые принадлежат одному из диапазонов партиционирования этой партиции.

Данные, для которых не нашлось подходящей партиции, игнорируются системой.

На рисунке ниже показана схема распределения записей по партициям. Предполагается, что в записях 2, 3 и 5 значение ключа партиционирования принадлежит диапазонам партиционирования партиции 1, а в записях 1 и 4 — диапазонам партиции 3.

Изменение данных в партиционированной таблице

При записи данных в партиционированную таблицу система блокирует запросы на запись данных напрямую в партиции этой таблицы.

Изменение данных в партиции

При изменении данных напрямую в партиции записи попадают в указанную партицию. Ко всем изменениям применяется фильтр: в партиции сохраняются только те записи, которые принадлежат одному из диапазонов партиционирования этой партиции.

На рисунке ниже показана схема изменения данных напрямую в партиции. Предполагается, что только записи 1 и 4 принадлежат диапазонам партиционирования партиции 3, поэтому после применения фильтра остаются только они.

Изменение данных в партиции

При изменении данных в партиции система блокирует запросы на изменение данных в партиционированной таблице этой партиции. При этом другие партиции остаются доступными для записи данных.

Как работает чтение и выгрузка партиционированных данных

Чтение и выгрузка данных из партиционированной таблицы

При чтении и выгрузке данных из партиционированной таблицы запрос исполняется локально в каждом датасорсе, результаты объединяются и возвращаются в ответе как единый набор записей. Например, если в одном датасорсе запросу соответствует 1 запись, а в другом — 2 записи, то в ответе вернется 3 записи.

Подробнее о выборе датасорсов при чтении партиционированных данных см. в разделе Маршрутизация запросов к данным > Маршрутизация запросов к партиционированным таблицам.

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

Чтение и выгрузка данных из партиционированной таблицы

Чтение и выгрузка данных из партиции

При чтении и выгрузке данных напрямую из партиции данные выбираются из партиции, указанной в запросе.

На рисунке ниже показана схема чтения и выгрузки данных напрямую из партиции. Предполагается, что только записи 1 и 4 принадлежат указанной партиции 3, поэтому после применения фильтра выбираются только они.

Чтение и выгрузка данных из партиции

Сочетание с retention-правилами

Данные партиций могут остужаться или удаляться в соответствии с retention-правилами. Чтобы включить обработку неактуальных версий партиционированных данных по истечении срока их хранения, настройте retention-правило для каждой из партиций.

Настройка единого retention-правила сразу для всех партиций партиционированной таблицы недоступна.