Обзор СУБД PostgreSQL: в чем преимущества и секрет успеха?

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



История PostgreSQL

СУБД PostgreSQL начиналась как исследовательский проект в Калифорний­ском университете в Беркли. С 1996 года она разрабатывалась сообществом, и до сих пор в разработке PostgreSQL принимают активное участие сообщества и университеты. Перечислим основные исторические вехи:

  • 1977-1985, проект Ingres: Майкл Стоунбрейкер (Michael Stonebraker) создал РСУБД на основе формальной реляционной модели;
  • 1986-1994, postgres: Майкл Стоунбрейкер (Michael Stonebraker) создал postgres, чтобы поддержать сложные типы данных и объектно-реляци­онную модель;
  • 1995, Postgres95: Эндрю Ю (Andrew Yu) и Джолли Чен (Jolly Chen) моди­фицировали язык запросов PostQUEL, являвшийся частью postgres, пре­вратив его в расширенное подмножество SQL;
  • 1996, PostgreSQL: группа разработчиков потратила много времени и труда, чтобы стабилизировать postgres95. Первая версия с открытым исходным кодом была выпущена 29 января 1997 года. Поскольку проект стал открытым и в него были добавлены новые возможности и дополне­ния, название postgres95 изменили на PostgreSQL.

Первая версия PostgreSQL имела номер 6, что можно оправдать нескольки­ми годами напряженных исследований и разработок. Будучи проектом с очень хорошей репутацией, PostgreSQL привлекла сотни разработчиков. В настоящее время PostgreSQL может похвастаться бесчисленными расширениями и очень активным сообществом.

Преимущества PostgreSQL

PostgreSQL обладает многими возможностями, которые привлекают разработ­чиков, администраторов, архитекторов и компании.

Преимущества PostgreSQL с точки зрения бизнеса

PostgreSQL - бесплатное ПО с открытым исходным кодом. Она выпускается на условиях весьма либеральной лицензии PostgreSQL. СУБД не может быть монополизирована и приобретена, что дает компаниям следующие преиму­щества:

  • за лицензирование не нужно платить;
  • количество развернутых экземпляров PostgreSQL не ограничено;
  • более выгодная бизнес-модель;
  • PostgreSQL совместима со стандартами SQL, поэтому нетрудно найти профессиональных разработчиков. PostgreSQL несложна для освоения, а перенос кода из другой СУБД обходится недорого. Кроме того, адми­нистрирование PostgreSQL легко автоматизировать, что позволяет су­щественно сэкономить на зарплате персоналу;
  • PostgreSQL - кросс-платформенное ПО, к нему существуют интерфейсы из всех современных языков программирования, поэтому нет нужды из­менять политику компании в части набора используемого ПО;
  • PostgreSQL хорошо масштабируется и обеспечивает высокую произво­дительность;
  • PostgreSQL очень надежна, аварийное завершение случается редко. Кро­ме того, PostgreSQL в полной мере поддерживает свойства ACID, т. е. устойчива к некоторым отказам оборудования. К тому же СУБД можно сконфигурировать и установить как кластер для обеспечения высокой доступности.

Преимущества PostgreSQL с точки зрения пользователя

PostgreSQL весьма привлекательна для разработчиков, администраторов и ар­хитекторов. Развитая функциональность позволяет гибко решать различные задачи. Перечислим некоторые ее преимущества с точки зрения разработчика: О новые версии выходят ежегодно; к настоящему моменту, начиная с вер­сии 6.0, было выпущено 24 основные версии;

  • наличие великолепной документации и активного сообщества позволя­ет быстро находить ответы на возникающие вопросы. Руководство по PostgreSQL насчитывает свыше 2500 страниц;
  • богатый арсенал расширений позволяет разработчику сосредоточиться на логике приложения, а также оперативно реагировать на изменение требований;
  • исходный код бесплатен. Его можно адаптировать под свои нужды без особого труда;
  • развитая экосистема клиентов и административных средств позволяет легко и быстро выполнять такие рутинные задачи, как описание объ­ектов базы данных, экспорт и импорт данных, резервное копирование и восстановление базы;
  • решение административных задач не занимает много времени и под­дается автоматизации;
  • PostgreSQL легко интегрируется с другими СУБД, что открывает возмож­ность для гибкой реализации программных проектов.

Применения PostgreSQL

