zlukfo@gmail.com
  • Публикации
  • Темы
  • Ключевые слова
  • Архив

Postgresql: один способ организовать секционирование таблиц

Что такое секционирование, зачем оно нужно и как насторить, достаточно подробно описано здесь

В этой статье приводится один способ упросить процесс настройки секционирования. Собственно способ сводится к запуску python-скрипта, который

  • подключается к существующей БД postgresql (в скрипте задаются параметры подключения)
  • загружает шаблон sql-скрипта и подставляет в него необходимые параметры (см. ниже). Параметры задаются в python-скрипте.
  • выполняет sql-скрипт.

Условия и ограничения

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

Вся работа выполняется командами sql. Python-скрипт является всего лишь оболочкой для удобного ввода исходных значений и запуска sql-скрипта. В качестве исходных данных в python-скрипте нужно указать

  • '_schema_name_' - имя создаваемой схемы,
  • '_master_table_' - имя главной таблицы,
  • '_record_date_' - имя поля даты, по которому будет выполняться секционирование

Sql-скрипт выполняет следующие операции

  • создает в БД схему с именем '_schema_name_'
  • создает новую таблицу с именем '_master_table_'. !!! Это важный момент - необходимые поля для таблицы нужно указать самостоятельно прямо в шаблоне. Для поля с датой, по которому будет выполняться секционирование в качестве имени указать {{_record_date_}}
  • создает триггерную функцию и триггер.

Как это работает

  1. Перед каждым добавлением новой записи в таблицу '_master_table_' задействуется триггер, который:

а) сопоставляет значение даты для поля {{_record_date_}} с именем дочерней таблицы б) проверяет, существует ли дочерняя таблица с таким именем. Если не существует - создает ее в) добавляет новую запись в соотвествующую дочернюю таблицу

Исходный код можно скачать здесь.


Опубликовано

авг. 14, 2016

Тема

Базы данных

Ключевые слова

  • postgresql 8
  • zlukfo@gmail.com - Публикации на тему разработки web-приложений
  • Все авторские права защищены
  • Автор и разработчик блога zlukfo. Theme: Elegant by Talha Mansoor