Совместимость YDB с PostgreSQL

Важно

На данный момент совместимость YDB с PostgreSQL находится в разработке, поэтому пока поддерживаются не все PostgreSQL конструкции и функции. PostgreSQL совместимость доступна для тестирования в виде Docker-контейнера, который можно развернуть, следуя данной инструкции.

PostgreSQL совместимость – это механизм выполнения SQL запросов в PostgreSQL диалекте на инфраструктуре YDB с использованием сетевого протокола PostgreSQL. Благодаря этой возможности можно использовать привычные инструменты работы с PostgreSQL, такие, как psql и драйвера (например, pq для Golang и psycopg2 для Python). Можно разрабатывать запросы на привычном PostgreSQL синтаксисе и получать такие преимущества YDB, как горизонтальная масштабируемость и отказоустойчивость.

PostgreSQL совместимость упрощает миграцию приложений, ранее работавших в экосистеме PostgreSQL. Сейчас поддерживается ограниченное количество инструкций и функций PostgreSQL 14. PostgreSQL совместимость позволяет переключаться с PostgreSQL на YDB без изменения кода проекта (в случае полной поддержки совместимостью используемых в проекте SQL-конструкций), просто изменив параметры подключения.

Принцип работы PostgreSQL совместимости можно описать так:

  1. Программа отправляет запросы в YDB, где их обрабатывает компонент под названием pgwire. Pgwire реализует сетевой протокол PostgreSQL и передает команды в query processor.
  2. Query processor транслирует PostgreSQL запросы в YQL AST.
  3. После обработки запросов результаты собираются и отправляются обратно в программу, отправившую запрос, по сетевому протоколу PostgreSQL. При обработке запроса он может распараллеливаться и исполняться на произвольном количестве узлов YDB.

Графически работу PostgreSQL совместимости можно представить так:
Схема работы PostgreSQL совместимости