Коннектор Memory#

Коннектор Memory хранит все данные и метаданные в RAM на workers; и данные, и метаданные удаляются при перезапуске Trino.

Конфигурация#

Чтобы настроить коннектор Memory, создайте файл свойств каталога etc/catalog/example.properties со следующим содержимым:

connector.name=memory
memory.max-data-per-node=128MB

memory.max-data-per-node задает ограничение памяти для страниц, хранимых этим коннектором на каждом узле (значение по умолчанию — 128MB).

Примеры#

Создание таблицы с помощью коннектора Memory:

CREATE TABLE example.default.nation AS
SELECT * from tpch.tiny.nation;

Вставка данных в таблицу в коннекторе Memory:

INSERT INTO example.default.nation
SELECT * FROM tpch.tiny.nation;

Выборка из коннектора Memory:

SELECT * FROM example.default.nation;

Удаление таблицы:

DROP TABLE example.default.nation;

Создание таблицы со столбцом, у которого есть значение по умолчанию:

CREATE TABLE orders (
  orderkey bigint,
  status varchar DEFAULT 'created'
)

Сопоставление типов#

Trino поддерживает все типы данных, используемые в схемах Memory, поэтому сопоставление не требуется.

Поддержка SQL#

Коннектор предоставляет доступ на чтение и запись к временным данным и метаданным, хранящимся в памяти. Помимо глобально доступных операторов и операторов чтения, коннектор поддерживает следующие возможности:

TRUNCATE и DROP TABLE#

При выполнении операций TRUNCATE и DROP TABLE память освобождается не сразу. Вместо этого она освобождается после следующей операции записи в каталог.

Динамическая фильтрация#

Коннектор Memory поддерживает оптимизацию динамической фильтрации. Динамические фильтры проталкиваются в локальное сканирование таблиц на worker-узлах для broadcast joins.

Отложенное выполнение для динамических фильтров#

Для коннектора Memory сканирование таблицы откладывается до сбора динамических фильтров. Это можно отключить с помощью свойства конфигурации memory.enable-lazy-dynamic-filtering в файле каталога.

Ограничения#

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

  • Если запрос завершится с ошибкой по любой причине во время записи в таблицу Memory, таблица перейдет в неопределенное состояние. Таблицу следует удалить и создать заново вручную. Попытки чтения из таблицы могут завершаться ошибкой или возвращать частичные данные.

  • Если координатор завершится с ошибкой или перезапустится, все метаданные о таблицах будут потеряны. Таблицы останутся на workers, но станут недоступными.