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

Эбиа

www.ebia.ru

15
Amarket

Amarket

amarket.io

13
likearea

likearea

smm.li

12
RockinRobin

RockinRobin

www.rockinrobin.co

10
Битрикс24

Битрикс24

www.bitrix24.ru

10
KEPLER LEADS

KEPLER LEADS

keplerleads.com

10
Cookiezz

Cookiezz

cookiezz.com.ua

10
Megagroup

Megagroup

Создаем сайты и помогаем им зарабатывать

9
Tados

Tados

tados.ru

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

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

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