PostgreSQL 6.0
PostgreSQL 6.0 — это версия свободной объектно-реляционной системы управления базами данных (СУБД) PostgreSQL, выпущенная 29 января 1997 года. Данный релиз стал первым, получившим название «PostgreSQL», сменив предыдущее имя «Postgres95», и ознаменовал собой важный этап в эволюции проекта, закрепив переход от исследовательской разработки к полноценному промышленному продукту, поддерживаемому сообществом.
История
Предыстория и проект Postgres
История PostgreSQL восходит к 1986 году, когда профессор Майкл Стоунбрейкер из Калифорнийского университета в Беркли начал разработку СУБД Postgres (Post Ingres). Первоначально проект был исследовательским, его целью было создание объектно-ориентированной базы данных, поддерживающей сложные типы данных и наследование. В 1994 году аспиранты Эндрю Ю и Джоли Чен добавили в Postgres поддержку языка SQL, создав версию Postgres95. В 1996 году проект был переименован в PostgreSQL, чтобы подчеркнуть его основную функциональность — поддержку SQL.
Разработка версии 6.0
Версия 6.0 стала результатом работы команды разработчиков, включавшей как бывших участников проекта Postgres, так и новых добровольцев из интернет-сообщества. Ключевыми фигурами в этот период были Марк Фурнье, Томас Локхарт и Том Лейн. Релиз 6.0 был выпущен под лицензией BSD, что было важным шагом, так как предыдущие версии Postgres имели ограничения на коммерческое использование. Выход 6.0 совпал с началом активного использования интернета и ростом потребности в надёжных и масштабируемых базах данных.
Ключевые изменения и нововведения
Полноценная поддержка SQL
Главным достижением версии 6.0 стала полноценная реализация стандарта SQL-92. В отличие от Postgres95, который поддерживал лишь базовые конструкции SQL, 6.0 включала:
- Поддержку подзапросов (вложенных SELECT).
- Полноценные операторы JOIN (INNER, LEFT, RIGHT, FULL).
- Агрегатные функции (SUM, AVG, COUNT, MIN, MAX) с группировкой (GROUP BY) и фильтрацией (HAVING).
- Ограничения целостности (PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK).
- Триггеры и хранимые процедуры на языке PL/pgSQL.
Улучшение производительности
Разработчики провели значительную работу по оптимизации ядра СУБД:
- Новый планировщик запросов: был переработан механизм оптимизации выполнения запросов, что позволило сократить время выполнения сложных операций.
- Улучшенная работа с индексами: версия 6.0 поддерживала B-деревья, хеш-индексы и R-деревья (для пространственных данных). Была улучшена производительность операций вставки и обновления.
- Многопоточность: хотя полноценная многопоточность была реализована позже, в 6.0 была улучшена обработка параллельных транзакций за счёт более эффективного использования механизма MVCC (Multiversion Concurrency Control).
Расширение функциональности
- Поддержка больших объектов (Large Objects): появилась возможность хранить и обрабатывать бинарные данные размером до 2 ГБ.
- Типы данных: были добавлены типы
timestamp(с часовым поясом и без),interval,numeric(с произвольной точностью). - Администрирование: появились утилиты
pg_dumpиpg_restoreдля резервного копирования и восстановления баз данных, а также командаVACUUMдля очистки и оптимизации таблиц.
Технические характеристики
Архитектура
PostgreSQL 6.0 работала по модели «один процесс на одно соединение» (fork-based). Каждый клиентский запрос обрабатывался отдельным процессом, что обеспечивало изоляцию и надёжность, но требовало значительных ресурсов при большом количестве соединений. Система поддерживала работу на Unix-подобных операционных системах (Linux, FreeBSD, Solaris, HP-UX, AIX).
Ограничения
- Максимальный размер базы данных: теоретически не ограничен, но на практике — до 32 ТБ (зависит от файловой системы).
- Максимальный размер таблицы: 16 ТБ.
- Максимальный размер строки: 8 КБ (с возможностью использования TOAST для хранения больших значений).
- Максимальное количество столбцов в таблице: 250.
Значение и влияние
Переход к открытому сообществу
Выход PostgreSQL 6.0 стал точкой отсчёта для современной модели разработки СУБД. В отличие от коммерческих продуктов, таких как Oracle или Informix, PostgreSQL с самого начала развивался как открытый проект, управляемый сообществом. Версия 6.0 привлекла первых крупных пользователей, в том числе исследовательские институты и небольшие компании, которые начали использовать её для веб-приложений и аналитики.
Влияние на индустрию
PostgreSQL 6.0 продемонстрировала, что свободная СУБД может конкурировать с коммерческими решениями по функциональности и надёжности. Она стала основой для многих проектов, включая:
- PostGIS (пространственные расширения, появившиеся позже).
- Slony-I (репликация).
- pgAdmin (инструмент администрирования).
Критика и недостатки
Отсутствие некоторых возможностей
Несмотря на значительный прогресс, версия 6.0 имела ряд ограничений:
- Отсутствие полной поддержки транзакций (DDL-операции, такие как ALTER TABLE, не были транзакционными).
- Ограниченная производительность при работе с очень большими таблицами (миллионы строк).
- Сложность настройки: для оптимальной работы требовалось ручное редактирование конфигурационных файлов.
- Отсутствие встроенной репликации и кластеризации.
Проблемы с документацией
Документация к версии 6.0 была неполной и часто устаревшей, что затрудняло освоение системы новыми пользователями. Многие функции описывались только в комментариях к исходному коду.
Интересные факты
- Версия 6.0 была выпущена всего через несколько месяцев после выхода Postgres95, что свидетельствует о высокой интенсивности разработки.
- Номер версии 6.0 был выбран, чтобы подчеркнуть преемственность с Postgres95 (версия 5.0) и обозначить новый этап развития.
- В состав дистрибутива входила утилита
psql— интерактивный терминал, который до сих пор является основным инструментом для работы с PostgreSQL. - Первый релиз PostgreSQL 6.0 весил около 3 МБ в сжатом виде и содержал около 100 000 строк кода на языке C.
Источники
- Официальная документация PostgreSQL (архивы версий).
- История проекта PostgreSQL на сайте postgresql.org.
- Статья «The Design of PostgreSQL» (M. Stonebraker, 1996).
- Книга «PostgreSQL: The First 20 Years» (Bruce Momjian, 2016).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →