Выполнение запросов

Важно

Поддержка синтаксиса PostgreSQL в YDB находится в разработке. Использовать её в production окружениях не рекомендуется. Запросы в PostgreSQL могут исполняться до нескольких раз медленнее по сравнению с аналогичными запросами на YQL.

Основной сценарий, который можно тестировать — выполнение аналитических запросов к хранимым в YDB данным.

Существует несколько способов запуска запросов на диалекте PostgreSQL:

  1. Использование нативных PostgreSQL-инструментов. YDB обладает сервисом совместимости для поддержки нативного сетевого протокола PostgreSQL - pgwire, поэтому к YDB можно подключаться стандартными клиентами PostgreSQL.
  2. Использование нативных YDB инструментов и явного указания, что запрос выполняется в синтаксисе PostgreSQL с помощью параметров (настроек) этих инструментов при выполнении запросов.
  3. Использование любых инструментов, взаимодействующих с YDB и явного указания, что запрос выполняется в синтаксисе PostgreSQL с помощью специального комментария в начале тела запроса --!syntax_pg.

Нативный сетевой протокол PostgreSQL

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

Для подключения необходимо выполнить предварительные шаги:

  1. Получить адрес кластера, к которому производится подключение.
  2. Получить название базы данных в кластере, к которому производится подключение.

Выполнить запрос в YDB:

psql -h <ydb_address> -U <user_name> <database_name>

Где:

  • <ydb_address> - адрес кластера YDB, к которому выполняется подключение.
  • <database_name> - название базы данных в кластере. Может быть сложным именем, например, mycluster/tenant1/database.
  • <user_name> - логин пользователя.

Использование стандартных инструментов YDB

Выполнять запросы на PostgreSQL-диалекте можно с помощью любых инструментов YDB, явно указав в начале тела запроса признак диалекта с помощью специального комментария: --!syntax_pg.

Для подключения необходимо выполнить предварительные шаги:

  1. Получить адрес кластера, к которому производится подключение.
  2. Получить название базы данных в кластере, к которому производится подключение.

Выполнить запрос к YDB:

ydb -e <ydb_address> -d <database_name> --user <user_name> sql -s '--!syntax_pg
SELECT 1;
'

Где:

  • <ydb_address> — адрес кластера YDB, к которому выполняется подключение.
  • <database_name> — название базы данных в кластере. Может быть сложным именем, например, mycluster/tenant1/database/.
  • <user_name> — логин пользователя.