Как мы делаем свой DBaaS

Сейчас мы, в Postgres Professional, разрабатываем новый интересный продукт — DataBase as a Service, и в этой статье хочется немного рассказать о наших успехах, узнать ваше мнение и послушать возможные пожелания.

Сейчас мы, в Postgres Professional, разрабатываем новый интересный продукт — DataBase as a Service, и в этой статье хочется немного рассказать о наших успехах, узнать ваше мнение и послушать возможные пожелания.

Новые контрибьюторы PostgreSQL:
Бертран Друво (Bertrand Drouvot),
Габриэль Бартолини (Gabriele Bartolini),
Ришар Гуо (Richard Guo).
Новые главные (major) контрибьюторы PostgreSQL, прибавилось два представителя Microsoft и один от Amazon:
Александр Лахин (Alexander Lakhin) - особенно поздравляем!
Дэниэл Густафссон (Daniel Gustafsson, Microsoft),
Дин Рашид (Dean Rasheed),
Джон Нэйлор (John Naylor),
Мелани Плейгман (Melanie Plageman, Microsoft),
Натан Боссарт (Nathan Bossart, Amazon Web Services).
Всех поздравляем! Страница контрибьюторов здесь.

Привет, Хабр! Это снова мы — Павел Конотопов и Михаил Жилин, сотрудники компании Postgres Professional. Напомню, что Павел занимается архитектурой построения отказоустойчивых кластеров, а я анализом производительности СУБД. У каждого из нас за плечами более десяти лет опыта в своей области.
Во второй части статьи «Мифы и реалии «Мультимастера» в архитектуре СУБД PostgreSQL» мы говорили о гарантии согласованности данных и разрешение конфликтов. Разобрали как выявлять и разрешать конфликты, используя разные способы. Теперь пришла пора одной из самых важных характеристик хранения данных — надёжности.

Привет, Хабр! Это снова мы — Павел Конотопов и Михаил Жилин, сотрудники компании Postgres Professional. Напомню, что Павел занимается архитектурой построения отказоустойчивых кластеров, а я анализом производительности СУБД. У каждого из нас за плечами более десяти лет опыта в своей области.
В первой части статьи «Мифы и реалии «Мультимастера» в архитектуре СУБД PostgreSQL» мы посмотрели как развивалась технология «Мультимастер» в экосистеме PostgreSQL. Обсудили существует ли «Честный Мультимастер», какие у него реализации и как его следует применять. Теперь поговорим о надёжности хранения данных.

Привет, Хабр! Недавно мы делали доклад на конференции HighLoad 2023 — «Мифы и реалии Мультимастера в архитектуре СУБД PostgreSQL». Мы — это Павел Конотопов (@kakoka) и Михаил Жилин (@mizhka), сотрудники компании Postgres Professional. Павел занимается архитектурой построения отказоустойчивых кластеров, а Михаил — анализом производительности СУБД. У каждого за плечами более десяти лет опыта в своей области.
Порассуждаем о том, как развивалась технология «Мультимастер» в экосистеме PostgreSQL, остановимся на том, что она из себя представляет, на каких внутренних механизмах PostgreSQL основана и как её можно использовать.
Мы также поговорим о том, существует ли «Честный Мультимастер» (само понятие «Честный Мультимастер» достаточно специфично и в основном употребляется в кругу разработчиков), какие реализации у него есть и как его следует применять.

Умер Никлаус Вирт
1-го января этот мир покинул Великий человек - Никлаус Вирт (Niklaus Emil Wirth). Его создания: Pascal, Algol-W, Euler, Modula-1, 2, Oberon-1, 2.
Но прежде всего Никлаус был главным идеологом программирования сверху вниз, структурного программирования.
Релизы
Ещё недавно мы писали, что в документации по Postgres на сайте Postgres Professional появился четвёртый столбец - ora2pgpro. А сейчас там 5 столбцов: появился Shardman. Всего пока 2 релиза:
Postgres Pro Shardman 14.10.2 и Postgres Pro Shardman 14.10.3.
В 14.10.3 улучшения и исправления. А в заметках к релизу предыдущего можно узнать, что:

В СУБД-строении есть не новая, но не теряющая актуальности задача. Сформулировать её можно примерно так: как убрать возможность суперпользователя взаимодействовать с данными, но оставить ему все возможности по управлению СУБД? Эта функция затребована не только большими компаниями с жёсткими требованиями к информационной безопасности, но и крайне нужна всем, кто попадает под различного вида государственные регуляции, вроде приказа ФСТЭК №64 или страшного GDPR.
Всё это необходимо, чтобы закрыть риски, связанные с доверием как к самому DBA, так и обезопасить себя на случай угона учётной записи злоумышленником.
В этой статье мы хотим поговорить о том, какие есть подходы к решению этой проблемы, какие можно найти реализации на рынке, и что решили сделать мы в Postgres Professional.

