Эта СУБД стара, как мир, но в последние пять лет она словно переживает второе рождение. MongoDB провела IPO на миллиард долларов, а в Amazon Web Services запустила умопомрачительный сервис Aurora Serverless, но именно PostgreSQL в глазах профессиональных разработчиков программных систем продолжает набирать очки – снова и снова, и снова.
Четвертой в мире по популярности, согласно рейтингу DB-Engines, СУБД предстоит сделать еще немало, прежде чем ей удастся опередить Oracle, MySQL и Microsoft SQL Server. Но при нынешних темпах есть все основания полагать, что это вполне может случиться.
Естественно, возникает вопрос, в чем причина такого успеха? Почему PostgreSQL активно привлекает сегодня не только старожилов мира СУБД, но и хипстеров?
Postgres. PostgreSQL. Postgres Pro
PostgreSQL создана на основе некоммерческой СУБД Postgres, разработанной в Калифорнийском университете в Беркли. К разработке Postgres, начавшейся в 1986 году, имел непосредственное отношение легендарный Майкл Стоунбрейкер, который вместе со своими студентами работал над ней в течение восьми лет. Новую версию передали команде энтузиастов; СУБД получила новое имя — PostgreSQL; ключевой вклад в развитие ядра системы в течение продолжительного вносят российские разработчики.
На базе PostgreSQL создано несколько вариантов СУБД, в том числе, и коммерческих. Одна из них — СУБД Postgres Pro отечественной компании «Постгрес Профессиональный», включенная в единый реестр российского ПО. Значительные расширения, предложенные в «Постгрес Профессиональный» и адресованные корпоративным пользователям СУБД, сделали Postgres Pro одним из самых заметных компонентов многочисленных инициатив последних лет, связанных с импортозамещением и миграцией баз данных.
Ключевым нововведением в PostgreSQL в последние годы стала встроенная поддержка JSON, появившаяся в версии PostgreSQL 9.2. Изначально она была реализована не слишком удачно, но уже в версии 9.4 поддержка JSONB придает почтенной СУБД значительное ускорение, подкрепленное сверхмощным индексированием.
«От NoSQL и больших данных уже успела накопиться некоторая усталость, – заметил аналитик компании Redmonk Джеймс Гавернор. – И вот внезапно разработчики обнаружили, что испытанная PostgreSQL является вполне жизнеспособной альтернативой MongoDB и Apache Cassandra».
Золотое дно? Да, практически. Все привыкли к тому, что реляционные СУБД не слишком хорошо справляются с масштабируемостью. Конечно, можно заложить свой дом и получить вертикальную масштабируемость Oracle начального уровня, но так сегодня в мире никто уже не работает. Опыт Google, Facebook и других доказывает, что на самом деле имеет значение масштабируемость горизонтальная – но и в этом отношении PostgreSQL в прошлом подрезали крылья.
Однако ключевое слово здесь – «в прошлом». Благодаря расширениям PostgreSQL (одно из таких расширений — Citus) теперь СУБД легко можно масштабировать на несколько узлов, придавая интеллектуальной распределенной обработке транзакций и SQL-запросов массовый параллелизм. PostgreSQL получает больше вычислительных мощностей, памяти и дискового пространства. Как указал лидер Citus Крейг Керстинс, стартапы, предлагающие сервисы SaaS, и уже зрелые предприятия, начинающие использовать PostgreSQL, могут делать это, не опасаясь, что позже для масштабирования им придется полностью перестраивать архитектуру для NoSQL. Благодаря Citus базы данных PostgreSQL получают достаточную масштабируемость.
Помимо новомодной масштабируемости и функциональности NoSQL разработчики PostgreSQL всегда совершенствовали и традиционные технологии СУБД. Речь идет прежде всего о надежном (без потерь) хранении данных. Когда я спросил, почему PostgreSQL испытывает такой ренессанс, большинство респондентов сосредоточились на впечатляющих (и довольно скучных) аспектах: целостности данных и их корректности, расширении функционала СУБД путем различных примочек, а также возможности обращения к другим системам из PostgreSQL с использованием внешних оболочек данных.
Как заметил директор компании Joyent по проектированию решений Элайджа Зупанчич, PostgreSQL предоставляет разработчикам весьма обширные права. «С точки зрения разработчика, эту СУБД приятно использовать, – подчеркнул он. – Документация прекрасна, типы данных отражают те типы, с которыми имеют дело разработчики, и неожиданностей практически нет. В отличие от всех прочих СУБД из первой десятки, PostgreSQL не зависит от какого-то одного поставщика. Это действительно нейтральное по отношению к конкретным поставщикам сообщество разработчиков программного обеспечения с открытым кодом».
Последнее говорит само за себя. Вполне возможно, что со временем PostgreSQL вытеснит MySQL. Почему? Потому что основной вклад в MySQL вносит единственный участник: Oracle. По словам технического директора OpsCompass Джона Гренджа, клиенты отдают предпочтение PostgreSQL в значительной мере именно потому, что Oracle не имеет к ней никакого отношения. И в этом отношении клиенты OpsCompass не одиноки.
Конечно, ни MySQL, ни Oracle не уступят в ближайшее время свои позиции ни PostgreSQL, ни кому бы то ни было еще. Тенденции, однако, благоприятствуют PostgreSQL. В определенной степени это происходит потому, что ветераны ценят ее устойчивость. Однако и хипстеры успели оценить скучную добродетель PostgreSQL. Как заявил один из них в свой публикации в Hacker News, «PostgreSQL требует определенной настройки, но, проделав это, вы получаете надежную рабочую лошадку, умеющую делать все, что вам нужно».