Memory 커넥터
Memory 커넥터
Memory 커넥터는 모든 데이터와 메타데이터를 워커의 RAM에 저장해요. Trino가 재시작되면 저장된 내용이 모두 사라지는 휘발성 저장소죠.
출처: 문서
본문
설정 (Configuration)
Memory 커넥터를 설정하려면 카탈로그 속성 파일 etc/catalog/example.properties를 만들고 다음 내용을 넣으면 돼요.
connector.name=memory
memory.max-data-per-node=128MB
memory.max-data-per-node는 이 커넥터가 노드 하나에 저장할 수 있는 페이지(pages)의 메모리 상한을 정해요. 기본값은 128MB예요.
예제 (Examples)
Memory 커넥터로 테이블을 만들 수 있어요.
CREATE TABLE example.default.nation AS
SELECT * from tpch.tiny.nation;
테이블에 데이터를 넣을 수도 있고요.
INSERT INTO example.default.nation
SELECT * FROM tpch.tiny.nation;
조회도 물론 돼요.
SELECT * FROM example.default.nation;
테이블을 삭제할 수도 있어요.
DROP TABLE example.default.nation;
기본값이 있는 컬럼을 가진 테이블도 만들 수 있어요.
CREATE TABLE orders (
orderkey bigint,
status varchar DEFAULT 'created'
)
타입 매핑 (Type mapping)
Memory 커넥터는 Memory 스키마 안에서 쓰이는 모든 데이터 타입을 지원해요. 그래서 특별한 매핑이 필요 없어요.
SQL 지원 (SQL support)
이 커넥터는 메모리에 저장된 임시 데이터와 메타데이터에 대한 읽기·쓰기 접근을 제공해요. 전역적으로 쓸 수 있는 SQL 지원 및 읽기 연산 문장 외에도 다음 기능을 지원해요.
- INSERT
- TRUNCATE
- CREATE TABLE
- CREATE TABLE AS
- DROP TABLE
- ALTER TABLE
- CREATE SCHEMA
- DROP SCHEMA
- ALTER SCHEMA
- COMMENT
- 뷰 관리 (View management)
- 사용자 정의 함수 관리 (User-defined function management)
TRUNCATE와 DROP TABLE
TRUNCATE나 DROP TABLE을 실행해도 메모리는 즉시 해제되지 않아요. 대신 그 카탈로그에 다음 쓰기 연산이 실행된 뒤에 해제돼요.
동적 필터링 (Dynamic filtering)
Memory 커넥터는 동적 필터링 최적화를 지원해요. 브로드캐스트 조인(broadcast join)에서는 동적 필터가 워커 노드의 로컬 테이블 스캔으로 푸시돼요.
동적 필터를 위한 지연 실행 (Delayed execution for dynamic filters)
Memory 커넥터에서는 동적 필터가 모일 때까지 테이블 스캔이 지연돼요. 이 동작은 카탈로그 파일의 설정 속성 memory.enable-lazy-dynamic-filtering으로 끌 수 있어요.
제한 사항 (Limitations)
- 워커 하나가 실패하거나 재시작되면, 그 워커의 메모리에 저장된 모든 데이터가 유실돼요. 조용한 데이터 손실을 막기 위해, 커넥터는 손상된 테이블에 대한 읽기 접근마다 오류를 던져요.
- 쓰기 중에 어떤 이유로든 쿼리가 실패하면 그 테이블은 정의되지 않은 상태가 돼요. 이 경우 테이블을 수동으로 드롭하고 다시 만들어야 해요. 읽기 시도는 실패할 수도 있고, 일부 데이터만 반환할 수도 있어요.
- 코디네이터가 실패하거나 재시작되면 테이블에 대한 모든 메타데이터가 유실돼요. 테이블 자체는 워커에 남아 있지만 접근할 수 없게 돼요.
더 알아보기 (Learn more)
Memory 커넥터는 Trino의 휘발성 인메모리 저장소예요. 다른 외부 데이터 소스를 연결하는 커넥터들과 비교해서 보면 용도 차이가 훨씬 선명해져요.