|
 |
|
Учебник PostgreSQL 7.3.3
Всемирная группа разрабочиков PostgreSQL
Copyright © 1996-2002 by Всемирная Группа Разработчиков PostgreSQL
Перевёл с английского Виктор Вислобоков
2. Краткая история PostgreSQL Объектно-реляционная СУБД теперь известная как
PostgreSQL (и ранее называемая
Postgres95) ведЈт свое происхождение от пакета
POSTGRES, который был написан в департаменте
Беркли, Калифорнийского Университета. Более чем десятилетняя разработка
PostgreSQL сделала этот продукт одной из
наиболее продвинутых СУБД с открытым исходным кодом в мире, предлагая
многоверсионное управление параллельным доступом, поддерживая практически
все конструкции SQL (включая подзапросы, транзакции и определяемые
пользователем типы и функции) и имея широкий диапазон языков, с помощью
которых можно работать с СУБД (включая C, C++, Java, Perl, Tcl и Python).
2.1. Проект POSTGRES департамента Беркли Реализация реляционной СУБД
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.
2.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.
Интерфейс libpq остался доступным для
программ на C.
В дополнении к программе monitor, была предоставлена новая программа
(psql), которая использовала библиотеку
GNU Readline и была
предназначена для интерактивных SQL запросов.
Создана новая front-end библиотека, libpgtcl,
поддерживающая клиентов, основанных на Tcl.
Простая оболочка pgtclsh, предоставляющая
новые команды Tcl для обеспечения взаимодействия
Tcl программ и
Postgres95.
Была тщательно пересмотрена работа с большими объектами. Инверсионные
большие объекты представляли собой только механизм для хранения
больших объектов. (Инверсионная файловая система была удалена).
Была удалена instance-level система управления. Правила были
доступны как переписанные правила.
Вместе с исходным кодом стал поставляться краткий учебник по
особенностям работы с
SQL в Postgres95.
Для построения проекта стал использоваться GNU make
(вместо BSD make). Также,
Postgres95 был скомпилирован со
стандартной версией GCC
(выравнивание данных типа double было исправлено).
2.3. PostgreSQL В 1996 году было решено, что имя "Postgres95" не соответствует
настоящему времени. Мы выбрали новое имя
PostgreSQL чтобы подчеркнуть отличие от
оригинального POSTGRES и выход множества
версий с поддержкой SQL. В тоже время, мы установили
нумерацию версий начиная с 6.0, вернувшись обратно к нумерации, которую
начали в проекте Беркли POSTGRES.
При разработке Postgres95 акцент ставился на
обнаружение и понимание существующих проблем в коде продукта.
В PostgreSQL акцент сместился на расширение
возможностей и совместимости при продолжении работы во всех других областях.
Главные изменения в PostgreSQL включают:
Блокировка на уровне таблиц была заменена на многоверсионное управление
параллельным доступом, что позволяет клиентам производящим чтение,
продолжать чтение данных во время работы клиентов производящих запись,
а также позволяет производить горячее резервное копирование программой
pg_dump в то время, как база остается доступной для
запросов.
Были реализованы такие важные возможности, как подзапросы, умолчания,
ограничения целостности и триггеры.
Были добавлены возможности для обеспечения совместимости со стандартом
SQL92, включая первичные ключи, идентификаторы запросов,
literal string type coercion, создание типов,
а также двоичный и шестнадцатеричный ввод целых чисел.
Были улучшенные встроенные типы данных, включая новые широкодиапазонные
типы даты/времени и дополнительные геометрические типы данных.
Скорость работы backend кода была увеличена приблизительно на 20-40%,
а время запуска backend'а было сокращено на 80% по сравнению с версией 6.0.
Далее
|
|
|
 |
 |
|
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее... |
|