К хорошему привыкаешь быстро и кажется будто так было всегда.
К хорошему привыкаешь быстро и кажется будто так было всегда. Но иногда полезно оглянуться назад и вспомнить какой была наша любимая СУБД в прошлом. Давайте запустим нашу "машину времени" и сделаем несколько остановок в прошлом проекта PostgreSQL, ставшего основой для нашей СУБД Digital Q.DataBase. Поехали! 🕰️ Начало 2025 года: PostgreSQL 17 работает сильно медленнее привычного. Не удивительно, ведь в нём ещё нет асинхронного I/O (AIO) для параллельного чтения. Также в нем еще нет: · виртуальных генерируемых столбцов; · встроенной uuidv7(); · аутентификации через OAuth 2.0. 🕰️ 2023 год: В PostgreSQL 15 еще нет пакетной вставки для FDW через COPY. 🕰️ 2022 год. В PostgreSQL 14 еще нет: · команды MERGE (условное обновление/вставка); · сжатия TOAST через LZ4. 🕰️ 2019 год. PostgreSQL 11 ещё не знает что такое: · генерируемые столбцы; · JSON PATH для jsonb; · хранимые процедуры с транзакциями (только функции); · JIT-компиляция запросов. 🕰️ 2018 год. В PostgreSQL 10 еще нет хранимых процедур (CREATE PROCEDURE). Есть только функции (CREATE FUNCTION). Управлять транзакциями изнутри логики нельзя. 🕰️ 2017 год. В PostgreSQL 9.6 еще нет: · логической репликации; · декларативного секционирования (PARTITION BY). 🕰️ 2016 год. PostgreSQL 9.5 еще не знает: · параллельных запросов; · синхронной репликации с несколькими узлами. 🕰️ 2014 год. В PostgreSQL 9.3 еще нет: · типа jsonb; · команды ALTER SYSTEM (менять настройки без перезапуска сервера нельзя); Также нет даже зачатков логической репликации данных. 🕰️ 2012 год. PostgreSQL 9.1 еще не поддерживает JSON. Также в нем еще нет каскадной репликации. 🕰️ 2011 год. В PostgreSQL 9.0 еще нет: · знаменитого механизма расширений (CREATE EXTENSION); · доступа к внешним данным (FDW) в привычном нам виде. 🕰️ 2010 год. PostgreSQL 8.4 еще не имеет: · потоковой репликации; · встроенных средств для кластеров высокой доступности. 🕰️ 2009 год. В PostgreSQL 8.3 ещё нет: · оконных функций; · поддержки Common Table Expression (включая рекурсивные запросы); · доступа к данным из внешних источников. 🕰️ 2008 год. В PostgreSQL 8.2 еще нет: · полнотекстового поиска; · GIN-индексов. 🕰️ 2005 год. В PostgreSQL 8.0 еще нет: · ролей (есть только пользователи и группы); · двухфазных коммитов (2PC). 🕰️ 2001 год. PostgreSQL 7.0 ещё не имеет: · журнала предзаписи (WAL); · VACUUM без блокировки всей таблицы; · современного нам EXPLAIN. 🕰️ 2000 год (важная веха). В PostgreSQL 6.5 еще нет встроенного языка PL/pgSQL. Он появится лишь в PostgreSQL 7.0. А пока что функции пишутся только на C и "голом" SQL (без переменных, циклов и условий). Полноценной хранимой бизнес-логики нет. 🕰️ 1998 год. PostgreSQL 6.4 ещё не поддерживает операторы EXCEPT и INTERSECT. 🕰️ 1997 год. В PostgreSQL 6.2 еще нет триггеров и вложенных подзапросов (Subselects). 🕰️ 1995 год. Проект называется Postgres95. Имени «PostgreSQL» ещё нет. 🕰️ 1986 год. В предшественнике PostgreSQL еще нет языка SQL 😀. Вместо него используется язык POSTQUEL. 🕰️ 1970 год. Проект Ingres в Беркли — родоначальник всей линейки проектов, приведших к возникновению PostgreSQL, еще не начат. Ну вот и всё. Наше путешествие во времени подошло к концу. Надеюсь, что Вам понравилась наша "машина времени"! А теперь давайте вернёмся в настоящее и порадуемся тому, сколько всего умеет современный нам PostgreSQL и основанные на нем проекты. И заодно оценим, как долго и терпеливо создавался каждый фрагмент функциональности этой удивительной СУБД.