Postgres вчера, сегодня, завтра Олег Бартунов (obartunov@postgrespro.ru), Postgres Professional, ГАИШ МГУ DUMP, 8 апреля 2016, Екатеринбург
Что такое PostgreSQL PostgreSQL - это свободно распространяемая объектно-реляционная СУБД (ORDBMS) Расширяемая — типы данных, операторы, функции, индексы Поддержка ANSI SQL (1992, 1999, 2003, 2011), NoSQL (key-value, JSON, JSONB) Разрабатывается независимым мировым сообществом с существенным российским участием Произношение: post-gress-Q-L, post-gres, пост-грес, pgsql (пэ-жэ-эс-ку-эль) Web: http://www.postgresql.org, лицензия: BSD, MIT - like Российский вендор - компания Postgres Professional
Важнейшие свойства PostgreSQL Надежность и устойчивость PostgreSQL Надежность PostgreSQL является известным и доказанным фактом на примере многих проектов, в которых PostgreSQL работает без единого сбоя и при больших нагрузках на протяжении нескольких лет. Кроссплатформенность PostgreSQL поддерживает все виды Unix, включая Linux, FreeBSD, Solaris, HPUX, Mac OS X, а также MS Windows. Конкурентная работа при большой нагрузке PostgreSQL использует многоверсионность (MVCC) для обеспечения надежной и быстрой работы в конкурентных условиях под большой нагрузкой. Масштабируемость PostgreSQL отлично использует современную архитектуру многоядерных процессоров - его производительность растет линейно до 64-х ядер. Кластерные решения на базе Postgres XL обеспечивают горизонтальную масштабируемость. Расширяемость Расширяемость PostgreSQL позволяет добавлять новую функциональность, в том числе и новые типы данных, без остановки сервера и своими силами. Доступность PostgreSQL распространяется под лицензией BSD, которая не накладывает никаких ограничений на коммерческое использование и не требует лицензионных выплат. Вы можете даже продавать PostgreSQL под своим именем ! Независимость PostgreSQL не принадлежит ни одной компании, он развивается международным сообществом, в том числе и российскими разработчиками. Независимость PostgreSQL означает независимость вашего бизнеса от вендора и сохранность инвестиций. Превосходная поддержка Сообщество PostgreSQL предоставляет квалифицированную и быструю помощь. Коммерческие компании предлагают свои услуги по всему миру.
Пользователи PostgreSQL ПРФ, Московская Область, РосАтом, МО, Роснефть, МКС, РИА
История PostgreSQL Michael Stonebreaker Turing Award, 2015 1992 QUEL System R IBM INteractive Graphics REtrieval System INGRES UC Berkeley 1973 Ingres Co CA Ingres r3 1979-1982 1994 2004 SQL1978 1979 INFORMIX1984 NonStop SQL 1984-1987 1985-1988 Postgres 1993 V4.2 1989 V1 Postgres95 SQL 1994 V5 MS SQL 1993 1995 19921987 ASE $$$$$$$$$ $$$$$$$$$ 1983 ORACLE RDb/VMS 1994 SDL, RSI 1979 1984 $$$ $$$ $$$ $$$ -------- CODD 1969,1970 Relational model SQL/DS DB2 2001 1983 $$$ 1981 1974-1975 PostgreSQL 2015 9.5
Форки PostgreSQL 2002 2006 2010 2012 20142004 2008 Aster Data Terradata TruCQ Cisco Greenplum Enterprise Postgres Fujtsu GresCube HadoopDB Hadapt Terradata Netezza IBM TelegraphCQ ParAccel Red Shift Amazon PipelineDB Postgres-XC Postgres-XL PowerGres RecDB Vertica HP EnterpriseDB Yahoo! Everest 2015 Коммерческая СУБД СПО https://wiki.postgresql.org/wiki/PostgreSQL_derived_databases Postgres-X2 Greenplum CitusDB 2016 CitusDB
Этапы развития PostgreSQL Стабилизация работыСтабилизация работы Совместимость с SQL стандартами Совместимость с SQL стандартами Возможности уровня Enterprise / простота использования Возможности уровня Enterprise / простота использования 1996 1998 2001 2016 Базовая функциональность JDBC MVCC Optimizer Stats PL/pgSQL Стабилизация Исправление сбоев в работе Очистка кода Культура совершенства Стандарты SQL 92 Joins Prepared queries Foreign Keys Функциональность ядра Write Ahead Log Prepared Queries Info. Schema Auto Vacuum Возможности уровня Enterprise Потоковая репликация Производительность Вертикальное масштабирование PITR pg_upgrade NoSQL BDR Параллелизм Простота использования Портирование на Windows pg_basebackup Различные инструменты
Вертикальная масштабируемость http://habrahabr.ru/company/postgrespro/blog/270827/
Версии PostgreSQL (~300)
Цикл разработки ● 1-30 сентября 2015 : CF 1 ● 1-30 ноября 2015 : CF 2 ● 2 января — 8 февраля 2016: CF 3 ● 7 января 2016 : 9.5 Release ● 1-31 марта 2016 : Финальный CF для 9.6 ● 8 апреля : Feature Freeze ● Июнь 2016 : 9.6 beta ● Сентябрь 2016 : 9.6 release ● 1-30 сентября 2016 : CF 1 для 9.7 ….
Свежие новости PostgreSQL 9.5 ● Upsert ● Row Level Security ● BRIN index ● Ускоренная сортировка (abbreviated keys) ● Grouping sets, cube, rollup (многоуровневые агрегаты) ● Улучшение FDW (JOIN pushdown, import schema) ● Table sample UNFORK ● Citus DB – распределенная СУБД в виде extension ● GreenPlum – на пути к этому
Что нас ждет «завтра» 9.6 ? ● Параллельное исполнение запросов (sequence scan, join, aggregate) ● Улучшение работы VACUUM с большими таблицами ● Улучшение FDW (push down join, DML, sort) ● CREATE ACCESS METHOD, GENERIC WAL • Возможность создания полноценные методы доступа как расширения ! • Миллисекундный полнотекстовый поиск (с 2012 года !) • CREATE INDEX … USING RUM ! ● Улучшение полнотекстового поиска — поиск фраз, улучшена поддержка словарей, tsvector editing functions ● ev,sv — редактирование и показ представлений ● KNN для CUBE ● Многоколоночная статистика ● Wait monitoring ● Покрывающие (covering) индексы ? ● Параллельное создание GIN-индексов ? ● Масштабирование на большое количество ядер ?
Завтра. Параллельный seqscan
Завтра. Параллельная агрегация
Завтра (9.6). DBA ● Немного счастья для DBA – VACUUM FREEZE не будет трогать уже «замороженные» блоки — сильное облегчение для больших и нагруженных проектов – idle_in_transaction_session_timeout - решает проблему «idle in transaction" – a generic command progress reporting facility – simple VACUUM progress reporting — можно следить за выполнением вакуума pg_stat_progress_vacuum – per-tablespace effective_io_concurrency – Поддержка нескольких синхронных реплик – Новый режим синхронной репликации - 'remote_apply'
Завтра (9.6). DBA Представление pg_config
● Wait monitoring ● pg_wait_sampling (http://akorotkov.github.io/blog/2016/08/26/wait_monitoring_9_6/)
Что будет в 10.0 ? ● BDR — двунаправленная репликация http://2ndquadrant.com/en/resources/bdr/ ● Pglogical (5x быстрее slony, londiste3) http://2ndquadrant.com/en/resources/pglogical/ ● Declarative partitioning (+pg_pathman) ● Highly Available multimaster «из коробки» ● Инкрементальный бэкап на уровне блоков ● FDW pushdown aggregates ● Миллисекундный полнотекстовый поиск ● In-memory хранилище ● Хранение временных объектов в памяти • временные таблицы на слейве
Почему PostgreSQL «наш»
Российские разработчики PostgreSQL CORE • MVCC • WAL • Subselects • Vacuum • Transactions Isolation • Triggers Вадим Михеев, Красноярск (PostgreSQL CORE MEMBER)
21 Российские разработчики Олег Бартунов, Федор Сигаев, Александр Коротков PostgreSQL CORE ● Locale support ● PostgreSQL extendability: GiST(KNN), GIN, SP-GiST ● Full Text Search (FTS) ● NoSQL (hstore, jsonb) ● Indexed regexp search ● Custom AM & Generic WAL ● VODKA access method (WIP) Расширения: ● Intarray ● Pg_trgm ● Ltree ● Hstore ● plantuner ● Докладчики PGCon, PGConf: 20+ докладов ● Менторы GSoC ● Коммитеры PostgreSQL (1+1 in progress) ● Организаторы конференций ● 50+ лет экспертизы PostgreSQL: разработка, аудит, консалтинг ● Novartis, Raining Data, Heroku, Engine Yard, WarGaming, Rambler, Avito, 1c
PostgreSQL Developers Meeting, 2015, Ottawa, Canada Трое российских разработчиков участвуют в совещании разработчиков
20 лет развития постгреса Функциональность 1995 2000 2005 2010 2015 Postgres95 1stcommit PostgreSQL 1й российский патч интернационализация Триггеры Изоляциятранзакций MVCC WAL GIN HStore FTS KNN GiST SP-GiST JSONB Create AM Generic WAL PITR Streaming rep Sync rep Cascading rep Logical decoding GiST XML CTE FDW Windows JSON RLS, Upsert parallel exec, FDW pushdown CitusDB unfork Greenplum 10.0? 9.6 9.5 9.0 8.0 7.0 6.0 Lateral HOT Mat VIEW IOS SSI Exclusion constraints
Создание компании Postgres Professional Январь-апрель 2015 г. Раньше: Postgres использовали на свой страх, риск и в удовольствие. Теперь: Есть российская компания — вендор, обладающая компетенцией разработчиков.
Postgres Professional Российский вендор PostgreSQL в России ● Поддержка, разработка, консалтинг, обучение ● Тему технологической независимости СУБД пропагандируем с 2011 г. ● Члены международного сообщества ● Участники и спонсоры международных конференций (Канада, Австрия, Бразилия) ● PgConf.Russia 2015 и 2016 - крупнейшие в мире конференция по PostgreSQL В направлениях, где мы ведем разработку, PostgreSQL является лидером* среди РСУБД ● геоинформационные системы, слабоструктурированные данные, полнотекстовый поиск, расширяемость Все российские ключевые международно признанные разработчики PostgreSQL работают в нашей компании В нашей команде 4 кандидата наук: 3 – по PostgreSQL и технологиям БД. Сотрудничаем с МГУ и СПбГУ.
Postgres Professional NY 2016
Импортозамещение
Импортозамещение
Технологическая независимость
Технологическая независимость Мировая тенденция к открытым решениям
Пирамида «импортозамещения» Хороший Open Source продукт (Postgres) Существенный российский вклад Рост компетенции Экосистема отрасли Импортозамещение Технологическая независимость Конкурентоспособность на мировом рынке
Год жизни компании 2015 Февраль. Регистрация компании Апрель. Начало работы Июнь. Первое место среди проектов по импортозамещению СУБД Первая крупная разработка — мониторинг ожиданий Июль. Сборки под Windows и 1С Июль. Готов курс DBA1. Октябрь. Достижение 2 млн транзакций в секунду на Power 8 2016 Январь. Готов курс DBA2 Выпуск PostgresPro 9.5.0.1 Февраль. PgConf.Russia 2016 Март. Выпуск PostgresPro 9.5.1.2 Вхождение в Единый реестр российского ПО Апрель. Выпуск PostgresPro 9.5.2.1 7 докладов на международных конференциях (PGCon, PGConf) 20 докладов на российских Конференциях 65 патчей в ядро PostgreSQL 9.6
Российская СУБД Postgres Pro Postgres Pro = PostgreSQL + … 1) Более ранний доступ к новым разработкам (в первую очередь, российским) 2) Поддержка со стороны российской компании- разработчика 3) Присутствие в Едином Реестре Российского ПО Открытая версия ● Open Source ● BSD-подобная лицензия Закрытая версия ● Соответствие российским требованиям ИБ ● Сертификация ФСТЭК (5 НСД, 4 НДВ) — в процессе ● Более высокие уровни — в планах
Что такое Postgres Pro ? 1.Российский форк PostgreSQL, вошедший в Реестр Российского ПО 2.Наши разработки ядра PostgreSQL, которые ещё не успели войти в релиз, но закоммичены в апстрим 3.Бэкпорты из 9.6, которые мы считаем полезными 4.Полезные расширения (не только наши) 5.Возможность оперативно реагировать на запросы клиентов Postgres Pro предоставляет доступ к новой функциональности и улучшениям раньше, и позволяет быстрее реагировать на запросы клиентов
Что еще есть в Postgres Pro ? ● Увеличение производительности на многоядерных системах: ● Улучшение полнотекстового поиска: поиск фраз, словарь=extension, словари в shared memory ● Покрывающие индексы. Поддержка конструкции INCLUDES в CREATE INDEX. https://pgconf.ru/2016/89847 ● Переносимость: ICU ● Модуль pg_trgm: нечеткий поиск подстроки ● Модуль pageinspect: доступ к внутреннему представлению данных ● Модуль sr_plan: сохранение планов запросов ● Модуль dump_stat: дамп и восстановление статистики ● Модуль JSQuery ● Мониторинг ожиданий (WAIT-мониторинг с сэмплингом) ● Libpq с поддержкой failover
Скоро в Postgres Pro (9.5.*) ● Секционирование таблиц без накладных расходов ● Инкрементальный бэкап на уровне блоков ● Компрессия B-Tree индексов ● Миллисекундный полнотекстовый поиск (на основе CREATE ACCESS METHOD и GENERIC WAL) https://wiki.postgresql.org/images/2/25/Full-text_search_in_PostgreSQL_in_milliseconds -extended-version.pdf ● Мониторинг ожиданий http://akorotkov.github.io/blog/2016/08/26/wait_monitoring_9_6/ , http://www.postgresql.org/docs/devel/static/monitoring-stats.html#WAIT-EVENT-TABLE
Секционирование
Секционирование Уже сделано в Postgres Pro (расширение pg_pathman): ● Хранение метаданных секций с бинарный поиск по при планировании запроса ● Select, Insert, Update, Delete ● RANGE partitioning До сих пор: ● Делается через наследование таблиц (мега-костыль ?) ● Работает неэффективно
Секционирование (планы на 9.7) ● Выбор секций во время выполнения запроса ● Упорядоченная выдача выборок из секций для ускорения Merge join и сортировки. ● Оптимизация Hash join при секционировании по ключу JOIN ● LIST-partitioning ● HASH-partitioning ● Декларативный синтаксис (совместно с NTT)
Секционирование Время планирования при попадании в план одной секции. Обычная реализация на основе наследования таблиц страдает большими накладными расходами. pg_pathman свободен от них.
Секционирование Производительность SELECT, INSERT, UPDATE pg_partman — наследование таблиц pg_pathman — разработка Postgres Pro Подробности: https://pgconf.ru/2016/89633 http://akorotkov.github.io/blog/categories/partitioning/ http://postgrespro.ru/blog/pgsql/pg_pathman
Образовательная деятельность DBA1 Июль, Август Москва 12-14.10 Барнаул 10-12.11 Ульяновск 2-4.12 Омск 16-18.12 Тверь 23-25.12 Улан Удэ 12-14.03.2016 Казань, 28-30.03 Новосибирск Тюмень Санкт-Петербург Челябинск УЦ «Форс» DBA2 9,16.02 Яндекс 25.02 ГАИШ Hacking PostgreSQL С 25.02.2016 Яндекс Технологии СУБД 2016-2017 уч. Год СПбГУ Заинтересовались: МГУ, Киров, Омск, Челябинск, Барнаул, ВШЭ, МЭСИ, УрФУ, Красноярск https://www.postgrespro.ru/education DEV1, DEV2, сертификация ….
План разработок Postgres Pro :2019 ● HA Мультимастер ● Доработки безопасности для сертификации на высокие уровни секретности ● Инкрементальный и частичный бэкап ● Секционирование (partitioning) ● Управление планами запросов ● Планировщик заданий ● Расширяемые индексные методы доступа ● Эффективное хранение временных объектов ● Компрессия данных ● Сбор детальной статистики и метрик мониторинга ● Средства упрощения миграции с Oracle ● Средства управления СУБД ● CREATE INDEX USING RUM (GIN2) ● Advanced multicore parallelism ● Incremental materialized views ● Облачная версия СУБД ● Запись и воспроизведение нагрузки ● Удобный и расширяемый синтаксис для поиска и обновления JSON ● Эффективная работа с массивами, интервалами и иерархическими данными ● Распараллеливание запросов в мультимастере ● Улучшения планировщика (корреляции, планирование на этапе выполнения) ● Улучшения сборки и тестирования (CMake, unit-тесты)
План разработок Postgres Pro :2019 ● Advanced FTS (быстрый поиск, обратная задача, конф. парсер, TF/IDF) ● Индексы с быстрой вставкой и обновлением ● Адаптивное построение запросов с помощью машинного обучения ● JIT компиляция ● Sharding ● Эффективная работа с неточными, битемпоральными, сферическими, timeseries данными ● Индесная поддержка для расширяемого синтаксиса JSON ● Эффективная поддержка NUMA ● Распределённая система тестирования ● Альтернативные табличные движки: columnar, in-memory ● Сжатие передаваемых данных ● Оптимизация работы с диском (double buffering, SSD) ● Система тестирования производительности (TPC-* из коробки) ● CREATE INDEX USING VODKA ● In-memory columnar storage ● Sharding с автоматическим распределением по узлам ● Мониторинг кластера ● Асинхронный протокол взаимодействия ● Встроенный балансировщик нагрузки и пул коннектов ● Поддержка тета-соединений ● Эффективная встроенная очередь ● Оптимизация работы с SSD
Мы ищем таланты ● Разработчики, инженеры, QA, PM, технические писатели, стажеры (студенты), люди науки • Работать в команде, «жить» в сообществе • Уметь и любить учиться • Любить вызовы • Держать цель ● Возможна удаленная работа
Российское сообщество ● Самое организованное — несколько тысяч человек ● Митапы при поддержки крупных компаний ● Крупнейшие в мире конференции по постгресу: ● летом PGDay.ru в Санкт-Петербурге (2014, 2015, 2016) ● Зимой PGConf.ru в Москве (2015, 2016) ● Секции и квартирники на крупнейших конференциях ● Highload++, RIT, Codefest, Stachka ● Участвуем в международных конференциях ● PGConf.EU, PGCon.org ● Свободные курсы DBA1, DBA2, «Hacking Postgres» от Postgres Professional
50 способов помочь сообществу
50 способов помочь сообществу Ядро Разработка, review, тестирование, reporting bugs Экосистема Расширения, драйверы, ORM, средства мониторинга… поддержка Pg в прикладном ПО Создание дистрибутивов, пакетирование Документация Улучшение, перевод, публикация статей, книг, учебных, маркетинговых материалов…блоггинг! Расскажите о своей истории с PostgreSQL! Общение, образование Создание локальных сообществ Проведение конференций, митапов, семинаров, учебных курсов. Внедрите PostgreSQL! В Вашей компании. Запустите учебный курс в Вашем ВУЗе Спонсорство Спонсируйте разработку нужной Вам функциональности. Спонсируйте мероприятие.
СПАСИБО ЗА ВНИМАНИЕ !
www.postgrespro.ru РОССИЯ.ПОСТГРЕС.НАДЕЖДА.
VODKA Optimized Dendriform Keys Array

PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Москва

  • 1.
    Postgres вчера, сегодня,завтра Олег Бартунов (obartunov@postgrespro.ru), Postgres Professional, ГАИШ МГУ DUMP, 8 апреля 2016, Екатеринбург
  • 2.
    Что такое PostgreSQL PostgreSQL- это свободно распространяемая объектно-реляционная СУБД (ORDBMS) Расширяемая — типы данных, операторы, функции, индексы Поддержка ANSI SQL (1992, 1999, 2003, 2011), NoSQL (key-value, JSON, JSONB) Разрабатывается независимым мировым сообществом с существенным российским участием Произношение: post-gress-Q-L, post-gres, пост-грес, pgsql (пэ-жэ-эс-ку-эль) Web: http://www.postgresql.org, лицензия: BSD, MIT - like Российский вендор - компания Postgres Professional
  • 3.
    Важнейшие свойства PostgreSQL Надежностьи устойчивость PostgreSQL Надежность PostgreSQL является известным и доказанным фактом на примере многих проектов, в которых PostgreSQL работает без единого сбоя и при больших нагрузках на протяжении нескольких лет. Кроссплатформенность PostgreSQL поддерживает все виды Unix, включая Linux, FreeBSD, Solaris, HPUX, Mac OS X, а также MS Windows. Конкурентная работа при большой нагрузке PostgreSQL использует многоверсионность (MVCC) для обеспечения надежной и быстрой работы в конкурентных условиях под большой нагрузкой. Масштабируемость PostgreSQL отлично использует современную архитектуру многоядерных процессоров - его производительность растет линейно до 64-х ядер. Кластерные решения на базе Postgres XL обеспечивают горизонтальную масштабируемость. Расширяемость Расширяемость PostgreSQL позволяет добавлять новую функциональность, в том числе и новые типы данных, без остановки сервера и своими силами. Доступность PostgreSQL распространяется под лицензией BSD, которая не накладывает никаких ограничений на коммерческое использование и не требует лицензионных выплат. Вы можете даже продавать PostgreSQL под своим именем ! Независимость PostgreSQL не принадлежит ни одной компании, он развивается международным сообществом, в том числе и российскими разработчиками. Независимость PostgreSQL означает независимость вашего бизнеса от вендора и сохранность инвестиций. Превосходная поддержка Сообщество PostgreSQL предоставляет квалифицированную и быструю помощь. Коммерческие компании предлагают свои услуги по всему миру.
  • 4.
    Пользователи PostgreSQL ПРФ, МосковскаяОбласть, РосАтом, МО, Роснефть, МКС, РИА
  • 5.
    История PostgreSQL Michael Stonebreaker TuringAward, 2015 1992 QUEL System R IBM INteractive Graphics REtrieval System INGRES UC Berkeley 1973 Ingres Co CA Ingres r3 1979-1982 1994 2004 SQL1978 1979 INFORMIX1984 NonStop SQL 1984-1987 1985-1988 Postgres 1993 V4.2 1989 V1 Postgres95 SQL 1994 V5 MS SQL 1993 1995 19921987 ASE $$$$$$$$$ $$$$$$$$$ 1983 ORACLE RDb/VMS 1994 SDL, RSI 1979 1984 $$$ $$$ $$$ $$$ -------- CODD 1969,1970 Relational model SQL/DS DB2 2001 1983 $$$ 1981 1974-1975 PostgreSQL 2015 9.5
  • 6.
    Форки PostgreSQL 2002 20062010 2012 20142004 2008 Aster Data Terradata TruCQ Cisco Greenplum Enterprise Postgres Fujtsu GresCube HadoopDB Hadapt Terradata Netezza IBM TelegraphCQ ParAccel Red Shift Amazon PipelineDB Postgres-XC Postgres-XL PowerGres RecDB Vertica HP EnterpriseDB Yahoo! Everest 2015 Коммерческая СУБД СПО https://wiki.postgresql.org/wiki/PostgreSQL_derived_databases Postgres-X2 Greenplum CitusDB 2016 CitusDB
  • 7.
    Этапы развития PostgreSQL СтабилизацияработыСтабилизация работы Совместимость с SQL стандартами Совместимость с SQL стандартами Возможности уровня Enterprise / простота использования Возможности уровня Enterprise / простота использования 1996 1998 2001 2016 Базовая функциональность JDBC MVCC Optimizer Stats PL/pgSQL Стабилизация Исправление сбоев в работе Очистка кода Культура совершенства Стандарты SQL 92 Joins Prepared queries Foreign Keys Функциональность ядра Write Ahead Log Prepared Queries Info. Schema Auto Vacuum Возможности уровня Enterprise Потоковая репликация Производительность Вертикальное масштабирование PITR pg_upgrade NoSQL BDR Параллелизм Простота использования Портирование на Windows pg_basebackup Различные инструменты
  • 8.
  • 9.
  • 10.
    Цикл разработки ● 1-30сентября 2015 : CF 1 ● 1-30 ноября 2015 : CF 2 ● 2 января — 8 февраля 2016: CF 3 ● 7 января 2016 : 9.5 Release ● 1-31 марта 2016 : Финальный CF для 9.6 ● 8 апреля : Feature Freeze ● Июнь 2016 : 9.6 beta ● Сентябрь 2016 : 9.6 release ● 1-30 сентября 2016 : CF 1 для 9.7 ….
  • 11.
    Свежие новости PostgreSQL 9.5 ●Upsert ● Row Level Security ● BRIN index ● Ускоренная сортировка (abbreviated keys) ● Grouping sets, cube, rollup (многоуровневые агрегаты) ● Улучшение FDW (JOIN pushdown, import schema) ● Table sample UNFORK ● Citus DB – распределенная СУБД в виде extension ● GreenPlum – на пути к этому
  • 12.
    Что нас ждет«завтра» 9.6 ? ● Параллельное исполнение запросов (sequence scan, join, aggregate) ● Улучшение работы VACUUM с большими таблицами ● Улучшение FDW (push down join, DML, sort) ● CREATE ACCESS METHOD, GENERIC WAL • Возможность создания полноценные методы доступа как расширения ! • Миллисекундный полнотекстовый поиск (с 2012 года !) • CREATE INDEX … USING RUM ! ● Улучшение полнотекстового поиска — поиск фраз, улучшена поддержка словарей, tsvector editing functions ● ev,sv — редактирование и показ представлений ● KNN для CUBE ● Многоколоночная статистика ● Wait monitoring ● Покрывающие (covering) индексы ? ● Параллельное создание GIN-индексов ? ● Масштабирование на большое количество ядер ?
  • 13.
  • 14.
  • 15.
    Завтра (9.6). DBA ●Немного счастья для DBA – VACUUM FREEZE не будет трогать уже «замороженные» блоки — сильное облегчение для больших и нагруженных проектов – idle_in_transaction_session_timeout - решает проблему «idle in transaction" – a generic command progress reporting facility – simple VACUUM progress reporting — можно следить за выполнением вакуума pg_stat_progress_vacuum – per-tablespace effective_io_concurrency – Поддержка нескольких синхронных реплик – Новый режим синхронной репликации - 'remote_apply'
  • 16.
  • 17.
    ● Wait monitoring ●pg_wait_sampling (http://akorotkov.github.io/blog/2016/08/26/wait_monitoring_9_6/)
  • 18.
    Что будет в10.0 ? ● BDR — двунаправленная репликация http://2ndquadrant.com/en/resources/bdr/ ● Pglogical (5x быстрее slony, londiste3) http://2ndquadrant.com/en/resources/pglogical/ ● Declarative partitioning (+pg_pathman) ● Highly Available multimaster «из коробки» ● Инкрементальный бэкап на уровне блоков ● FDW pushdown aggregates ● Миллисекундный полнотекстовый поиск ● In-memory хранилище ● Хранение временных объектов в памяти • временные таблицы на слейве
  • 19.
  • 20.
    Российские разработчики PostgreSQL CORE •MVCC • WAL • Subselects • Vacuum • Transactions Isolation • Triggers Вадим Михеев, Красноярск (PostgreSQL CORE MEMBER)
  • 21.
    21 Российские разработчики Олег Бартунов,Федор Сигаев, Александр Коротков PostgreSQL CORE ● Locale support ● PostgreSQL extendability: GiST(KNN), GIN, SP-GiST ● Full Text Search (FTS) ● NoSQL (hstore, jsonb) ● Indexed regexp search ● Custom AM & Generic WAL ● VODKA access method (WIP) Расширения: ● Intarray ● Pg_trgm ● Ltree ● Hstore ● plantuner ● Докладчики PGCon, PGConf: 20+ докладов ● Менторы GSoC ● Коммитеры PostgreSQL (1+1 in progress) ● Организаторы конференций ● 50+ лет экспертизы PostgreSQL: разработка, аудит, консалтинг ● Novartis, Raining Data, Heroku, Engine Yard, WarGaming, Rambler, Avito, 1c
  • 22.
    PostgreSQL Developers Meeting,2015, Ottawa, Canada Трое российских разработчиков участвуют в совещании разработчиков
  • 23.
    20 лет развитияпостгреса Функциональность 1995 2000 2005 2010 2015 Postgres95 1stcommit PostgreSQL 1й российский патч интернационализация Триггеры Изоляциятранзакций MVCC WAL GIN HStore FTS KNN GiST SP-GiST JSONB Create AM Generic WAL PITR Streaming rep Sync rep Cascading rep Logical decoding GiST XML CTE FDW Windows JSON RLS, Upsert parallel exec, FDW pushdown CitusDB unfork Greenplum 10.0? 9.6 9.5 9.0 8.0 7.0 6.0 Lateral HOT Mat VIEW IOS SSI Exclusion constraints
  • 24.
    Создание компании PostgresProfessional Январь-апрель 2015 г. Раньше: Postgres использовали на свой страх, риск и в удовольствие. Теперь: Есть российская компания — вендор, обладающая компетенцией разработчиков.
  • 25.
    Postgres Professional Российский вендорPostgreSQL в России ● Поддержка, разработка, консалтинг, обучение ● Тему технологической независимости СУБД пропагандируем с 2011 г. ● Члены международного сообщества ● Участники и спонсоры международных конференций (Канада, Австрия, Бразилия) ● PgConf.Russia 2015 и 2016 - крупнейшие в мире конференция по PostgreSQL В направлениях, где мы ведем разработку, PostgreSQL является лидером* среди РСУБД ● геоинформационные системы, слабоструктурированные данные, полнотекстовый поиск, расширяемость Все российские ключевые международно признанные разработчики PostgreSQL работают в нашей компании В нашей команде 4 кандидата наук: 3 – по PostgreSQL и технологиям БД. Сотрудничаем с МГУ и СПбГУ.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
    Пирамида «импортозамещения» Хороший OpenSource продукт (Postgres) Существенный российский вклад Рост компетенции Экосистема отрасли Импортозамещение Технологическая независимость Конкурентоспособность на мировом рынке
  • 32.
    Год жизни компании 2015 Февраль.Регистрация компании Апрель. Начало работы Июнь. Первое место среди проектов по импортозамещению СУБД Первая крупная разработка — мониторинг ожиданий Июль. Сборки под Windows и 1С Июль. Готов курс DBA1. Октябрь. Достижение 2 млн транзакций в секунду на Power 8 2016 Январь. Готов курс DBA2 Выпуск PostgresPro 9.5.0.1 Февраль. PgConf.Russia 2016 Март. Выпуск PostgresPro 9.5.1.2 Вхождение в Единый реестр российского ПО Апрель. Выпуск PostgresPro 9.5.2.1 7 докладов на международных конференциях (PGCon, PGConf) 20 докладов на российских Конференциях 65 патчей в ядро PostgreSQL 9.6
  • 33.
    Российская СУБД PostgresPro Postgres Pro = PostgreSQL + … 1) Более ранний доступ к новым разработкам (в первую очередь, российским) 2) Поддержка со стороны российской компании- разработчика 3) Присутствие в Едином Реестре Российского ПО Открытая версия ● Open Source ● BSD-подобная лицензия Закрытая версия ● Соответствие российским требованиям ИБ ● Сертификация ФСТЭК (5 НСД, 4 НДВ) — в процессе ● Более высокие уровни — в планах
  • 34.
    Что такое PostgresPro ? 1.Российский форк PostgreSQL, вошедший в Реестр Российского ПО 2.Наши разработки ядра PostgreSQL, которые ещё не успели войти в релиз, но закоммичены в апстрим 3.Бэкпорты из 9.6, которые мы считаем полезными 4.Полезные расширения (не только наши) 5.Возможность оперативно реагировать на запросы клиентов Postgres Pro предоставляет доступ к новой функциональности и улучшениям раньше, и позволяет быстрее реагировать на запросы клиентов
  • 35.
    Что еще естьв Postgres Pro ? ● Увеличение производительности на многоядерных системах: ● Улучшение полнотекстового поиска: поиск фраз, словарь=extension, словари в shared memory ● Покрывающие индексы. Поддержка конструкции INCLUDES в CREATE INDEX. https://pgconf.ru/2016/89847 ● Переносимость: ICU ● Модуль pg_trgm: нечеткий поиск подстроки ● Модуль pageinspect: доступ к внутреннему представлению данных ● Модуль sr_plan: сохранение планов запросов ● Модуль dump_stat: дамп и восстановление статистики ● Модуль JSQuery ● Мониторинг ожиданий (WAIT-мониторинг с сэмплингом) ● Libpq с поддержкой failover
  • 36.
    Скоро в PostgresPro (9.5.*) ● Секционирование таблиц без накладных расходов ● Инкрементальный бэкап на уровне блоков ● Компрессия B-Tree индексов ● Миллисекундный полнотекстовый поиск (на основе CREATE ACCESS METHOD и GENERIC WAL) https://wiki.postgresql.org/images/2/25/Full-text_search_in_PostgreSQL_in_milliseconds -extended-version.pdf ● Мониторинг ожиданий http://akorotkov.github.io/blog/2016/08/26/wait_monitoring_9_6/ , http://www.postgresql.org/docs/devel/static/monitoring-stats.html#WAIT-EVENT-TABLE
  • 37.
  • 38.
    Секционирование Уже сделано вPostgres Pro (расширение pg_pathman): ● Хранение метаданных секций с бинарный поиск по при планировании запроса ● Select, Insert, Update, Delete ● RANGE partitioning До сих пор: ● Делается через наследование таблиц (мега-костыль ?) ● Работает неэффективно
  • 39.
    Секционирование (планы на9.7) ● Выбор секций во время выполнения запроса ● Упорядоченная выдача выборок из секций для ускорения Merge join и сортировки. ● Оптимизация Hash join при секционировании по ключу JOIN ● LIST-partitioning ● HASH-partitioning ● Декларативный синтаксис (совместно с NTT)
  • 40.
    Секционирование Время планирования при попаданиив план одной секции. Обычная реализация на основе наследования таблиц страдает большими накладными расходами. pg_pathman свободен от них.
  • 41.
    Секционирование Производительность SELECT, INSERT, UPDATE pg_partman— наследование таблиц pg_pathman — разработка Postgres Pro Подробности: https://pgconf.ru/2016/89633 http://akorotkov.github.io/blog/categories/partitioning/ http://postgrespro.ru/blog/pgsql/pg_pathman
  • 42.
    Образовательная деятельность DBA1 Июль, Август Москва 12-14.10Барнаул 10-12.11 Ульяновск 2-4.12 Омск 16-18.12 Тверь 23-25.12 Улан Удэ 12-14.03.2016 Казань, 28-30.03 Новосибирск Тюмень Санкт-Петербург Челябинск УЦ «Форс» DBA2 9,16.02 Яндекс 25.02 ГАИШ Hacking PostgreSQL С 25.02.2016 Яндекс Технологии СУБД 2016-2017 уч. Год СПбГУ Заинтересовались: МГУ, Киров, Омск, Челябинск, Барнаул, ВШЭ, МЭСИ, УрФУ, Красноярск https://www.postgrespro.ru/education DEV1, DEV2, сертификация ….
  • 43.
    План разработок PostgresPro :2019 ● HA Мультимастер ● Доработки безопасности для сертификации на высокие уровни секретности ● Инкрементальный и частичный бэкап ● Секционирование (partitioning) ● Управление планами запросов ● Планировщик заданий ● Расширяемые индексные методы доступа ● Эффективное хранение временных объектов ● Компрессия данных ● Сбор детальной статистики и метрик мониторинга ● Средства упрощения миграции с Oracle ● Средства управления СУБД ● CREATE INDEX USING RUM (GIN2) ● Advanced multicore parallelism ● Incremental materialized views ● Облачная версия СУБД ● Запись и воспроизведение нагрузки ● Удобный и расширяемый синтаксис для поиска и обновления JSON ● Эффективная работа с массивами, интервалами и иерархическими данными ● Распараллеливание запросов в мультимастере ● Улучшения планировщика (корреляции, планирование на этапе выполнения) ● Улучшения сборки и тестирования (CMake, unit-тесты)
  • 44.
    План разработок PostgresPro :2019 ● Advanced FTS (быстрый поиск, обратная задача, конф. парсер, TF/IDF) ● Индексы с быстрой вставкой и обновлением ● Адаптивное построение запросов с помощью машинного обучения ● JIT компиляция ● Sharding ● Эффективная работа с неточными, битемпоральными, сферическими, timeseries данными ● Индесная поддержка для расширяемого синтаксиса JSON ● Эффективная поддержка NUMA ● Распределённая система тестирования ● Альтернативные табличные движки: columnar, in-memory ● Сжатие передаваемых данных ● Оптимизация работы с диском (double buffering, SSD) ● Система тестирования производительности (TPC-* из коробки) ● CREATE INDEX USING VODKA ● In-memory columnar storage ● Sharding с автоматическим распределением по узлам ● Мониторинг кластера ● Асинхронный протокол взаимодействия ● Встроенный балансировщик нагрузки и пул коннектов ● Поддержка тета-соединений ● Эффективная встроенная очередь ● Оптимизация работы с SSD
  • 45.
    Мы ищем таланты ●Разработчики, инженеры, QA, PM, технические писатели, стажеры (студенты), люди науки • Работать в команде, «жить» в сообществе • Уметь и любить учиться • Любить вызовы • Держать цель ● Возможна удаленная работа
  • 46.
    Российское сообщество ● Самоеорганизованное — несколько тысяч человек ● Митапы при поддержки крупных компаний ● Крупнейшие в мире конференции по постгресу: ● летом PGDay.ru в Санкт-Петербурге (2014, 2015, 2016) ● Зимой PGConf.ru в Москве (2015, 2016) ● Секции и квартирники на крупнейших конференциях ● Highload++, RIT, Codefest, Stachka ● Участвуем в международных конференциях ● PGConf.EU, PGCon.org ● Свободные курсы DBA1, DBA2, «Hacking Postgres» от Postgres Professional
  • 47.
  • 48.
    50 способов помочьсообществу Ядро Разработка, review, тестирование, reporting bugs Экосистема Расширения, драйверы, ORM, средства мониторинга… поддержка Pg в прикладном ПО Создание дистрибутивов, пакетирование Документация Улучшение, перевод, публикация статей, книг, учебных, маркетинговых материалов…блоггинг! Расскажите о своей истории с PostgreSQL! Общение, образование Создание локальных сообществ Проведение конференций, митапов, семинаров, учебных курсов. Внедрите PostgreSQL! В Вашей компании. Запустите учебный курс в Вашем ВУЗе Спонсорство Спонсируйте разработку нужной Вам функциональности. Спонсируйте мероприятие.
  • 49.
  • 50.
  • 51.