Краткая история PostgreSQL

Краткая история PostgreSQL

Объектно-реляционная СУБД, в настоящее время известная как PostgreSQL ведёт свое происхождение от пакета POSTGRES, который был написан в департаменте Беркли, Калифорнийского Университета. Более чем двадцатилетняя разработка PostgreSQL сделала этот продукт одной из наиболее продвинутых СУБД с открытым исходным кодом.

Проект POSTGRES департамента Беркли

Проект POSTGRES, под руководством профессора Майкла Стоунбрейкера (Michael Stonebraker), был спонсирован Агентством Расширенных Оборонных Исследовательских Проектов (Defense Advanced Research Projects Agency (DARPA)), Офисом Армейских Исследований (Army Research Office (ARO)), Национальным Научным Фондом (National Science Foundation (NSF)), а также ESL, Inc. Реализация реляционной СУБД POSTGRES началась в 1986. Начальные концепции для этой системы были представлены в The design of POSTGRES , а определение начальной модели данных было осуществлено в The POSTGRES data model . Устройство системы правил на тот момент, было описано в The design of the POSTGRES rules system. Обоснование архитектуры и менеджеры хранения были детально описаны в The design of the POSTGRES storage system .

Затем вышло несколько версий Postgres. Первая "demoware" система заработала в 1987 и была продемонстрирована в 1988 на Конференции ACM-SIGMOD. Версия 1, описанная в The implementation of POSTGRES была выпущена в июне 1989 года и могла работать с несколькими внешними пользователями. В ответ на критику первого варианта системы правил, был сделан следующий вариант (вариант A commentary on the POSTGRES rules system ) был переделан как ( On Rules, Procedures, Caching and Views in Database Systems ) и Версия 2, выпущенная в Июне 1990 года была основана на новой системе правил. Версия 3 выпущенная в 1991, включала в себя поддержку нескольких менеджеров хранения, улучшенный обработчик запросов и вновь переписанную систему правил. Большинство следующих версий до появления Postgres95 (см. ниже) были сфокусированы на вопросах переносимости и стабильности.

СУБД POSTGRES была использована для реализации многих различных исследований и написания приложений. Сюда вошли: система анализа финансовых данных, пакет мониторинга производительности реактивных двигателей, база данных перемещений астероидов, база данных медицинской информации и несколько географических информационных систем. СУБД POSTGRES также использовлась как средство обучения в нескольких университетах. Наконец компания Illustra Information Technologies (позднее влившаяся в компанию Informix, которой теперь владеет IBM) взяла код этой СУБД и коммерциализировала его. POSTGRES стал приоритетным менеджером данных для проекта научных вычислений Sequoia 2000 после 1992 года.

Размер сообщества пользователей этого продукта удвоился в 1993 году. Стало весьма очевидно, что обслуживание прототипа кода и его поддержка занимают гораздо больше времени, чем сами исследования в области баз данных. Пытаясь снизить нагрузку, связанную с поддержкой, проект Беркли POSTGRES официально прекратил своё существование с выходом версии 4.2.

Postgres95

В 1994, Эндрю Ю (Andrew Yu) и Джолли Чен (Jolly Chen) добавили в POSTGRES интерпретатор языка SQL. Затем Postgres95 был выложен в Интернет, чтобы найти свой собственный путь в мире продуктов с открытым исходным кодом, как потомок, основанный на оригинальном коде Беркли POSTGRES.

Postgres95 был полностью приведён к стандарту ANSI C и сократил свой размер на 25%. Были внесены многие внутренние изменения, которые увеличили производительность и обслуживаемость кода. Postgres95 версий 1.0.x был быстрее на 30-50% согласно Wisconsin Benchmark по сравнению с POSTGRES, Version 4.2. За исключением исправления ошибок, были сделаны следующие серьёзные расширения:

  • Язык запросов PostQUEL был заменен на SQL (реализованный в этом сервере). Подзапросы не поддерживались вплоть до выхода PostgreSQL (см. ниже), но в Postgres95 их можно было иммитировать с помощью функций SQL, определяемых пользователем. Агрегаты были переписаны. Также в запросы была добавлена поддержка GROUP BY.

  • Для интерактивных SQL запросов была предоставлена новая программа (psql), которая использовала библиотеку GNU Readline. Она вытеснила старую программу monitor.

  • Была создана новая front-end библиотека, libpgtcl, поддерживающая клиентов, основанных на Tcl. Простая оболочка pgtclsh, предоставила новые команды Tcl для обеспечения взаимодействия Tcl программ и Postgres95.

  • Была тщательно пересмотрена работа с большими объектами. Инверсионные большие объекты представляли собой только механизм для хранения больших объектов. (Инверсионная файловая система была удалена).

  • Была удалена instance-level система правил. Правила стали доступны как переписываемые правила.

  • Вместе с исходным кодом стал поставляться краткий учебник по особенностям работы с SQL в Postgres95.

  • Для построения проекта стал использоваться GNU make (вместо BSD make). Также, Postgres95 был скомпилирован со стандартной версией GCC (выравнивание данных типа double было исправлено).

PostgreSQL

В 1996 году было решено, что имя "Postgres95" не соответствует настоящему времени. Мы выбрали новое имя PostgreSQL чтобы подчеркнуть отличие от оригинального POSTGRES и выход множества версий с поддержкой SQL. В тоже время, мы установили нумерацию версий начиная с 6.0, вернувшись обратно к нумерации, которую начали в проекте Беркли POSTGRES.

Многие продолжают говорить о PostgreSQL как о "Postgres" (часто полностью заглавными буквами) потому что так привыкли или потому что так легче произносится. Это название широко используется в качестве сокращения или варианта полного названия PostgreSQL.

При разработке Postgres95 акцент ставился на обнаружение и понимание существующих проблем в коде сервера. В PostgreSQL акцент сместился на расширение возможностей и совместимости при продолжении работы во всех других областях.

Подробности о том, что происходило с тех пор с PostgreSQL, можно найти в Appendix E.

Back to top

(С) Виктор Вислобоков, 2008-2023