Обзор Trino ADB connector
Для подключения к кластеру ADB через Trino-коннектор необходимо создать новый каталог Trino.
В конфигурации каталога должен использоваться тип коннектора greengagedb, а также должны быть указаны следующие параметры (минимальный набор):
connector.name=greengagedb (1)
connection-url=jdbc:postgresql://<adb_master>:6000/database (2)
connection-user=<adb_username> (3)
connection-password=<password>
| 1 | Выбор типа коннектора для работы с ADB.
Начиная с версии ADH 4.2.0 поддерживаются два взаимозаменяемых имени: connector.name=greengagedb и connector.name=adb. |
| 2 | JDBC-строка для подключения к мастер-хосту кластера ADB. Коннектор использует JDBC-драйвер PostgreSQL и поддерживает все его свойства конфигурации, а также наследует ограничения. Больше информации доступно на странице PostgreSQL connector. |
| 3 | Пользователь ADB, используемый коннектором для подключения к ADB-кластеру. Пользователь должен быть заранее создан на стороне ADB и должен иметь достаточные права для выполнения запросов. |
Режимы работы
Trino-коннектор может взаимодействовать с кластером ADB в нескольких режимах, описанных ниже.
| Режим | Чтение | Запись | Описание |
|---|---|---|---|
JDBC |
Да |
Да |
Режим по умолчанию для взаимодействия коннектора и ADB-кластера через драйвер JDBC. Не поддерживает параллельные операции чтения/записи и другие оптимизации. Это самый медленный, но при этом самый надежный режим, который используется в тех случаях, когда другие режимы недоступны |
gpfdist |
Да |
Да |
gpfdist — это утилита для распределенных операций чтения и записи данных из файлов, которая позволяет параллельно загружать и выгружать данные из внешних таблиц ADB. Под капотом коннектор Trino разворачивает серверы gpfdist на хостах ADH, а сегменты ADB используют gpfdist-клиенты для параллельного обмена данными с коннектором. Данный режим активируется с помощью параметра |
Parallel cursor |
Да |
Нет |
Модуль |
Включение режима параллельного курсора
Для активации режима параллельного курсора необходимо выполнить следующее:
-
В ADB-кластере создайте расширение
gp_parallel_retrieve_cursor:CREATE EXTENSION gp_parallel_retrieve_cursor; -
При создании нового Trino-каталога для ADB установите параметр
greengagedb.read-mode=PARALLEL_CURSOR(параметр сессииgreengagedb.read_mode=PARALLEL_CURSOR).
|
ВАЖНО
Для использования режима параллельного курсора значение параметра |
Логика выбора режима и переключение на JDBC
Выбор режима чтения
Режим чтения коннектора определяется параметром greengagedb.read-mode, который может принимать следующие значения:
-
PARALLEL_CURSOR -
GPFDIST -
JDBC -
AUTO
В следующей таблице приведены подробности реализации каждого режима.
| Режим чтения | Подробности реализации |
|---|---|
PARALLEL_CURSOR |
Используется только при явном указании |
GPFDIST |
Если какой-либо столбец в выборке не поддерживается gpfdist, чтение через gpfdist прерывается и используется JDBC |
JDBC |
Используется в качестве резервного режима. Правила переключения на JDBC:
|
AUTO |
Если установлен параметр |
Поддержка операций
Поддержка SQL-команд
В следующей таблице перечислены SQL-операции, поддерживаемые на уровне коннектора.
| Операция | Поддержка | Примечание |
|---|---|---|
SELECT |
Да |
Режим чтения выбирается на основе параметра |
INSERT / CTAS |
Да |
Используется gpfdist, если |
UPDATE / DELETE / MERGE |
Да |
Команды DML выполняются через JDBC |
CREATE/DROP TABLE, CREATE/DROP SCHEMA, RENAME SCHEMA |
Да |
Команды DDL выполняются через JDBC |
ALTER TABLE, ADD/DROP/RENAME COLUMN |
Да |
Команды DML выполняются через JDBC |
ALTER COLUMN TYPE / DROP NOT NULL |
Да |
Команды DML выполняются через JDBC |
Поддерживаемые режимы для SELECT
В следующей таблице приведены поддерживаемые режимы чтения для операций SELECT.
| Тип операции | JDBC | Parallel cursor | gpfdist |
|---|---|---|---|
Сканирование именованной таблицы |
Да |
Да |
Да |
Промежуточный результат запроса (переданный запрос/join) |
Да |
Переключение на JDBC |
Переключение на JDBC |
ORDER BY + LIMIT, требующие глобальной сортировки |
Да |
Переключение на JDBC |
Переключение на JDBC |
LIMIT |
Да |
Да (один сплит) |
Да (один сплит) |
Недопустимые для gpfdist типы столбцов |
N/A |
N/A |
Переключение на JDBC ( |
|
Да |
Переключение на JDBC |
Переключение на JDBC |
Поддержка pushdown-оптимизаций
| Функция | Чтение через JDBC | Чтение через Parallel cursor | Чтение через gpfdist |
|---|---|---|---|
Предикат/проекция |
Да |
Да |
Да |
Агрегация |
Да |
Да |
Да |
Объединение (join) |
Да |
Да
|
Да
|
Переход ADB на Greengage
В версии ADH 4.2.0 Trino ADB connector был обновлен в связи с переходом ADB на GreengageDB. Данное обновление привело к следующим основным изменениям:
-
Используется новое имя для Trino ADB connector:
connector.name=greengagedb. Для обеспечения обратной совместимости также допустимо использованиеconnector.name=adb. -
Изменены конфигурационные параметры коннектора.
Если вы используете Trino ADB connector и планируете обновить ADH до версии 4.2.0, выполнять обновление следует в следующем порядке:
-
Перед обновлением остановите сервис Trino.
-
Обновите конфигурацию коннектора с учетом новых параметров конфигурации.
-
Запустите обновление кластера.
Ограничения и особенности
Trino ADB connector имеет следующие особенности и ограничения:
-
Для использования режима параллельного курсора требуется расширение GreengageDB
gp_parallel_retrieve_cursor. -
Эндпойнт для проверки работоспособности gpfdist: http://<external-host>:<port>/health.
-
Для операции
ALTER TABLE … ADD COLUMNне поддерживаются параметрыFIRST/AFTER, а также комментарии к столбцам. -
Переименование таблиц, принадлежащих к разным схемам, не поддерживается.
-
Генерация
__trino_row_idявляется необязательной и по умолчанию отключена. Чтобы включить генерацию этого ID для таблиц, созданных коннектором, установите значениеgreengagedb.trino-row-id-enabled=true. -
ADB 7.x (Greengage DB 7.x) временно не поддерживается.