В прошлом году Postgresso 12 (49) и был обзором, пробегающим по 11 предыдущим номерам. В этом году мы решили, что эту задачу лучше выделить в отдельный выпуск.
ЯНВАРЬ
Postgresso 1 за 2023 (50)
Игрушки
Да, мы любим рассказывать об игрушечных базах, самодельных базах для души. Булат Башеев (Basheyev) из Астаны развлекался написанием виртуальной машины и компилятора под неё, теперь переключился на СУБД. Назвал её Boson. Это, говорит автор, легкая, встраиваемая документоориентированная база данных на С/С++. Хранить она будет документы формата ключ/значение (JSON).

В эти предновогодние дни перегружать вас техническими деталями не будем. И даже не всё в этом выпуске будет вертеться вокруг СУБД и SQL. Начнём, впрочем, с такой серьёзной новости:

Триггеры On-Logon хорошо знакомы разработчикам приложений для СУБД Oracle Database.
On-Logon триггер является одним из видов триггеров событий базы данных, и автоматически срабатывает при подключении пользователя к БД.
В СУБД Postgres Pro Enterprise, еще в версии 14, среди прочих расширенных возможностей, была добавлена поддержка On-Logon триггеров.
В данной статье речь пойдет о данной функциональности, а также будет приведено сравнение с аналогичной функциональностью в СУБД Oracle Database.
Стоит отметить, что поддержка On-Logon триггеров будет добавлена в следующий мажорный релиз open source СУБД PostgreSQL - в версию 17.
Компания Postgres Pro передала свою реализацию этой технологии сообществу PostgreSQL.
Данный пример ярко характеризует модель развития СУБД PostgreSQL.
Идеи и их реализации, апробированные компаниями в коммерческих форках, передаются в open source. С другой стороны, компании точно также получают наработки open source в свой коммерческий форк.
Это формирует устойчивую ситуацию взаимовыгодного сотрудничества коммерческих компаний и open source сообщества. Эта ситуация может оказаться более долговечной, чем отдельные коммерческие компании или открытые продукты.

Лицензии и апокалипсис
10-го августа сего года компания HashiCorp позволила себе нехороший - с точки зрения многих участников движения open source - поступок. Она поменяла лицензию своего любимого многими Terraform (инфраструктура как код - Infrastructure-as-Code, IaC) с MPL 2.0 (Mozilla Public License) на BSL 1.1 (Business Source License). BSL относят к категории source-available software - более широкой, чем free software (свободное - подмножество SAS), а бизнес-модель HashiCorp относят к freemium (=free+premium), то есть вроде и бесплатно, но за что-то лучше заплатить. Как бы и ничего такого уж страшного, но через 5 дней на сайте SecurityLab.ru, который поддерживает Positive Technologies, появилась статья с пугающим названием:
Конец открытому ПО? HashiCorp переводит Terraform и Vagrant под закрытую лицензию

В начале ноября так сложились обстоятельства, что мне с коллегой довелось поучаствовать в качестве судей на мероприятии под строгим названием «Отборочный этап чемпионата России по спортивному программированию» в дисциплине «Продуктовое программирование». Или, говоря более простым языком — студенческий трехдневный онлайн-хакатон, победители которого поедут на финал чемпионата страны в Москву.
Вот об этом мероприятии, что на нём было интересного и каких-то выводах из увиденного сегодня и поговорим.

- а также PostgreSQL 15.5, 14.10, 13.13, 12.17 и 11.22 (эта версия последняя, которая будет поддерживаться в линейке 11). Обновление закрывает 3 проблемы безопасности:
CVE-2023-5868: показ содержимого памяти в вызовах функций с агрегацией (memory disclosure in aggregate function calls) - может произойти, когда в качестве аргумента передаётся тип unknown;
CVE-2023-5869: переписывание буфера от его переполнения целыми при модификации массивов (buffer overrun from integer overflow in array modification) - недостаточные проверки переполнения позволяют аутентифицированным пользователям и читать в памяти и записывать в неё, чтобы исполнить вредоносный код;
CVE-2023-5870: роль pg_cancel_backend может рассылать сигналы некоторым процессам суперпользователей (role pg_cancel_backend can signal certain superuser processes) - а по документации не должна; роль может, например, посылать сигналы процессу, запускающему логическую репликацию.
Кроме того были ликвидированы баги - 55 штук. А теперь перейдём конференциям, по ним накопилась информация.
PostgreSQL 17: Часть 2 или Коммитфест 2023-09
Если новости о 16-й версии у кого-то уже не вбрасывают адреналин в кровь, то вот очередная статья-обзор Павла Лузанова, небольшое путешествие в будущее (а об июльском коммитфесте в предыдущей статье этой серии: 2023-07). Павел рассматривает 18 пунктов. Например:

Продолжаем следить за новинками 17-й версии PostgreSQL. На этот раз поговорим о том, чем запомнился сентябрьский коммитфест.
Самое интересное об июльском коммитфесте ― в предыдущей статье серии: 2023-07.

