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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ключ партиционирования должен быть подмножеством первичного ключа. Например, первичным ключом может быть сочетание идентификатора записи и кода региона, ключом партиционирования — код региона, а диапазонами партиционирования — списки кодов регионов.

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

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

Модификация партиционированных данных

Модифицировать партиционированные данные можно любым из способов:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Запрос чтения или выгрузки данных из партиционированной таблицы должен содержать условие на основе столбцов ключа партиционирования, позволяющее однозначно определить партицию с подходящим диапазоном партиционирования. Возможные варианты условия: условие WHERE, условие JOIN-соединения или комбинация этих двух условий.

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

Чтение из нескольких партиций одновременно не поддерживается.

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

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

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

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

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

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

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

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

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