- PVSM.RU - https://www.pvsm.ru -
Postgres 17.0 уже вышла, и она замечательная, но реальность такова: большинство пользователей Postgres не выполняют апгрейд сразу же. Многие, вероятно, сейчас даже не на 16.4, и даже не на 16, они пользуются Postgres 15 или ещё более старой версией. Ситуация с Postgres не такая же, как с новыми Call of Duty, когда каждый хочет скачать обновление сразу же после его выхода.
Почему же люди так неохотно идут на апгрейд?
На то есть множество причин, но всё сводится к двум основным: качество работы Postgres и неудобство апгрейдов.
Наша команда контрибьютила в Postgres 17, и мы в восторге от новых возможностей и оптимизаций. Но большинство разработчиков не похожи на нас, для них база данных — это просто инструмент.
И Postgres был отличным инструментом за много версий до 17. Старые версии Postgres более чем справляются с тем, что нужно большинству разработчиков. Базовая функциональность Postgres присутствует в ней уже много лет. Фундаментальная мощь Postgres заключается в том, что она позволяет разработчикам создавать надёжные масштабируемые приложения, не задумываясь о версии базы данных.
Но это не значит, что Postgres не совершенствуется
Например, допустим, вы сейчас работаете с версией 12. С её выпуска производительность Postgres существенно выросла:
Такие внутренние улучшения крайне важны для повышения качества приложений. Между версиями Postgres 8 и 16 время задержки уменьшилось наполовину [4] (за секунду):
И мы ещё не говорили об усилении безопасности, устранении багов и, разумеется, о новых возможностях. В новых версиях появилась поддержка SQL-команды MERGE [5], конструкторов SQL/JSON, тождественных отображений, распараллеленного vacuuming индексов…
Но стоит взглянуть и на другую сторону медали: если вы не стремитесь действительно достичь пределов производительности Postgres и не ищите любые возможные улучшения или вам не нужна новая функциональность, то Postgres 12 вас вполне устроит.
Именно в этом заключается первая причина нежелания апгрейда Postgres многими пользователями: Postgres и так их вполне устраивает. Но мы бы обманывали себя, если бы не признали, насколько мучительным может быть переход на основные версии Postgres, особенно в случае крупных баз данных в продакшене.
Основные версии Postgres могут вносить обратно несовместимые изменения (с младшими версиями такого не бывает), поэтому компаниям гораздо сложнее выполнять автоматический апгрейд.
Чтобы осознать картину, давайте рассмотрим две опубликованные истории компаний, выполнивших апгрейды Postgres в продакшене с перепрыгиванием нескольких основных версий: Knock [6] (она обновлялась с Postgres 11 до 15) и Retool [7] (с Postgres 9 на 13). Это серьёзный переход, к которому нужно готовиться стратегически.
Этим компаниям пришлось сделать следующее:
Да, это большой объём работы, и его никак не избежать. Апгрейд базы данных Postgres в продакшене вперёд на несколько версий требует существенных вложений времени и ресурсов. Многие организации может пугать такой объём затрат, поэтому они часто откладывают апгрейды до тех пор, пока те не станут абсолютно необходимы.
Несмотря на всё это, мы рекомендуем вам апгрейдиться!
Даже если вас не убедили потрясающие новые возможности Postgres 17 [9], то есть и другие причины:
Частично отсутствие мотивации к апгрейду вызвано необходимостью ручного сравнения release notes между версиями и выявлением недостающих вам улучшений. Чтобы упростить этот процесс, мы создали инструмент https://pgversions.com/ [10]. Он позволяет быстро выявлять улучшения, которые вам недоступны из-за использования старой версии Postgres. Например, если у вас установлена Postgres 16.1, то pgversions.com сообщит, что вам недоступны:
Если pgversions [10] наконец-то придаст вам мотивации к апгрейду, то можете изучить раздел отчёта How to upgrade
, в котором приведены ссылки на документацию различных поставщиков.
Автор: ru_vds
Источник [11]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/bazy-danny-h/400663
Ссылки в тексте:
[1] Postgres 14: https://www.postgresql.org/docs/release/14.0/
[2] Postgres 15: https://www.postgresql.org/docs/release/15.0/
[3] Postgres 16: https://www.postgresql.org/docs/release/16.0/
[4] время задержки уменьшилось наполовину: https://rmarcus.info/blog/2024/04/12/pg-over-time.html
[5] MERGE: https://www.postgresql.org/docs/15/sql-merge.html
[6] Knock: https://knock.app/blog/zero-downtime-postgres-upgrades
[7] Retool: https://retool.com/blog/how-we-upgraded-postgresql-database
[8] Warp: https://www.citusdata.com/blog/2017/12/08/citus-warp-pain-free-migrations/
[9] потрясающие новые возможности Postgres 17: https://www.postgresql.org/about/news/postgresql-17-released-2936/
[10] https://pgversions.com/: https://pgversions.com/
[11] Источник: https://habr.com/ru/companies/ruvds/articles/852266/?utm_source=habrahabr&utm_medium=rss&utm_campaign=852266
Нажмите здесь для печати.