PostgreSQL применяется в различных ситуациях. Основные области примене­ния PostgreSQL можно отнести к двум категориям:

  • обработка транзакций в реальном времени (OLTP): OLTP характеризу­ется большим количеством операций вставки, обновления и удаления, очень высокой скоростью работы и поддержанием целостности данных в многопользовательской среде. Производительность измеряется коли­чеством транзакций в секунду;
  • интерактивная аналитическая обработка (OLAP): OLAP характеризует­ся небольшим количеством сложных запросов, включающих агрегирова­ние данных, получение гигантских объемов данных из разных источни­ков в разных форматах, добычу данных и анализ исторических данных.

OLTP применяется для моделирования таких приложений, как управление взаимоотношениями с клиентами (CRM). Например, сайт торговли авто­мобилями из предыдущей статьи - пример OLTP-приложения. OLAP находит применение в задачах бизнес-аналитики, поддержки принятия решений, генерации от­четов и планирования. Размер базы данных для OLTP сравнительно невелик по сравнению с базой данных OLAP. При проектировании базы данных OLTP обычно придерживаются концепций реляционной модели, в т. ч. нормализа­ции, тогда как базы данных OLAP меньше похожи на реляционные; схема час­то имеет вид звезды или снежинки, а данные намеренно денормализованы.

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

В отличие от OLTP, основная операция OLAP - выборка и анализ данных. Данные для OLAP часто генерируются процессом извлечения, преобразова­ния и очистки (ETL), который загружает данные в базу OLAP из разных ис­точников в разных форматах. Для OLTP-приложений достаточно PostgreSQL в стандартной комплектации. А для поддержки OLAP имеется много расши­рений и инструментов, в т. ч. адаптеры внешних данных (foreign data wrap­pers - FDW), секционирование таблиц, а в последних версиях еще и параллель­ное выполнение запросов.

Истории успеха

PostgreSQL используется во многих отраслях, например телекоммуникации, медицина, географические приложения и электронная коммерция. Есть много компаний, оказывающих коммерческие консультационные услуги, например в переходе с коммерческой РСУБД на PostgreSQL с целью уменьшения лицен­зионных платежей. Такие компании часто оказывают влияние на развитие PostgreSQL, разрабатывая новые средства. Перечислим несколько компаний, применяющих PostgreSQL:

  • в Skype PostgreSQL используется для хранения чатов и истории дей­ствий. Компания Skype разработала для PostgreSQL много инструментов под общим названием SkyTools;
  • Instagram - социальная сеть для обмена фотографиями;
  • Американское химическое общество (ACS) использует PostgreSQL для хранения архивов журнала объемом свыше терабайта.
  • Помимо этих компаний, PostgreSQL используется в HP, VMware и Heroku, а также многими научными обществами и организациями, в частности NASA.

Ответвления

Ответвлением называется независимый программный проект, основанный на каком-то другом проекте. От PostgreSQL существует более 20 ответвлений; расширяемый API этому весьма способствует. На протяжении многих лет раз­личные группы создавали ответвления и затем включали результаты своей работы в PostgreSQL.

  • HadoopDB - гибрид PostgreSQL с технологиями MapReduce, ориентиро­ванный на аналитику. Ниже перечислены наиболее популярные ответ­вления от PostgreSQL:
  • в Greenplum используется архитектура без разделения ресурсов с мас­сово параллельной обработкой (MPP). Применяется для создания хра­нилищ данных и аналитики. Greenplum начиналась как коммерческий проект, но в 2015 году ее код был раскрыт;
  • EnterpriseDB Advanced Server - коммерческая СУБД, дополняющая PostgreSQL средствами Oracle;
  • Postgres-XC (eXtensible Cluster) - кластер на основе PostgreSQL с не­сколькими ведущими узлами, построенный на базе архитектуры без раз­деления ресурсов. Упор сделан на масштабируемость записи, приложе­ниям предоставляется тот же API, что и в PostgreSQL;
  • Vertica - столбцовая база данных, разработка которой была начата Май­клом Стоунбрейкером в 2005 году. В 2011 году проект был приобретен компанией HP. Vertica заимствовала у PostgreSQL синтаксический ана­лизатор SQL, семантический анализатор и стандартные методы перепи­сывания SQL-запросов;
  • Netezza - популярное хранилище данных, начавшее жизнь как ответ­вление от PostgreSQL;
  • Amazon Redshift - популярное хранилище данных, основанное на Post- greSQL 8.0.2. Предназначено в основном для приложений OLAP.

Архитектура PostgreSQL

