{% include ./_includes/alert.md %}
PostgreSQL совместимость – это механизм выполнения SQL запросов в PostgreSQL диалекте на инфраструктуре YDB с использованием сетевого протокола PostgreSQL. Благодаря этой возможности можно использовать привычные инструменты работы с PostgreSQL, такие, как psql и драйвера (например, pq для Golang и psycopg2 для Python). Можно разрабатывать запросы на привычном PostgreSQL синтаксисе и получать такие преимущества YDB, как горизонтальная масштабируемость и отказоустойчивость.
PostgreSQL совместимость упрощает миграцию приложений, ранее работавших в экосистеме PostgreSQL. Сейчас поддерживается ограниченное количество инструкций и функций PostgreSQL 14. PostgreSQL совместимость позволяет переключаться с PostgreSQL на YDB без изменения кода проекта (в случае полной поддержки совместимостью используемых в проекте SQL-конструкций), просто изменив параметры подключения.
Принцип работы PostgreSQL совместимости можно описать так:
- Программа отправляет запросы в YDB, где их обрабатывает компонент под названием pgwire. Pgwire реализует сетевой протокол PostgreSQL и передает команды в query processor.
- Query processor транслирует PostgreSQL запросы в YQL AST.
- После обработки запросов результаты собираются и отправляются обратно в программу, отправившую запрос, по сетевому протоколу PostgreSQL. При обработке запроса он может распараллеливаться и исполняться на произвольном количестве узлов YDB.
Графически работу PostgreSQL совместимости можно представить так: