Настройки 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, AS_ARRAY

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

  • FORBID

ALLOW

greengagedb.read-mode

Определяет режим чтения из кластера ADB. Допустимые значения:

  • AUTO

  • JDBC

  • PARALLEL_CURSOR

  • gpfdist

AUTO

greengagedb.scan-parallelism

Определяет, следует ли распараллеливать сплиты по сегментам. Допустимые значения:

  • SINGLE

  • SEGMENTS

SEGMENTS

greengagedb.system-schemas

Указывает, следует ли включать системные схемы. Значения, заканчивающиеся на _, считаются префиксами

 — 

greengagedb.trino-row-id-enabled

Если опция включена, коннектор добавляет столбец __trino_row_id для таблиц, созданных этим коннектором. Примеры кейсов, когда данную опцию следует включить:

  • Если планируется выполнение операций UPDATE/DELETE/MERGE через Trino-коннектор над таблицами, в которых не гарантировано наличие надежного первичного ключа.

  • Если нужен надежный идентификатор строк, генерируемый коннектором, вместо использования физических идентификаторов.

Когда опцию следует отключать:

  • Если в таблицах имеются надежные первичные ключи, используемые для DML-операций.

  • Основная рабочая нагрузка подразумевает аналитику и добавление данных (операции SELECT/INSERT), а дополнительный синтетический столбец не нужен.

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. Значение этого тайм-аута рекомендуется устанавливать большим, чем у greengagedb.gpfdist.statement-timeout. statement-timeout ограничивает отдельные SQL-запросы, а transfer-timeout — всю коммуникацию через gpfdist. Если значение transfer-timeout меньше, чем statement-timeout, передача данных может завершиться с ошибкой раньше, даже если время на выполнение SQL-запроса еще не истекло

3600s

greengagedb.gpfdist.log-health

Определяет, следует ли логировать доступность эндпойнтов работоспособности gpfdist

false

Серверные параметры gpfdist

Конфигурационный параметр Описание Значение по умолчанию

greengagedb.gpfdist.server.bind-address

Адрес привязки сервера gpfdist

0.0.0.0

greengagedb.gpfdist.server.connect-timeout

Время ожидания первого соединения gpfdist. Значение 0ms отключает тайм-аут

30s

greengagedb.gpfdist.server.external-host

Имя хоста/IP-адрес сервера gpfdist, доступного из сегментов Greengage DB

 — 

greengagedb.gpfdist.server.idle-timeout

Время ожидания между подключениями gpfdist. Значение 0ms отключает тайм-аут

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 отключает тайм-аут

0

greengagedb.gpfdist.server.pipe-buffer-size

Размер буфера потокового канала (stream pipe buffer) в байтах

1048576

greengagedb.gpfdist.server.port

Порт сервера gpfdist. При указании значения 0 используется временный порт

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). Если указано значение false, коннектор создает heap-таблицу

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

Указывает алгоритм сжатия данных. Допустимые значения: zlib, zstd, rle_type, none. Фактическая поддержка конкретного алгоритма зависит от версии ADB

default_column_encoding

array(varchar)

Директивы кодирования по умолчанию

distributed_by

array(varchar)

Определяет столбцы, по которым строки таблицы распределяются между сегментами с помощью хеш-функции

distributed_randomly

boolean

Включает произвольное распределение

distributed_replicated

boolean

Включает реплицированное распределение

fillfactor

integer

Фактор наполнения (heap fill factor). Значение должно находиться в диапазоне 10-100. Имеет эффект только в случае, если append_only=false

orientation

enum

Определяет ориентацию append-only таблиц (row или column)

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

 

Тип данных 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

 

Тип данных 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>.

ПРИМЕЧАНИЕ
  • Для gpfdist тип map временно ограничен типом map<varchar, varchar>.

  • Если тип данных не поддерживается для gpfdist, операция чтения переключаются на JDBC.

  • При использовании неподдерживаемых типов данных операции записи через gpfdist автоматически не переключается на JDBC, а завершаются с ошибкой.

Сопоставление типов данных JDBC

Сопоставление типов JDBC соответствует стандартным типам PostgreSQL/Greengage DB и включает специфическую для коннектора обработку типов arrays, geospatial, json/jsonb, uuid, ipaddress, intervals, а также переопределение pushdown-оптимизаций. Поведение для неподдерживаемых типов JDBC можно настроить с помощью унаследованного JDBC-свойства unsupported_type_handling.

Параметры сопоставления типов данных

Следующие конфигурационные параметры позволяют изменить логику приведения типов данных.

Параметр Описание Значение по умолчанию

unsupported-type-handling

Определяет поведение при обработке столбцов с неподдерживаемым типом данных. Допустимые значения:

  • IGNORE — данные столбца игнорируются.

  • CONVERT_TO_VARCHAR — значение столбца преобразуется в тип VARCHAR неограниченной длины.

Соответствующий параметр сессии — unsupported_type_handling

IGNORE

jdbc-types-mapped-to-varchar

Список типов данных, которые необходимо принудительно привести к типу VARCHAR неограниченной длины (даже если указанный тип поддерживается коннектором). Например, jdbc-types-mapped-to-varchar=VARBINARY,UUID

 — 

Особенности работы с 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, которые фактически являются одномерными. Для многомерного массива будет сформировано исключение.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней