Лучшие статьи и кейсы стартапов
Включить уведомления
Дадим сигнал, когда появится
что-то суперстоящее.
Спасибо, не надо
Вопросы Проекты Вакансии
Postgres Professional российский вендор PostgreSQL
Рекомендуем
Продвинуть свой проект
Лучшие проекты за неделю
39
Битрикс24

Битрикс24

www.bitrix24.ru

30
Отследить-посылку

Отследить-посылку

отследить-посылку.рф

13
WebResidentTeam

WebResidentTeam

webresident.agency

12
Логомашина

Логомашина

logomachine.ru

11
Devicerra

Devicerra

devicerra.com

11
Flowlu

Flowlu

flowlu.ru

10
GIFTD

GIFTD

giftd.tech

9
Aword

Aword

Приложение для изучения английских слов

9
ADN Digital Studio

ADN Digital Studio

adn.agency

9
Eczo.bike

Eczo.bike

www.eczo.bike

Показать следующие
Рейтинг проектов
Подписывайтесь на Спарк в Facebook

Релиз расширения pg_pathman 1.0.0

22 0 В избранное Сохранено
Авторизуйтесь
Вход с паролем
1 сентября 2016 наши разработчики выпустили в мир IT очень полезное расширение для СУБД PostgreSQL — модуль для эффективного, оптимизированного секционирования таблиц — pg_pathman 1.0.0.
Расширение pg_pathman 1.0.0 - это оптимизированный механизм секционирования и управления секциями.

ildarmusinanddimaivanov_sq1600.jpg           1 сентября 2016 наши разработчики выпустили в мир IT очень полезное расширение для СУБД PostgreSQL — модуль для эффективного, оптимизированного секционирования таблиц — pg_pathman 1.0.0.

          Работа над этим экстеншном велась с ноября 2015 года командой из трех наших программистов: Александром Коротковым, Ильдаром Мусиным и Дмитрием Ивановым. Хотя сама идея названия проекта принадлежит генеральному директору компании Postgres Professional — Олегу Бартунову. Для Дмитрия и Ильдара разработка модуля pg_pathman 1.0.0 стала боевым крещением на поле создания расширений для СУБД PostgreSQL. Этот момент был отмечен Олегом Бартуновым, и его поздравление в адрес разработчиков следует ниже:

ob_pgpathman_sq600.jpg

Олег Бартунов

генеральный директор компании
Postgres Professional


Поздравляю авторов, в первую очередь Ильдара Мусина и Диму Иванова!

          Я помню, как Ильдар только появился у нас в компании и я с Сашей Коротковым сразу же предложили ему поработать над правильным секционированием, прямо тогда же было придумано название pg_pathman. Ильдар сделал первую рабочую версию за несколько месяцев, потом к нему присоединился Дима, который разобрался с кастомными нодами и вдвоем у них работа пошла веселее. Ребята конкретно подросли и я считаю, что первоначальный трудный этап входа в разработку Постгреса они прошли.

Facebook


          Что же такое модуль pg_pathman, что он дает, зачем он нужен?

          Работая с большим количеством данных, которые постоянно растут, пользователи и администраторы СУБД рано или поздно сталкиваются с ситуаций, когда делать запрос к одной таблице содержащей все данные, становится неэффективно. Можно разделить таблицу на части по некоторому признаку — ключу, и работать уже с гораздо меньшим количеством данных. Это в некоторой степени ускоряет исполнение запросов. Такой метод называется "секционирование", и он не осуществляется в СУБД PostgreSQL непосредственно, а реализуется посредством механизма наследования при создании новой таблицы как дочерней по отношению к той, которую мы бы хотели поделить на части — на секции. К сожалению, при построении плана запроса PostgreSQL неизбежно выполняет полный перебор всех секций таблицы, поэтому традиционные методики секционирования не приносят значительного ускорения.

          Но теперь новое расширение для СУБД PostgreSQL — pg_pathman — предоставляет функции для создания и управления секциями, а также механизм секционирования, оптимизированный с учетом знания о структуре дочерних таблиц. Конфигурация сохраняется таблице pathman_config, каждая строка которой содержит запись для одной секционированной таблицы (название таблицы, атрибут и тип разбиения). В процессе инициализации pg_pathman кеширует конфигурацию дочерних таблиц в формате, удобном для быстрого поиска. Получив запрос типа SELECT к секционированной таблице, pg_pathman анализирует дерево условий запроса и выделяет из него условия вида:

ПЕРЕМЕННАЯ ОПЕРАТОР КОНСТАНТА

где ПЕРЕМЕННАЯ — это атрибут, по которому было выполнено разбиение, ОПЕРАТОР — оператор сравнения (поддерживаются =, =), КОНСТАНТА — скалярное значение. Например:

WHERE id = 150

          Затем основываясь на стратегии секционирования и условиях запроса pg_pathman находит в кеше соответствующие секции и строит план.

          В текущей версии pg_pathman поддерживает следующие типы секционирования:

  • RANGE — разбивает таблицу на секции по диапазонам ключевого аттрибута; для оптимизации построения плана используется метод бинарного поиска.
  • HASH — данные равномерно распределяются по секциям в соответствии со значениями hash-функции, вычисленными по заданному целочисленному атрибуту.

          На сегодняшний день расширение совместимо с PostgreSQL 9.5. Поддержка 9.6 будет добавлена в одном из ближайших обновлений.

          Подробнее о модуле pg_pathman 1.0.0 можно прочитать на странице README.rus.md в нашем репозитории на сервере GITHUB.com:

https://github.com > postgrespro > pg_pathman > README.rus.md

          Расширению pg_pathman будет посвящен доклад одного из его разработчиков — Александра Короткова — на «Профессиональной конференции разработчиков высоконагруженных систем HighLoad++2016» в ноябре этого года. Уже сейчас Вы можете ознакомиться с его тезисами:

«Долгожданный релиз pg_pathman 1.0»

hl2016_ak.png

Спикер: Александр Коротков | Postgres Professional

          Имеет статус PostgreSQL major constributor, разработал следующие фичи СУБД PostgreSQL: команда CREATE ACCESS METHOD, generic WAL интерфейс, lockfree Pin/UnpinBuffer, индексный поиск по регулярным выражениям в pg_trgm, сжатие и "быстрый поиск" по GIN индексам, буферизованный алгоритм построения и улучшенное разбиение страниц для GiST индексов, статистика и оценки селективности для массивов и диапазонных типов, улучшения в нечётком поиске строк, KNN-GiST с перепроверкой по heap. Защитил кандидатскую диссертацию, основанную на своём вкладе в развитие PostgreSQL.

Тезисы доклада :           Механизм секционирования в Postgres имеет ряд ограничений, которые не позволяют использовать концепцию секционирования в полной мере. Среди таких ограничений можно выделить неэффективность планирования запросов для секционированных таблиц (линейный рост времени планирования при увеличении количества секций), отсутствие HASH-секционирования, необходимость ручного управления секциями.
          В нашем докладе мы расскажем про расширение pg_pathman, которое позволяет обойти эти ограничения. pg_pathman реализует RANGE и HASH секционирования с логарифмическим и константным временами планирования соответственно. В pg_pathman поддерживается определение секции на этапе выполнения, конкурентное секционирование.
          pg_pathman долго находился в стадии beta-тестирования, но теперь мы рады, наконец, сообщить о релизе 1.0. В докладе мы расскажем как про детали внутреннего устройства, так и про приёмы практического использования.

Страница доклада на сайте HighLoad++2016

ildarmusinanddimaivanov_800x450.jpg

0
Добавить в избранное Сохранено
Авторизуйтесь
Вход с паролем
Комментариев еще не оставлено
Выбрать файл
Читайте далее
Загружаем…
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать