• Вышел PostgreSQL 11



      Специальный выпуск POSTGRESSO, посвященный выходу официального релиза версии 11.


      На улице PostgreSQL праздник. После четырех beta вышла PostgreSQL 11 General Availability, то есть официальная версия. В анонсе есть даже приветственное слово Брюса Момджана: «готовя этот релиз, сообщество особенно заботилось о добавлении функциональности, необходимой для работы с очень большими базами данных. Доказано, что PostgreSQL хорошо работает с транзакционными нагрузками, а теперь новая версия — PostgreSQL 11 — облегчит разработчикам еще и создание приложений для Big Data».

      В release notes выделяют

      • секционирование:
        • добавлено секционирование по хешу;
        • PRIMARY KEY, FOREIGN KEY, индексы (см. ниже на эту тему) и триггеры;
        • секция по умолчанию для записей, вышедших за границы созданных секций;
        • UPDATE по ключу секционирования теперь может автоматически перемещать запись в соответствующую секцию;
        • PostgreSQL научился исключать ненужные секции (partition pruning) во время исполнения запросов SELECT;
      • распараллеливание:
        • теперь можно параллельно создавать индекс в случае B-tree;
        • при CREATE TABLE… AS, CREATE MATERIALIZED VIEW и в некоторых случаях запросов с UNION;
        • улучшена производительность в параллельных HASH JOIN и SEQUENTIAL SCAN;
      • появились хранимые процедуры, и в них возможно управление транзакциями;
      • JIT-компиляция фрагментов запросов, выигрыш на вычислении выражений;
      • оконные функции теперь поддерживают все фреймовые опции SQL:2011 стандарта, в том числе расстояния по RANGE у PRECEDING/FOLLOWING, режим GROUPS, возможность исключения строк из фрейма;
      • появились покрывающие индексы [не покрывающие, а инклюзивные, строго говоря — прим. POSTGRESSO], использующие выражение INCLUDE при CREATE INDEX;
      • из раздела «разное»: ALTER TABLE… ADD COLUMN c значениями NOT NULL по умолчанию: этот вариант команды теперь не перезаписывает все строки таблицы и, следовательно, работает быстро.

      Читать дальше →
    • Дайджест новостей из мира PostgreSQL. Выпуск №10



        Мы продолжаем знакомить вас с самыми интересными новостями по PostgreSQL.

        Релизы


        PostgreSQL 11 Beta 4
        В этом релизе починили баги, выявленные после выхода Beta 3. В том числе:

        • теперь отключена по умолчанию JIT-компиляция.
        • имена в constraint-ах должны быть уникальны.
        • убрали утечку памяти при обращении к XMLTABLE
        • исправили ошибки в хранимых процедурах
        • доработали секционирование, в том числе выбор секций в момент исполнения (runtime partition pruning)

        Подробнее здесь.

        PostgreSQL 10.5
        В этом релизе несколько десятков исправлений, касающихся WAL, libpq, VACUUM и FREEZE, индексов GIN, распараллеливания запросов, OpenSSL. Вот их список.

        Postgres Pro Enterprise 10.5.2.
        В этой версии есть следующие нововведения по отношению к Postgres Pro Enterprise 10.5.1, они касаются pgbench:

        • pgbench теперь поддерживает составные команды;
        • с помощью параметра --latency-limit теперь можно ограничить время, отведённое на повторение транзакций. Если при использовании данного параметра значение --max-tries=0, транзакции могут повторяться неограниченное число раз, пока не истечёт время, заданное параметром --latency-limit;
        • при вычислении количества обработанных транзакций и скорости выполнения (TPS) пропущенные и неуспешные транзакции больше не учитываются.

        Напомним, за время между нашими выпусками вышел релиз Postgres Pro Enterprise 10.5.1.. Там есть существенные изменения, о них можно прочитать здесь.
        Читать дальше →
        • +16
        • 1,8k
        • 2
      • Параллелизм в PostgreSQL: не сферический, не конь, не в вакууме



          Масштабирование СУБД – это непрерывно наступающее будущее. СУБД совершенствуются и лучше масштабируются на аппаратных платформах, а сами аппаратные платформы наращивают производительность, число ядер, памяти — Ахиллес догоняет черепаху, но все еще не догнал. Проблема масштабирования СУБД стоит во весь рост.

          Компании Postgres Professional с проблемой масштабирования довелось столкнуться не только теоретически, но и практически: у своих заказчиков. И не раз. Об одном из таких случаев и пойдёт речь в этой статье.

          PostgreSQL неплохо масштабируется на NUMA-системах, если это одна материнская плата с несколькими процессорами и несколькими шинами данных. О некоторых оптимизациях можно почитать здесь и здесь. Однако есть и другой класс систем, у них несколько материнских плат, обмен данными между которыми осуществляется с помощью интерконнекта, при этом на них работает один экземпляр ОС и для пользователя такая конструкция выглядит как единая машина. И хотя формально такие системы можно также отнести к NUMA, но по своей сути они ближе к суперкомпьютерам, т.к. доступ к локальной памяти узла и доступ к памяти соседнего узла отличаются радикально. В сообществе PostgreSQL считают, что единственный экземпляр Postgres, работающий на таких архитектурах, это источник проблем, и системного подхода к их решению пока нет.
          Читать дальше →
        • Дайджест новостей из мира PostgreSQL. Выпуск №9


            Мы продолжаем знакомить вас с самыми интересными новостями по PostgreSQL. Между этим выпуском и #8 прошло больше времени, чем обычно, поэтому он будет более объемным.

            Релизы


            PostgreSQL 11 Beta 3
            Этот релиз отличается исправленными багами — и общими для серии релизов, о которых дальше, и специфическими для версии 11. Подробности об исправленных (и не только) багах можно узнать здесь. Общая информация о beta здесь.

            PostgreSQL 10.5
            Исправлены серьезные баги. Например, обнаружена и исправлена проблема в libpq: она не восстанавливала в начальное состояние все переменные состояния соединения при попытке повторного соединения. Не восстанавливалась переменная, которая задавала, нужен ли пароль, из-за чего, используя dblink или postgres_fdw, можно было получить незаконный доступ к серверам.
            Всего в релизе около 20 исправлений и улучшений, касающихся самых разных механизмов СУБД: VACUUM, WAL, GIN-индексы, POSIX-семафоров и многого другого. В том числе для работы под Windows. Они расписаны тут.

            Вместе с 10.5 и Beta 3 вышли соответствующие обновления 9.6.10, 9.5.14, 9.4.19, 9.3.24. Скачать можно, как обычно, отсюда.

            Postgres Pro Standard 9.5.14.1, 9.6.10.1 и 10.5.1
            Релизы Postgres Pro Standard 9.5.14.1 и 10.5.1 созданы Postgres Professional на базе соответствующих версий PostgreSQL (без последней цифры в номере релиза, напр PostgreSQL 10.5) и соответствующих предыдущих версий Postgres Pro Standard.
            Читать дальше →
            • +12
            • 2,9k
            • 2
          • 27 июля 2018 года — полное лунное затмение и великое противостояние Марса

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

              В ночь с 27 на 28 июля 2018 года произойдут два довольно редких астрономических явления. Факт их календарного совпадения не делает эти явления более ценными для науки, но создает вокруг них дополнительный интерес. Некоторые люди рассматривают совпадение двух астрономических явлений как некоторое самостоятельное явление, что не вполне корректно, но заслуживает отдельного рассмотрения с точки зрения понимания того, насколько часто подобное происходит, и влияет ли одно на другое хоть как-то.

              27 июля 2018 года - полное лунное затмение и великое противостояние Марса

              Что же произойдет?

              Читать дальше →
            • Дайджест новостей из мира PostgreSQL. Выпуск №8

                Мы продолжаем знакомить вас с самыми интересными новостями по PostgreSQL.

                Слоны


                Саймон Риггс, глава 2ndQuadrant, призывает компании поучаствовать в защите слонов, в том числе сообщая о случаях онлайновой торговли слоновой костью.

                Релизы


                PostgreSQL 11 Beta 2 Released
                Выход этого релиза в том числе связан с обнаруженной проблеме со SCRAM. В Beta 1 появилась мажорная фича Channel Binding for SCRAM Authentication (привязка канала) для предотвращения атак с «человеком посередине» (man-in-the-middle). Но при тестировании выяснилось, что libpq не в состоянии гарантировать channel binding. В Beta 2 сама фича не удалена, но удалена документация к ней, а фича потеряла статус мажорной.Подробней о релизе можно прочитать здесь, а скачать Beta 2 можно здесь.

                Читать дальше →
                • +21
                • 3,3k
                • 2
              • Слайды курса «Технологии и разработка СУБД»



                  На протяжении последнего года моя коллега Анастасия Лубенникова и я вели курс под названием «Технологии и разработка СУБД». Данный курс посвящен разработке реляционных СУБД с акцентом на конкретную реализацию в лице PostgreSQL. Мы сотрудничали сразу с несколькими ВУЗами. На ВШЭ это был обязательный предмет, рассчитанный на студентов 4-го курса (на фото студенты сдают экзамен). В ВМК МГУ это был предмет по выбору, на который ходили студенты разных курсов.
                  Читать дальше →
                  • +18
                  • 6,7k
                  • 1
                • Курсы по администрированию PostgreSQL

                    Поводом к написанию статьи стал выход нового учебного курса DBA3 «Администрирование PostgreSQL 10. Резервное копирование и репликация». Мысли о его появлении и возможном содержании были у нас давно. Но обо всем по порядку.
                    Читать дальше →
                    • +22
                    • 7,2k
                    • 6
                  • Дайджест новостей из мира PostgreSQL. Выпуск №7



                      Мы продолжаем знакомить вас с самыми интересными новостями по PostgreSQL.

                      Релизы


                      Как и обещано, бета-версия PostgreSQL 11 вышла 25-го мая. Ее новшества по отношению к 10.х в основном уже перечислены в сводке Что заморозили на feature freeze.

                      Postgres Pro 10.4.1
                      Компания Postgres Professional выпустила новые релизы Postgres Pro Standard/Enterprise 10.4.1, созданные на базе PostgreSQL 10.4 и Postgres Pro 10.3.2. В них вошли все улучшения версии PostgreSQL 10.4, а также ряд важных доработок:

                      • обновлён модуль jsquery, отвечающий за запросы к типу данных jsonb;
                      • утилита pg_probackup для управления резервным копированием и восстановлением кластеров баз данных обновлена до версии 2.0.17 и дополнена новыми возможностями; например, добавлен режим DELTA, в котором считываются все файлы данных в каталоге и создаётся инкрементальная копия для страниц, изменённых со времени предыдущего копирования;
                      • модуль pg_pathman, отвечающий за секционирование больших и распределённых баз данных, обновлён до версии 1.4.11, в которой исправлен ряд ошибок;
                      • исправлена сортировка букв «Ё» и «Й» в модуле mchar, предоставляющем дополнительные типы данных для совместимости с Ms SQL Server;
                      • доработана версия для Windows.

                      Читать дальше →
                    • PGCon 2018: фотографии, слайды, впечатления



                        На прошлой неделе, с 29 мая по 1 июня, состоялась конференция PGCon 2018. PGCon проходит в Оттаве каждый год. В отличие от других конференций, посвященных PostgreSQL, PGCon позиционируется, как конференция не пользователей, а разработчиков. Это делает ее крайне важным событием в жизни проекта. Далее я хотел бы поделиться своими впечатлениями от конференции и рассказать о наиболее запомнившихся мне моментах.
                        Читать дальше →
                      • Битва при MERGE. Хроника с выводами и моралью

                          Несколько недель перед важным комитфестом — последним перед feature freeze версии PostgreSQL 11 — читатели рассылки hackers, сжимая в левой пакет с чипсами, следили за триллером MERGE. Режиссер триллера, глава компании 2ndQuadrant Саймон Риггс (Simon Riggs), с впечатляющей настойчивостью и изобретательностью пытался протащить в версию патч, реализующий синтаксис команды MERGE. Риггс комитер с 2009 года, а со статусом комитера можно самому утверждать патчи. Ему противостояли не менее уважаемые комитеры и ветераны PostgreSQL. Страсти кипели явно и подспудно, до прямых оскорблений все же не дошло — факт удивительный для завсегдатаев многих отечественных форумов. Однако некоторое напряжение осталось до сих пор, когда вопрос утрясли, и спорить уже не о чем.
                          Читать дальше →
                        • Кластер pacemaker/corosync без валидола

                            Представьте ситуацию. Субботний вечер. Вы — администратор PostgreSQL, после тяжелой трудовой недели уехали на дачу за 200 км от любимой работы и чувствуете себя прекрасно… Пока Ваш покой не нарушает смс от системы мониторинга Zabbix. Произошел сбой на сервере СУБД, база данных с текущего момента недоступна. На решение проблемы отводится короткое время. И Вам ничего не остается, как с тяжелым сердцем оседлать служебный гироскутер и мчаться на работу. Увы!


                            А ведь могло быть по-другому. Вам приходит смс от системы мониторинга, что произошел сбой на одном из серверов. Но СУБД продолжает работать, поскольку отказоустойчивый кластер PostgreSQL отработал потерю одного узла и продолжает функционировать. Нет надобности срочно ехать на работу и восстанавливать сервер БД. Выяснение причин сбоя и работы по восстановлению спокойно переносятся на рабочий понедельник.

                            Как бы то ни было, стоит подумать о технологиях отказоустойчивы кластеров с СУБД PostgreSQL. Мы расскажем о построении отказоустойчивого кластера СУБД PostgreSQL с помощью программного обеспечения Pacemaker&Corosync.

                            Читать дальше →
                          • Дайджест новостей из мира PostgreSQL. Выпуск №6

                              Мы продолжаем знакомить вас с самыми интересными новостями по PostgreSQL.

                              Релизы


                              PostgreSQL 11 Beta
                              Релизная команда PostgreSQL определилась с датой выпуска бета-версии: 24 мая 2018.

                              Вышел PostgreSQL 10.4

                              В отличие от версии 10.3, которая была внеплановой (нужно было срочно закрыть важные дыры в безопасности), эта версия вышла в соответствии с графиком.
                              В новой версии много поправок. Из заплаток, привлекших внимание: излишне либеральный доступ (ACL) к функции pg_logfile_rotate(); ослаблены блокировки во время планирования фоновых процессов автовакуума, которые сильно мешали распараллельнию работы. Вместе с 10.4 вышли обновления 9.6.9, 9.5.13, 9.4.18, 9.3.23.

                              Читать дальше →
                              • +20
                              • 4,9k
                              • 3
                            • UPD Трансляция митапа. Приглагашаем на митап «Новые возможности PostgreSQL 11»

                                image

                                Друзья, чуть больше месяца назад завершился коммитфест и стало понятно, какими новыми возможностями нас порадует осенний релиз PostgreSQL. Мы уже начали рассказывать об INCLUDE-индексах, встроенном веб-поиске, улучшениях в кастинге.

                                И теперь совместно с компанией «Райффайзенбанк», мигрировавшей на PostgreSQL ряд систем, мы решили провести открытый митап по новым фичам в PostgeSQL 11.

                                Ждем вас 23 мая в 18.00 в Нагатинском офисе Райффайзенбанка по адресу Москва, проспект Андропова 18, корпус 2.

                                Вход бесплатный. Регистрация на сайте.
                                Читать дальше →
                                • +18
                                • 2,7k
                                • 3
                              • Что нового в PostgreSQL 11: улучшения в кастинге



                                  Продолжая тему новый возможностей грядущего релиза PostgreSQL 11 (предыдущие посты: раз, два, три), я хотел бы рассказать об одном небольшом, но важном изменении. Изменение это касается кастинга одних типов в другие. И, конечно же, оно касается JSONB, потому что в PostgresPro мы его очень любим!
                                  Читать дальше →
                                  • +13
                                  • 6,5k
                                  • 7
                                • Что нового в PostgreSQL 11: JSONB-трансформы



                                    В предыдущих постах вы могли прочитать про INCLUDE-индексы и встроенный веб-поиск. Эти фичи появятся в PostgreSQL 11, релиз которого, напомню, планируется в октябре. Сегодня мне хотелось бы продолжить обзор новых фичей грядущего релиза, рассказав про JSONB-трансформы для языков PL/Python (3f44e3db) и PL/Perl (341e1661). Оба патча написаны Антоном Быковым.
                                    Читать дальше →
                                    • +27
                                    • 7,1k
                                    • 3
                                  • Дайджест новостей из мира PostgreSQL. Выпуск №5



                                      Feature freeze


                                      Это, конечно, главное событие для сообщества. То, что не прошло только что закончившийся комитфест, не попадет в версию PostgreSQL 11.

                                      Что заморозили на feature freeze
                                      Это наша сводка попавших в нее важнейших патчей.
                                      Сводка сводкой, а статьи об PostgreSQL 11 уже начали появляться. А дальше — больше.

                                      Waiting for PostgreSQL 11 – Transforms for jsonb to PL/Python and to PL/Perl
                                      Депеш, то есть Хуберт 'depesz' Любашевски, пишет в своем блоге о 2 соответствующих патчах Антона Быкова из Postgres Professional.

                                      Postgres 11 highlight — Covering Indexes
                                      В своем блоге Мишель Пакье (Michael Paquier) пишет о покрывающих индексах (см также статью Что нового в PostgreSQL 11: INCLUDE-индексы Александра Алексеева из Postgres Professional и комментарии к ней). На эту же тему — INCLUDE-индексов — статья Waiting for PostgreSQL 11: Covering + unique indexes Алексея Лесковского из Data Egret.

                                      Partition Elimination in PostgreSQL 11
                                      По поводу этого серьезного достижения 11-й версии пишет в своей статье Дэвид Роули (David Rowley) из 2ndQuadrant.

                                      Об еще одном патче, прошедшем в PostgreSQL 11, пишет в статье Что нового в PostgreSQL 11: встроенный веб-поиск тот же Александр Алексеев.

                                      Manipulating checksums of a cluster
                                      Мишель Пакье пишет еще об одном патче PostgreSQL 11. Патч проверяет чексуммы страниц после штатной остановки кластера. Более того, он предлагает свою утилиту pg_checksums на базе этого патча.

                                      Читать дальше →
                                    • Что нового в PostgreSQL 11: встроенный веб-поиск



                                        Продолжая тему интересных возможностей грядущего релиза PostgreSQL 11, я хотел бы рассказать про новую встроенную функцию websearch_to_tsquery. Соответствующий патч разработали Виктор Дробный и Дмитрий Иванов, с правками от Федора Сигаева. Давайте же разберемся, что реализовано в этом патче.
                                        Читать дальше →
                                      • Что заморозили на feature freeze



                                          8-го апреля закончился комитфест 2018-03. Те патчи, которые не закомичены на нем (и на 3 предыдущих комитфестах) уже не попадут в релиз PostgreSQL 11: произошла заморозка функциональности (feature freeze). Время подводить итоги.

                                          Главные новости последнего комитфеста (и версии 11 соответственно):
                                          • увесистый набор патчей для секционирования.
                                          • JIT-компиляции посвящен только один патч, но это шаг в направлении, которое в будущем наверняка будет развиваться интенсивно.
                                          • «покрывающие» индексы (INCLUDE-индексы). Это тема уже активно обсуждается и продолжается в разработках.
                                          • Серия патчей в группе процедурных языков. Они важны в том числе для совместимости со стандартами SQL и миграции с Oracle.
                                          • Интересные, но не столь резонансные патчи.

                                          Начнем в произвольном порядке.
                                          Читать дальше →
                                          • +20
                                          • 3,3k
                                          • 1
                                        • Секционирование в PostgreSQL 10 и не только


                                            У многих достижений версии PostgreSQL 10 прописка в разделе Секционирование (Partitioning). И это справедливо: очевидно, что при переходе от 9.6 к 10 произошел мощный технологический скачок. В предыдущих версиях секции строили и управляли ими, теми средствами, что уже имелись: механизмом наследования со всеми его ограничениями и неудобствами.


                                            В версии 10 перешли к более специализированным механизмам и более привычному (в том числе для пользователей Oracle, а с этим приходится считаться) синтаксису. Этот скачок при переходе от 10 к версии 11 должен был подкрепиться важными дополнениями, которые должны расширить функциональность и улучшить производительность операций, использующих секционирование. Но из итогов последнего комитфеста (он закончился 8 апреля) видно, что не все задуманное удалось довести до рабочего состояния, а значит не все попадет в версию 11.


                                            К тому же последние пару лет параллельно велись разработки модуля pg_pathman в Postgres Professional. Некоторые важные возможности пересеклись, некоторые остались уникальны для PostgreSQL и pg_pathman (который работает с ванильной версией, то есть PostgreSQL 10 + pg_pathman дает уже вполне впечатляющую сумму функциональности). Об этом будет отдельная статья. Замечания, относящиеся к версии 11 и к pg_pathman для удобства выделены курсивом.


                                            Эта статья представляет собой переработанные и дополненные фрагменты книжки Nouveaulités de PostgreSQL 10. (с) Dalibo, перевод с французского Игоря Лёвшина (оригинал). Примеры из книги проверены, иногда адаптированы и локализованы для большей наглядности.

                                            Читать дальше →
                                            • +22
                                            • 6,6k
                                            • 7

                                          Самое читаемое