Skip to content

Latest commit

 

History

History
15 lines (10 loc) · 2.86 KB

intro.md

File metadata and controls

15 lines (10 loc) · 2.86 KB

Совместимость {{ ydb-short-name }} с PostgreSQL

{% 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 совместимости можно описать так:

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

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