Подключение Trino к PostgreSQL®

В лабораторной работе мы рассмотрим:

  • сценарий подключения инстанса Trino к PostgreSQL®;

  • отправку запроса через популярный JDBC-клиент DBeaver;

  • создание, заполнение таблиц и объединение данных из двух таблиц через SQL-запрос.

Внимание

Все сущности должны располагаться в одной VPC и подсетях одного типа.

Перед началом работы

  1. Зарегистрируйтесь в личном кабинете Cloud.ru.

    Если вы уже зарегистрированы, войдите под своей учетной записью.

  2. Создайте публичный SNAT-шлюз, чтобы обеспечить инстансу доступ в интернет и связь с внешними источниками.

  3. Установите JDBC-клиент DBeaver.

Создайте базу данных Managed PostgreSQL®

  1. Авторизуйтесь в личном кабинете.

  2. Перейдите в раздел Evolution и выберите сервис Managed PostgreSQL®, в правом верхнем углу нажмите Создать кластер.

  3. Создайте две базы данных, следуя шагам, описанным в документации Managed PostgreSQL®.

    Задайте следующие названия:

    • Названия кластеров DBaaS-PG-1 и DBaaS-PG-2.

    • Названия баз данных dbaas_pg_1 и dbaas_pg_2.

  4. Дождитесь, когда статус обоих кластеров изменится на «Доступен».

  5. Откройте карточки созданных кластеров PostgreSQL®. Информация из них понадобится на следующих этапах.

Создайте подключения к базе данных

  1. Перейдите в раздел Evolution и выберите сервис Managed Trino.

  2. Откройте раздел Подключения.

  3. Нажмите Создать подключение.

  4. Заполните поля следующими значениями:

    • Название — postgres_1.

    • Коннектор — PostgreSQL.

    • Хост — внутренний IP, указанный в карточке кластера DBaaS-PG-1.

    • Порт — порт, указанный в карточке кластера DBaaS-PG-1.

    • Название базы данных — dbaas_pg_1.

    • Логин — логин, указанный в карточке кластера DBaaS-PG-1.

    • Пароль — секретный ключ сервиса Secret Manager.

      Если нужного секрета нет, создайте новый, нажав Создать новый секрет.

    ../_images/trino__connection-creation-postgresql.png
  5. Нажмите Создать.

  6. Создайте второе подключение и заполните поля следующими значениями:

    • Название — postgres_2.

    • Коннектор — PostgreSQL.

    • Хост — внутренний IP, указанный в карточке кластера DBaaS-PG-2.

    • Порт — порт, указанный в карточке кластера DBaaS-PG-2.

    • Название базы данных — dbaas_pg_2.

    • Логин — логин, указанный в карточке кластера DBaaS-PG-2.

    • Парольсекретный ключ.

      Если нужного секрета нет, создайте новый, нажав Создать новый секрет.

  7. Нажмите Создать.

На странице Managed Trino на вкладке Подключения появится две записи с названиями «postgres_1» и «postgres_2».

../_images/trino__connection-ready-postgres.png

Создайте инстанс Trino

  1. Перейдите в раздел Evolution и выберите сервис Managed Trino.

  2. Откройте раздел Инстансы.

  3. Нажмите Создать инстанс.

  4. В блоке Общие параметры заполните поля:

    • Название — trino-instance-lab-1.

    • Вычислительные ресурсы — Small (vCPU 4, RAM 16).

    • Количество нод — 3.

    • Подключение — выберите созданные подключения postgres_1 и postgres_2.

  5. Нажмите Продолжить.

  6. В блоке Сетевые настройки заполните поля:

    • VPC — выберите сеть VPC.

    • Зона доступности — выберите зону доступности, для которой создан SNAT-шлюз.

    • Подсеть — выберите подсеть, в которой располагается кластер PostgreSQL®.

    • Группа безопасности — выберите группу безопасности.

    • Подключить публичный хост — активируйте переключатель.

    • Пользователь — введите имя пользователя.

    • Пароль — выберите секретный ключ.

  7. Нажмите Создать.

  8. Дождитесь, когда статус инстанса изменится на «Готов».

  9. Откройте карточку инстанса Trino. Информация из него понадобится на следующих этапах.

../_images/trino__instance-ready-postgres.png

Подключите Trino к DBeaver

  1. Откройте приложение DBeaver.

  2. В панели сверху нажмите База данных → Новое соединение.

  3. В списке соединений выберите Trino.

  4. Нажмите Далее заполните поля на вкладке Главное:

    • Хост — публичный хост, указанный в карточке инстанса.

    • Порт — порт, указанный в карточке инстанса.

    • Пользователь — пользователь, указанный в карточке инстанса.

    • Пароль — пароль, указанный в карточке инстанса.

    ../_images/dbeaver__connection-1.png
  5. На вкладке Свойства драйвера измените значение свойства SSL на true.

    ../_images/dbeaver__connection-2.png
  6. Нажмите Тест соединения.

  7. Нажмите Готово.

Слева в списке объектов появится две базы данных PostgreSQL® с названиями «postgres_1» и «postgres_2».

../_images/dbeaver__connection-ready-1.png

Отправьте SQL-запрос

  1. Создайте схемы.

    • Для первой БД dbaas_pg_1:

      CREATE SCHEMA IF NOT EXISTS postgres_1 . lab
    • Для второй БД dbaas_pg_2:

      CREATE SCHEMA IF NOT EXISTS postgres_2 . lab
  2. Создайте таблицы в базах данных.

    • Для первой БД dbaas_pg_1:

      CREATE TABLE IF NOT EXISTS postgres_1 . lab . brand ( id INT , name VARCHAR ( 255 ))
    • Для второй БД dbaas_pg_2:

      CREATE TABLE IF NOT EXISTS postgres_2 . lab . car ( id INT , name VARCHAR ( 255 ), brand_id INT )
  3. Заполните таблицы.

    • Для первой БД dbaas_pg_1:

      INSERT INTO postgres_1 . lab . brand values ( 1 , 'Mazda' ), ( 2 , 'BMW' ), ( 3 , 'Kia' )
    • Для второй БД dbaas_pg_2:

      INSERT INTO postgres_2 . lab . car values ( 1 , 'CX-5' , 1 ), ( 2 , 'CX-9' , 1 ), ( 3 , 'Rio' , 3 ), ( 4 , 'X3' , 2 ), ( 5 , 'X5' , 2 )
  4. Объедините таблицу с брендами в первой БД dbaas_pg_1 с названиями авто во второй БД dbaas_pg_2.

    select c . name as car , b . name as brand
    from postgres_2 . lab . car c
    left join postgres_1 . lab . brand b
    on c . brand_id = b . id
../_images/dbeaver__request-result.png
Evolution