Подключение Trino к PostgreSQL®
В лабораторной работе мы рассмотрим:
сценарий подключения инстанса Trino к PostgreSQL®;
отправку запроса через популярный JDBC-клиент DBeaver;
создание, заполнение таблиц и объединение данных из двух таблиц через SQL-запрос.
Все сущности должны располагаться в одной VPC и подсетях одного типа.
Перед началом работы
-
Если вы уже зарегистрированы, войдите под своей учетной записью.
Создайте публичный SNAT-шлюз, чтобы обеспечить инстансу доступ в интернет и связь с внешними источниками.
-
monaas.write — для отправки данных в сервис Мониторинг.
logaas.writer — для отправки данных в сервис Логирование.
Установите JDBC-клиент DBeaver.
Создайте базу данных Managed PostgreSQL®
Авторизуйтесь в личном кабинете.
Перейдите в раздел Evolution и выберите сервис Managed PostgreSQL®, в правом верхнем углу нажмите Создать кластер.
Создайте две базы данных, следуя шагам, описанным в документации Managed PostgreSQL®.
Задайте следующие названия:
Названия кластеров DBaaS-PG-1 и DBaaS-PG-2.
Названия баз данных dbaas_pg_1 и dbaas_pg_2.
Дождитесь, когда статус обоих кластеров изменится на «Доступен».
Откройте карточки созданных кластеров PostgreSQL®. Информация из них понадобится на следующих этапах.
Создайте подключения к базе данных
Перейдите в раздел Evolution и выберите сервис Managed Trino.
Откройте раздел Подключения.
Нажмите Создать подключение.
Заполните поля следующими значениями:
Название — postgres_1.
Коннектор — PostgreSQL.
Хост — внутренний IP, указанный в карточке кластера DBaaS-PG-1.
Порт — порт, указанный в карточке кластера DBaaS-PG-1.
Название базы данных — dbaas_pg_1.
Логин — логин, указанный в карточке кластера DBaaS-PG-1.
Пароль — секретный ключ сервиса Secret Management.
Если нужного секрета нет, создайте новый, нажав Создать новый секрет.
Нажмите Создать.
Создайте второе подключение и заполните поля следующими значениями:
Название — postgres_2.
Коннектор — PostgreSQL.
Хост — внутренний IP, указанный в карточке кластера DBaaS-PG-2.
Порт — порт, указанный в карточке кластера DBaaS-PG-2.
Название базы данных — dbaas_pg_2.
Логин — логин, указанный в карточке кластера DBaaS-PG-2.
Пароль — секретный ключ.
Если нужного секрета нет, создайте новый, нажав Создать новый секрет.
Нажмите Создать.
На странице Managed Trino на вкладке Подключения появится две записи с названиями «postgres_1» и «postgres_2».

Создайте инстанс Trino
Перейдите в раздел Evolution и выберите сервис Managed Trino.
Откройте раздел Инстансы.
Нажмите Создать инстанс.
В блоке Общие параметры заполните поля:
Название — trino-instance-lab-1.
Сервисный аккаунт — выберите ранее созданный сервисный аккаунт.
Вычислительные ресурсы — Small (vCPU 4, RAM 16).
Количество нод — 3.
Подключение — выберите созданные подключения postgres_1 и postgres_2.
Нажмите Продолжить.
В блоке Сетевые настройки заполните поля:
VPC — выберите сеть VPC.
Зона доступности — выберите зону доступности, для которой создан SNAT-шлюз.
Подсеть — выберите подсеть, в которой располагается кластер PostgreSQL®.
Группа безопасности — выберите группу безопасности.
Подключить публичный хост — активируйте переключатель.
Пользователь — введите имя пользователя.
Пароль — выберите секретный ключ.
Нажмите Создать.
Дождитесь, когда статус инстанса изменится на «Готов».
Откройте карточку инстанса Trino. Информация из него понадобится на следующих этапах.

Подключите Trino к DBeaver
Откройте приложение DBeaver.
В панели сверху нажмите База данных → Новое соединение.
В списке соединений выберите Trino.
Нажмите Далее заполните поля на вкладке Главное:
Хост — публичный хост, указанный в карточке инстанса.
Порт — порт, указанный в карточке инстанса.
Пользователь — пользователь, указанный в карточке инстанса.
Пароль — пароль, указанный в карточке инстанса.
На вкладке Свойства драйвера измените значение свойства SSL на true.
Нажмите Тест соединения.
Нажмите Готово.
Слева в списке объектов появится две базы данных PostgreSQL® с названиями «postgres_1» и «postgres_2».

Отправьте SQL-запрос
Создайте схемы.
Для первой БД dbaas_pg_1:
CREATE SCHEMA IF NOT EXISTS postgres_1.labДля второй БД dbaas_pg_2:
CREATE SCHEMA IF NOT EXISTS postgres_2.lab
Создайте таблицы в базах данных.
Для первой БД 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)
Заполните таблицы.
Для первой БД 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)
Объедините таблицу с брендами в первой БД dbaas_pg_1 с названиями авто во второй БД dbaas_pg_2.
select c.name as car, b.name as brandfrom postgres_2.lab.car cleft join postgres_1.lab.brand bon c.brand_id = b.id