В PostgreSQL используется клиент-серверная архитектура, когда клиент и сер­вер могут находиться в различных узлах. Обмен данными между клиентом и сервером обычно ведется по протоколу TCP/IP или через Linux-сокеты. Сер­вер PostgreSQL может одновременно обрабатывать несколько подключений клиентов. Типичная программа, работающая с PostgreSQL, состоит из следую­щих процессов операционной системы:

  • клиентский процесс: фронтальная часть приложения отправляет за­просы базе данных. В этой роли может выступать веб-сервер, которому нужно построить веб-страницу, или командная утилита для решения задач обслуживания. В состав PostgreSQL входят фронтальные команды psql, createdb, dropdb, createuser и другие;
  • серверный процесс: управляет файлами базы данных, принимает за­просы на подключение от клиентов и выполняет действия по их требова­нию. Серверный процесс называется postgres. PostgreSQL создает новый процесс для каждого подключения, поэтому процессы клиента и сервера общаются между собой, не прерывая главный серверный процесс. Сер­верные процессы существуют в течение ограниченного времени - до за­вершения соединения с клиентом.

Описанная концептуальная архитектура PostgreSQL дает представление о возможностях СУБД, а также о взаимодействии с клиентами и операционной системой. В сервере можно приблизительно выделить четыре подсистемы:

  • диспетчер процессов: управляет клиентскими подключениями, в част­ности создает и завершает процессы;
  • процессор запросов: запрос, отправленный клиентом PostgreSQL, раз­бирается синтаксическим анализатором, после чего подсистема регу­лировщика определяет тип запроса. Служебные запросы передаются служебной подсистеме. Запросы выборки, обновления и удаления моди­фицируются перезаписывателем, после чего планировщик генерирует план выполнения. Наконец, запрос выполняется, и результат возвраща­ется клиенту;
  • служебная подсистема: предоставляет средства обслуживания базы данных, например: затребование места в системе хранения, обновление статистики, экспорт и импорт данных в определенном формате, прото­колирование путем обращения к регистратору;
  • диспетчер памяти: отвечает за управление кешем и дисковыми буферами, выделяет память.

Архитектура PostgreSQL

Почти все компоненты PostgreSQL, включая регистратор, планировщик, анализатор статистики и диспетчер памяти, допускают конфигурирование. Конфигурация PostgreSQL выбирается в соответствии с характером приложе­ния: OLAP или OLTP.

Сообщество PostgreSQL

PostgreSQL располагает весьма активным и организованным сообществом, всегда готовым прийти на помощь. За последние 8 лет сообщество выпустило восемь основных версий. Разработчикам рассылаются объявления в ежене­дельном бюллетене.

Существуют десятки списков рассылки, сгруппированных по категориям, например: пользователь, разработчик, ассоциация. В качестве примеров упо­мянем списки pgsql-general, psql-doc и psql-bugs. Для начинающих особенно важен список pgsql-general. В нем обсуждаются любые вопросы, касающиеся установки, настройки, основ администрирования, возможностей PostgreSQL, ведутся дискуссии на общие темы - в общем, всё, кроме ошибок.

Сообщество PostgreSQL поддерживает службу агрегирования блогов Planet PostgreSQL. Некоторые разработчики и компании с ее помощью делятся своими знаниями и опытом.

Вас заинтересует / Intresting for you:

Устанавливать или обновлять Po...
Устанавливать или обновлять Po... 1761 просмотров Максим Николенко Sat, 23 Jul 2022, 19:06:02
Установка PostgreSQL 10.5 из и...
Установка PostgreSQL 10.5 из и... 2667 просмотров Tarcoola Ningae Sun, 19 Aug 2018, 11:45:55
Установка PostgreSQL из дистри...
Установка PostgreSQL из дистри... 4356 просмотров Tarcoola Ningae Sun, 19 Aug 2018, 12:02:39
Оптимизация SQL запросов в Pos...
Оптимизация SQL запросов в Pos... 1297 просмотров Aaltonen Sat, 26 Nov 2022, 08:54:22
Войдите чтобы комментировать

ildergun аватар
ildergun ответил в теме #10630 1 год 9 мес. назад
Хорошо. Ждем обзор по новой версии базы данных PostgreSQL!
apv аватар
apv ответил в теме #10618 1 год 9 мес. назад
База данных PostgreSQL очень набирает популярность сейчас. Благодарю за обзор. Желательно актуализировать под новую версию!