Подключение через PostgreSQL-протокол

Запуск YDB с включенным PostgreSQL

Сейчас функционал postgres-совместимости доступен в образе: ghcr.io/ydb-platform/local-ydb:nightly.

Команды для запуска локального докер-контейнера с YDB и открытыми портами postgres и Web-UI.

Совет

В этом примере контейнеры намеренно создаются так, чтобы их состояние удалялось после завершения работы. Это упрощает инструкцию и позволяет многократно запускать тесты в известном (чистом) окружении, не думая о поломках.

Для того чтобы состояние контейнера сохранялось: нужно убрать переменную окружения YDB_USE_IN_MEMORY_PDISKS.

Для запуска через конфигурационный файл docker-compose он уже должен быть установлен в системе

docker-compose.yaml:

services:
    ydb:
        image: ghcr.io/ydb-platform/local-ydb:nightly
        ports:
        - "5432:5432"
        - "8765:8765"
        environment:
        - "YDB_USE_IN_MEMORY_PDISKS=true"
        - "POSTGRES_USER=${YDB_PG_USER:-root}"
        - "POSTGRES_PASSWORD=${YDB_PG_PASSWORD:-1234}"
        - "YDB_EXPERIMENTAL_PG=1"

запуск:

docker-compose up -d --pull=always
docker run --name ydb-postgres -d --pull always -p 5432:5432 -p 8765:8765 -e POSTGRES_USER=root -e POSTGRES_PASSWORD=1234 -e YDB_EXPERIMENTAL_PG=1 -e YDB_USE_IN_MEMORY_PDISKS=true ghcr.io/ydb-platform/local-ydb:nightly

После запуска контейнера можно подключаться к нему через postgres-клиенты на порт 5432, база local или открыть веб-интерфейс на порту 8765.

Подключение к запущенному контейнеру через psql

При выполнении этой команды запустится интерактивный консольный клиент postgres. Все последующие запросы нужно вводить внутри этого клиента.

docker run --rm -it --network=host postgres:14 psql postgresql://root:1234@localhost:5432/local

Первый Hello world

SELECT 'Hello, world!';

Вывод:

    column0
---------------
 Hello, world!
(1 row)

Создание таблицы

Основная цель существования систем управления базами данных - сохранение данных для последующего извлечения. Как система, базирующаяся на SQL, основной абстракцией для хранения данных является таблица. Чтобы создать нашу первую таблицу, выполните следующий запрос:


CREATE TABLE example
(
    key int4,
    value text,
    PRIMARY KEY (key)
);

Добавление тестовых данных

Теперь давайте заполним нашу таблицу первыми данными. Самый простой способ - использовать литералы.

INSERT INTO example (key, value)
VALUES (123, 'hello'),
       (321, 'world');

Запрос к тестовым данным

SELECT COUNT(*) FROM example;

Вывод:

 column0
---------
       2
(1 row)

Остановка контейнера

Эта команда остановит запущенный контейнер и удалит все хранящиеся в нём данные.

В папке с исходным файлом docker-compose.yaml выполнить команду, которая остановит контейнер и удалит его данные:

docker-compose down -vt 1

Примечание

Для остановки контейнера с сохранением данных уберите из конфига переменную YDB_USE_IN_MEMORY_PDISKS и используйте команду остановки:

docker-compose stop

Эта команда остановит и удалит данные:

docker rm -f ydb-postgres
Предыдущая
Следующая