Меня зовут Фролков Иван, я работаю программистом с 1993 года, и уже восемь лет — в Postgres Professional. Периодически выступаю на конференциях. В этой статье я расскажу вам про темпоральные типы данных в PostgreSQL — доклад о них я читал на PGConf.Russia 2022. Почему меня это заинтересовало? Мне много раз приходилось сталкиваться с тем, что из-за разницы часовых поясов не сходились отчёты за месяц или даже за сутки. Подобные проблемы возникают из-за неаккуратной обработки даты и времени, которой можно избежать.
В чём проблема?
Часто мы начинаем сверять данные из разных мест, и они почему-то оказываются разными. Мало кто явно указывает часовой пояс при указании времени, что впоследствии приводит к ошибкам. Например, если в общий лог пишут и из Москвы, и из Новосибирска, а часовой пояс не указан, трудно понять, какое событие когда произошло.
У меня была ситуация, когда я работал в международной компании с серверами по всему миру. Паника из-за неверного построения отчётов там возникала дважды в сутки. Сначала поднимались московские менеджеры и ругались, что цифры получаются не те. Мы поправляли часовые пояса, и всё было хорошо до тех пор, пока не просыпались менеджеры в Сан-Франциско. Они тоже выдвигали претензии по цифрам, мы снова исправляли время, но после этого опять «уезжала» Москва.
Заря приходит с востока
С чем же связаны такие проблемы? С тем, что Земля круглая, и время наступает везде по-разному. Казалось бы, это тривиальное знание, но в реальности его мало кто учитывает. На востоке часовые пояса с плюсом, а на западе — с минусом. Где-то посередине располагается Гринвич, нулевой меридиан (кстати, в Лондоне есть летнее время, и оно не совпадает с гринвичским!). Есть ещё места вроде Непала и Бутана, где время сдвигается не на полные часы, а на 45 или 15 минут, и это может создать вам проблемы.

PostgreSQL 16
Наконец, официально вышел релиз PostgreSQL 16. Мы регулярно писали о новом в бетах и релиз-кандидатах, поэтому подробно говорить об официальном нет, кажется, особой необходимости: с тех пор ничего принципиального не ушло и, тем более, не пришло.
На сайте выделяют такие главные преимущества релиза, вот некоторые:
улучшение производительности: оптимизатор научился распараллеливать FULL и RIGHT JOIN, ускорились оконные функции, появилась балансировка нагрузки.
расширение возможностей логической репликации: репликация с реплики, распараллеливание, новая роль pg_create_subscription,
для разработчиков: новые (вернувшиеся "старые") возможности работы с SQL/JSON, улучшения в правилах сортировки, команда \bind в psql для подготовленных запросов, улучшения в правилах сортировки,
мониторинг: pg_stat_io, новое поле в pg_stat_all_tables,
доступ и безопасность: появилась возможность задавать дополнительные файлы в include.
Как вы, может быть, заметили, ссылки ведут на РУССКУЮ ДОКУМЕНТАЦИЮ к PostgreSQL, которая только что появилась на сайте Postgres Professional.

Между выходом этого обзора и предыдущего успели выйти бета3 и первый релиз-кандидат.
В PostgreSQL 16 Beta 3 закрыты 2 уязвимости, они касаются расширений и MERGE. В сообщении есть важные замечания для тех, кто использует BRIN-индексы для запросов, затрагивающих NULL-величины.
А вот это почти детективный сюжет: PostgreSQL: CVE-2020-21469 is not a security vulnerability.

Продолжаем следить за новостями из мира PostgreSQL. Выпуск PostgreSQL 16 Release Candidate 1 планируется на 31 августа и, если всё будет в порядке, то 16-я версия выйдет 14 сентября.
Что изменилось в 16-й версии после апрельской заморозки кода? Что попало в 17 версию по результатам первого коммитфеста? Обо всем об этом в свежем обзоре.

Сжатие данных на уровне блоков: механизм компрессии CFS и его особенности
Привет, Хабр! Меня зовут Антон Дорошкевич, я сертифицированный эксперт по PostgreSQL и архитектор многокластерных систем 1С. Это мой первый гостевой пост в блоге компании Postgres Professional. Многие мои выступления на PGConf.Russia были тепло приняты аудиторией в частности, в этом году доклад о тонкостях эксплуатации 1С и PostgreSQL вошёл в тройку лучших презентаций конференции. Сегодня мне хотелось бы рассказать о том, как сжатие данных на уровне блоков (страниц) влияет на работу баз 1С.
Механизмы сжатия на уровне блоков разработаны и успешно используются в таких СУБД, как MS SQL Server, Oracle, MySQL. В PostgreSQL сжатие на уровне страниц почему-то не было реализовано; лишь сравнительно недавно оно появилось в Postgres Pro Enterprise. Этот механизм называется CFS (Compressed File System, но файловой системой он не является, поэтому далее будет использоваться сокращение CFS).