🟣 Транспортный протокол PostgreSQL (также известный как PgWire) за минувшие десятилети...
🟣 Транспортный протокол PostgreSQL (также известный как PgWire) за минувшие десятилетия прошёл значимый путь развития. При этом он сохраняет обратную совместимость: сервер умеет «откатываться» на старую версию протокола, если это необходимо. 🟣 Ключевая библиотека, через которую клиенты «говорят» с сервером на этом протоколе называется libpq. Основные вехи развития протокола: ✔ Версия 1.0: Самый первый протокол времён Postgres 6.3. ✔ Версия 2.0: Использовался в Postgres 6.4 – 7.3. Запуск сервера осуществлялся через фиксированный формат стартового пакета. ✔ Версия 3.0 (революционная): Появилась в 2003 году с релизом PostgreSQL 7.4. Ключевое нововведение – расширенный протокол запросов (Extended Query Protocol), который стал основой современной работы. Почти все современные драйвера к PostgreSQL (и, в частности JDBC-драйвер) используют возможности именно этой версии. ✔ Версия 3.2 (2025): Первый значительный апдейт с 2003 года, выпущенный вместе с PostgreSQL 18. Из последних нововведений (PostgreSQL 18): ✔ Расширенный протокол: введение команд Parse, Bind, Execute, Describe, Close, Flush, Sync и соответствующих ответов сервера позволило кардинально сократить сетевой трафик и число RTT при выполнении подготовленных запросов. ✔ Конвейерная обработка: в libpq появился batch-режим (пайплайнинг), когда клиент отправляет на сервер серию запросов без ожидания ответа на каждый из них. Это иногда сокращает время исполнения серии запросов в десятки, а то и сотни раз. ✔ Ключ отмены запроса (cancel key) увеличен до 256 бит для повышения безопасности. Сжатие данных в протоколе — это функция, которую ждут многие и её реализация уже проработана до деталей: для включения сжатия в libpq достаточно указать опцию compression в строке подключения, а протокол для этого использует три новых типа сообщений: CompressionAck, CompressedData и SetCompressionMethod. Реализация пока отсутствует в "ванильном" PostgreSQL, но уже есть в некоторых коммерческих СУБД на его основе. 🟣 У нас в Digital Q.DataBase уже поддержано два самых популярных метода сжатия, отличающихся скоростью работы и коэффициентом сжатия. Ожидается, что 4-ая версия протокола также привнесет новые инновации - с нетерпением ждем его обновления. В любом случае, интересно наблюдать за развитием этого транспортного протокола.