Обзор баз данных PostgreSQL
Свободное программное обеспечение становится все более актуальным. Компании привлекает независимость от решений правообладателя и возможность вносить модификации, дорабатывая его под индивидуальные потребности. Зачастую для предприятий, которые не могут эффективно выстроить бизнес-процессы на проприетарном ПО, это становится одним из самых важных доводов в пользу выбора open-source software.
Один из примеров успешного free software — объектно-реляционная система управления базами данных PostgreSQL. Изначально проект назывался Postgres, в дань уважения проприетарной системе управления реляционными базами данных SQL Ingres, из которой он вырос, но затем имя сменили на PostgreSQL — это было сделано, чтобы явно указать на поддержку SQL.
Особую популярность система завоевала на территории стран СНГ, а русскоязычное сообщество обеспечило значительный вклад в ее разработку. Несмотря на то, что само программное обеспечение бесплатно, работы по его внедрению, доработке и поддержке могут оплачиваться. Поэтому на базе PostgreSQL выпускается множество коммерческих продуктов. Самыми известными поставщиками выступают компания EnterpriseDB, расположенная в США, и Postgres Professional — компания из России.
PostgreSQL может стать хорошим выбором в качестве СУБД для миграции с других платформ. К примеру, продукт Postgres Pro от упомянутого выше российского разработчика Postgres Professional сертифицирован ФСТЭК и соответствует всем требованиям регулятора. PostgreSQL может работать на большом количестве операционных систем: как на популярных Microsoft Windows, Linux, macOS, так и на более редких HP-UX, IRIX, Solaris\OpenSolaris, Tru64 UNIX и других.
Особенности
PostgreSQL — это универсальная СУБД, использующая реляционную модель и обладающая широкими возможностями, сопоставимыми с лидерами рынка: как в open source, так и в проприетарном сегменте. Поддержка всех актуальных ОС — более 30 *nix, а также Windows, включая 2000, XP, 2003 и более современные, обеспечивает доступность установки практически на любом оборудовании.
Преимущества PostgreSQL
Одно из очевидных преимуществ PostgreSQL для бизнеса — бесплатность. Для компаний с ограниченным бюджетом это может послужить одним из главных критериев при выборе СУБД. Но несмотря на то, что бесплатность — это важное преимущество, позволяющее при необходимости развернуть сколько угодно экземпляров — оно не основное. Самое главное достоинство системы заключается в широком наборе инструментов для работы с базами, не уступающем коммерческим предложениям.
В этой ОРСУБД ничем не ограничен предельный размер баз данных, количество записей и индексов в таблице. Предельный размер таблицы может достигать 32 Тбайт, а размер записи — 1,6 Тбайт. Размер поля ограничен 1 Гбайт, а количество полей в записи может достигать 1600.
Надежность — один из важнейших показателей для выбора СУБД. С этим у PostgreSQL все в порядке, она полностью соответствует принципам ACID и обеспечивает стабильную и предсказуемую работу с данными. В целом высокая надежность достигается за счет:
- Write Ahead Logging — упреждающая журнализация, фиксирующая все изменения до их фактического применения.
- Многоверсионность — механизм обеспечивает возможность изменения баз данных одновременно разными пользователями.
- Point in Time Recovery — возможность откатить состояние базы данных к любой точке времени в прошлом, используя упреждающую журнализацию.
- PostgreSQL License — свободное использование и безопасность всего проекта.
- Целостность данных — поддерживается на уровне схемы: foreign keys, constraints.
PostgreSQL использует репликацию — работу сразу с несколькими копиями данных. Такой подход повышает как надежность, так и производительность за счет распределения серверов в разных географических точках. Репликация бывает потоковой, когда с основного сервера на реплики уходят журналы WAL для внесения изменений на месте, и логическая — основанная на записях в таблицах. Логическая — медленнее, но ее преимущество заключается в реализации взаимодействия между разными версиями PostgreSQL, операционных систем и архитектур.
Производительность — надежного хранения данных недостаточно для того, чтобы быть одной из лучших ОРСУБД, необходимо уметь быстро с ними работать, и PostgreSQL умеет. Высокая производительность достигается за счет использования индексов. Поддерживаются стандартные индексы, частичные и функциональные.
Другой функционал, обеспечивающий производительность:
- Система блокировок — оптимизация блокировки на нижнем уровне под определенную операционную систему и архитектуру.
- Tablespaces — используется для управления хранением данных на уровне объектов и за счет этого более вариативного распределения ресурсов хранилища.
- Планировщик запросов — позволяет выполнять тонкую настройку и оптимизацию запросов.
За счет слаженной работы гибкой системы блокировок, управления буферами и кешированием, планировщика задач и невысоких требований к ресурсам, система обеспечивает хорошую производительность и управляемость даже под сильной нагрузкой.
Расширяемость — еще одно ценное свойство PostgreSQL. В случае необходимости можно добавить собственные преобразования типов, домены, индексы, операторы, процедурные языки и так далее.
Отдельно нужно отметить наличие детальной документации. В целом, все возможности системы подробно описаны на почти 3000 страницах руководства, что важно и для начинающих пользователей и для опытных разработчиков, разворачивающих крупный проект. У PostgreSQL большое и активное сообщество, значительная часть которого русскоговорящие.
Недостатки PostgreSQL
Несмотря на высокую производительность в сравнении с другими ОРСУБД, для определенных задач, где критически важна скорость, иногда лучше выбрать другую СУБД. Так, например, если большая часть операций будет на чтение, то MySQL Database при правильных настройках окажется быстрее.
По большому счету сложно выискивать недостатки у такой быстрой и эффективной ОРСУБД, как PostgreSQL, которая при этом совершенно бесплатна. Недостатки могут проявиться только в случае необдуманного использования: к примеру, простые задачи можно решить эффективнее с помощью более простых инструментов.
Сферы применения PostgreSQL
Сферы применения PostgreSQL очень обширны, в основном из-за политики лицензирования, которая позволяет использовать ее без каких-либо ограничений и лицензионных отчислений, в том числе и в коммерческих проектах. От этого выигрывает и сам продукт и пользователи: бизнес экономит на отчислениях, а продукт получает огромное количество улучшений.
Среди пользователей PostgreSQL есть технологические гиганты — такие, как Huawei или Hitachi. Ее используют Amazon Redshift, Instagram, Reddit, Alibaba, Sony и другие крупные корпорации, а также огромное количество корпораций поменьше. Если свести области применения к обобщению, то можно выделить 2 категории:
- Online Transaction Processing (OLTP) — метод организации базы данных, в котором используются небольшие транзакции в реальном времени, поступающие с большой скоростью.
- Online Analytical Processing (OLAP) — метод организации работы с базами данных, при котором небольшое количество запросов включает в себя агрегирование массивных данных, зачастую из разных источников и в разных форматах.
Первый метод подходит для организации работы CRM и ERP-систем, автоматизированных банковских систем, отслеживания статистики с большим потоком мелких операций: автоматизации документооборота, складского учета, бухгалтерии.
Второй метод обычно используется для выборки и анализа данных, активно задействуется ETL. Одним из основных направлений являются решения Business intelligence и продукты финансового планирования.
Если говорить о WEB-решениях, то в разработке несложных сайтов лидерство все еще остается за MariaDB и MySQL. Тем не менее, для многоступенчатых сложных проектов и web-приложений разработчики сегодня предпочитают PostgreSQL.
В заключение
PostgreSQL — пример активно развивающейся свободной ОРСУБД с хорошей документацией и активным сообществом. О ее надежности говорит соответствие принципам ACID и встроенные механизмы тонкой настройки репликации.
Производительность достигается за счет использования современных решений и непрерывной модернизации системы огромным количеством пользователей: от самостоятельных разработчиков до крупных корпораций.