Настройки Trino ADB connector
В данной статье описаны конфигурационные параметры коннектора Trino для ADB.
Параметры коннектора указываются при создании нового каталога Trino для работы с кластером ADB.
Конфигурационные параметры можно указать в ADCM или с помощью предложения WITH.
Например:
CREATE CATALOG test_adb_catalog USING greengagedb
WITH (
"connection-url" = 'jdbc:postgresql://<adb_master>:5432/trino',
...
"<configuration_param1>" = "<value1>",
"<configuration_param2>" = "<value2>"
);
Общие параметры
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
greengagedb.array-mapping |
Способ преобразования данных типа массив.
Возможные значения: |
DISABLED |
greengagedb.experimental.enable-string-pushdown-with-collate |
Включает pushdown-оптимизацию для строковых типов данных с учетом collate |
false |
greengagedb.fetch-size |
Максимальное количество строк для выборки. Если значение не указано, оно вычисляется по формуле: |
— |
greengagedb.geography-enabled |
Включает поддержку типов Geography/SphericalGeography |
false |
greengagedb.geospatial-aggregate-pushdown-enabled |
Включает pushdown-оптимизацию для геопространственных типов с агрегацией |
true |
greengagedb.geospatial-pushdown-enabled |
Включает pushdown-оптимизацию для предикатов, проекций и объединений (join) геопространственных типов |
true |
greengagedb.include-system-tables |
Указывает, следует ли включать системные таблицы |
false |
greengagedb.max-splits |
Максимальное количество сплитов |
— |
greengagedb.pushdown-decimal-arithmetic-enabled |
Включает pushdown-оптимизацию для операций с десятичными типами данных (decimal) |
false |
greengagedb.pushdown-double-arithmetic-enabled |
Включает pushdown-оптимизацию для операций с числами с плавающей точкой (double) |
false |
greengagedb.pushdown-function-datetime-enabled |
Включает pushdown-оптимизацию для скалярных функций даты/времени |
false |
greengagedb.pushdown-function-string-enabled |
Включает pushdown-оптимизацию для скалярных строковых функций |
false |
greengagedb.read-fallback |
Разрешает или запрещает переключение в режим JDBC при чтении. Допустимые значения:
|
ALLOW |
greengagedb.read-mode |
Определяет режим чтения из кластера ADB. Допустимые значения:
|
AUTO |
greengagedb.scan-parallelism |
Определяет, следует ли распараллеливать сплиты по сегментам. Допустимые значения:
|
SEGMENTS |
greengagedb.system-schemas |
Указывает, следует ли включать системные схемы.
Значения, заканчивающиеся на |
— |
greengagedb.trino-row-id-enabled |
Если опция включена, коннектор добавляет столбец
Когда опцию следует отключать:
|
false |
Параметры gpfdist
| Конфигурационный параметр | Описание | Значение по умолчанию |
|---|---|---|
greengagedb.gpfdist.enabled |
Включает gpfdist для операций чтения/записи |
true |
greengagedb.gpfdist.external-table-schema |
Определяет схему для временных внешних таблиц |
public |
greengagedb.gpfdist.statement-timeout |
Тайм-аут чтения SQL в gpfdist. Используется для операций DDL с внешними таблицами и запросов на выгрузку данных |
3600s |
greengagedb.gpfdist.transfer-timeout |
Тайм-аут передачи gpfdist.
Значение этого тайм-аута рекомендуется устанавливать большим, чем у |
3600s |
greengagedb.gpfdist.log-health |
Определяет, следует ли логировать доступность эндпойнтов работоспособности gpfdist |
false |
Серверные параметры gpfdist
| Конфигурационный параметр | Описание | Значение по умолчанию |
|---|---|---|
greengagedb.gpfdist.server.bind-address |
Адрес привязки сервера gpfdist |
0.0.0.0 |
greengagedb.gpfdist.server.connect-timeout |
Время ожидания первого соединения gpfdist.
Значение |
30s |
greengagedb.gpfdist.server.external-host |
Имя хоста/IP-адрес сервера gpfdist, доступного из сегментов Greengage DB |
— |
greengagedb.gpfdist.server.idle-timeout |
Время ожидания между подключениями gpfdist.
Значение |
30s |
greengagedb.gpfdist.server.insert-block-bytes |
Целевой размер сериализованного CSV-блока для операций вставки gpfdist |
1MB |
greengagedb.gpfdist.server.insert-buffer-bytes |
Максимальный объем данных в буфере за один сеанс вставки gpfdist |
128MB |
greengagedb.gpfdist.server.max-connections-per-transfer |
Максимальное количество подключений на один сеанс передачи данных.
Значение |
0 |
greengagedb.gpfdist.server.pipe-buffer-size |
Размер буфера потокового канала (stream pipe buffer) в байтах |
1048576 |
greengagedb.gpfdist.server.port |
Порт сервера gpfdist.
При указании значения |
0 |
greengagedb.gpfdist.server.thread-pool-size |
Размер пула потоков HTTP-сервера |
16 |
greengagedb.gpfdist.server.https.enabled |
Включает HTTPS-эндпойнт |
false |
greengagedb.gpfdist.server.https.keystore-key |
Пароль к keystore-хранилищу для HTTPS |
— |
greengagedb.gpfdist.server.https.keystore-path |
Путь к keystore-хранилищу для HTTPS |
— |
Значения по умолчанию для CREATE TABLE
Если при создании таблицы параметры конфигурации явно не указаны в предложении WITH (…), коннектор использует следующие значения по умолчанию.
| Конфигурационный параметр | Значение по умолчанию |
|---|---|
greengagedb.create-table.append-only |
false |
greengagedb.create-table.compression-level |
— |
greengagedb.create-table.compression-type |
— |
greengagedb.create-table.distribution |
FIRST_COLUMN |
greengagedb.create-table.orientation |
ROW |
DDL-свойства таблиц
Следующие параметры таблиц ADB могут быть установлены с помощью предложения WITH при выполнении команд CREATE TABLE/CREATE TABLE AS.
Если параметр явно указан в предложении WITH (…), он переопределяет значение по умолчанию.
| Конфигурационный параметр | Тип данных | Описание |
|---|---|---|
append_only |
boolean |
Делает таблицу доступной только для добавления данных (append-only).
Если указано значение |
block_size |
integer |
Размер блока для append-only таблиц в байтах. Принимает значения от 8 КБ до 2 МБ. Значение должно быть кратным 8192 |
checksum |
boolean |
Включает проверку контрольных сумм CRC для таблиц типа append-only |
column_encoding |
map(varchar,array(varchar)) |
Определяет директивы кодирования для каждого столбца |
compression_level |
integer |
Уровень сжатия append-only таблиц |
compression_type |
varchar |
Указывает алгоритм сжатия данных.
Допустимые значения: |
default_column_encoding |
array(varchar) |
Директивы кодирования по умолчанию |
distributed_by |
array(varchar) |
Определяет столбцы, по которым строки таблицы распределяются между сегментами с помощью хеш-функции |
distributed_randomly |
boolean |
Включает произвольное распределение |
distributed_replicated |
boolean |
Включает реплицированное распределение |
fillfactor |
integer |
Фактор наполнения (heap fill factor).
Значение должно находиться в диапазоне 10-100.
Имеет эффект только в случае, если |
orientation |
enum |
Определяет ориентацию append-only таблиц ( |
partition_by |
varchar |
Выражение партиционирования |
tablespace |
varchar |
Указывает табличное пространство |
Ниже приведен пример установки DDL-параметров для таблицы ADB c помощью коннектора Trino.
CREATE TABLE nations (
n_nationkey integer,
n_name char(25),
n_regionkey integer,
n_comment varchar(152)
)
WITH (
distributed_by = ARRAY['n_nationkey', 'n_regionkey'], (1)
append_only = true, (2)
orientation = 'column', (3)
compression_type = 'zstd' (4)
)
| 1 | Хеш-распределение по нескольким столбцам. |
| 2 | Установка типа таблицы append-only. |
| 3 | Использование колоночной ориентации данных. |
| 4 | Установка уровня сжатия с использованием алгоритма ZSTD. |
Сопоставление типов данных
При обмене данными между ADB и коннектором Trino типы данных преобразуются в соответствии со следующими правилами.
| Тип данных ADB | Тип данных Trino |
|---|---|
BIT |
BOOLEAN |
BOOLEAN |
BOOLEAN |
SMALLINT |
SMALLINT |
INTEGER |
INTEGER |
BIGINT |
BIGINT |
REAL |
REAL |
DOUBLE |
DOUBLE |
NUMERIC(p, s) |
DECIMAL(p, s) Тип DECIMAL(p, s) является алиасом NUMERIC(p, s) |
CHAR(n) |
CHAR(n) |
VARCHAR(n) |
VARCHAR(n) |
ENUM |
VARCHAR |
BYTEA |
VARBINARY |
DATE |
DATE |
TIME(n) |
TIME(n) |
TIMESTAMP(n) |
TIMESTAMP(n) |
TIMESTAMPTZ(n) |
TIMESTAMP(n) WITH TIME ZONE |
MONEY |
VARCHAR |
UUID |
UUID |
JSON |
JSON |
JSONB |
JSON |
HSTORE |
MAP(VARCHAR, VARCHAR) |
ARRAY |
DISABLED, ARRAY Больше информации доступно в разделе Особенности работы с ARRAY |
| Тип данных Trino | Тип данных ADB |
|---|---|
BOOLEAN |
BOOLEAN |
SMALLINT |
SMALLINT |
SMALLINT |
TINYINT |
INTEGER |
INTEGER |
BIGINT |
BIGINT |
REAL |
REAL |
DOUBLE |
DOUBLE |
NUMERIC(p, s) Тип DECIMAL(p, s) является алиасом NUMERIC(p, s) |
DECIMAL(p, s) |
CHAR(n) |
CHAR(n) |
VARCHAR(n) |
VARCHAR(n) |
BYTEA |
VARBINARY |
DATE |
DATE |
TIME(n) |
TIME(n) |
TIMESTAMP(n) |
TIMESTAMP(n) |
TIMESTAMPTZ(n) |
TIMESTAMP(n) WITH TIME ZONE |
UUID |
UUID |
JSONB |
JSON |
ARRAY |
ARRAY Больше информации доступно в разделе Особенности работы с ARRAY |
Типы данных для чтения/записи через gpfdist
При использовании gpfdist поддерживаются следующие типы данных:
-
boolean; -
tinyint,smallint,integer,bigint; -
real,double; -
decimal(p,s); -
varchar,char; -
date; -
timeс указанием часового пояса и без; -
timestampс указанием часового пояса и без; -
interval; -
varbinary; -
json; -
uuid; -
ipaddress; -
geometry,spherical_geography; -
array<supported_element_type>; -
row<supported_field_types>; -
map<varchar, varchar>.
|
ПРИМЕЧАНИЕ
|
Сопоставление типов данных JDBC
Сопоставление типов JDBC соответствует стандартным типам PostgreSQL/Greengage DB и включает специфическую для коннектора обработку типов arrays, geospatial, json/jsonb, uuid, ipaddress, intervals, а также переопределение pushdown-оптимизаций.
Поведение для неподдерживаемых типов JDBC можно настроить с помощью унаследованного JDBC-свойства unsupported_type_handling.
Параметры сопоставления типов данных
Следующие конфигурационные параметры позволяют изменить логику приведения типов данных.
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
unsupported-type-handling |
Определяет поведение при обработке столбцов с неподдерживаемым типом данных. Допустимые значения:
Соответствующий параметр сессии — |
IGNORE |
jdbc-types-mapped-to-varchar |
Список типов данных, которые необходимо принудительно привести к типу |
— |
Особенности работы с DECIMAL
По умолчанию коннектор Trino выдает ошибку при обработке столбцов типа DECIMAL без явного указания параметров точности (precision) и масштаба (scale).
Если конфигурационный параметр decimal-mapping (или параметр сессии decimal_mapping) имеет значение allow_overflow, то столбцы типа DECIMAL без явного указания точности/масштаба будут преобразованы в тип данных коннектора DECIMAL(38,0).
Используя конфигурационный параметр decimal-default-scale (или параметр сессии decimal_default_scale), можно указать собственное значение масштаба.
Значение точности всегда равно 38.
Если значение DECIMAL не помещается в отведенные разряды точности/масштаба без округления, коннектор выдает ошибку.
Это поведение можно изменить, включив автоматическое округление с помощью параметра коннектора decimal-rounding-mode (или параметра сессии decimal_rounding_mode).
Поддерживаются следующие значения округления: UNNECESSARY (по умолчанию), UP, DOWN, CEILING, FLOOR, HALF_UP, HALF_DOWN и HALF_EVEN.
Эти значения соответствуют правилам округления, принятым в Java 17.
Особенности работы с ARRAY
Тип данных ARRAY в ADB не поддерживает массивы фиксированной размерности, в то время как коннектор Trino для ADB поддерживает только одномерные массивы.
С помощью параметра greengagedb.array-mapping (параметр сессии greengagedb.array_mapping) можно указать, как коннектор должен обрабатывать типы данных ARRAY.
Допустимые значения параметра:
-
DISABLED(по умолчанию) — коннектор возвращает ошибку при обработке столбцов типаARRAY. -
AS_ARRAY— коннектор обрабатывает массивы ADB как тип данныхARRAY. Это значение подходит для массивов ADB, которые фактически являются одномерными. Для многомерного массива будет сформировано исключение.