블랙홀 커넥터

블랙홀 커넥터 (Black Hole connector)

블랙홀 커넥터는 주로 다른 컴포넌트의 고성능 테스트를 위해 설계됐어요. 데이터 쓰기에서는 Unix 계열 운영체제의 /dev/null처럼 동작하고, 데이터 읽기에서는 /dev/null 또는 /dev/zero처럼 동작해요. 하지만 Trino를 더 통제된 방식으로 테스트할 수 있게 해 주는 다른 기능도 있어요. 이 커넥터로 생성된 테이블의 메타데이터는 코디네이터의 메모리에 보관되고, Trino가 재시작되면 버려져요. 생성된 테이블은 기본적으로 항상 비어 있고, 쓰인 데이터는 무시되며, 데이터 읽기는 행을 반환하지 않아요.

출처: 문서

본문

테이블 생성 중에 원하는 행 수를 지정할 수 있어요. 그런 경우 쓰기는 같은 방식으로 동작하지만, 읽기는 항상 지정된 수의 일정한(상수) 행을 반환해요. 그런 행의 내용에 의존해서는 안 돼요.

설정 (Configuration)

blackhole 커넥터를 example 카탈로그로 마운트하려면 다음 내용으로 etc/catalog/example.properties를 만드세요:

connector.name=blackhole

블랙홀 테이블은 기본적으로 모든 쓰기를 흡수하고 읽기는 빈 결과를 반환해요:

CREATE TABLE example.test.nation AS
SELECT * from tpch.tiny.nation;
INSERT INTO example.test.nation
SELECT * FROM tpch.tiny.nation;
SELECT count(*) FROM example.test.nation;

테이블 생성 시 split_count, pages_per_split, rows_per_page를 지정하면 읽기가 그만큼의 상수 행을 반환해요:

CREATE TABLE example.test.nation (
  nationkey BIGINT,
  name VARCHAR
)
WITH (
  split_count = 500,
  pages_per_split = 1000,
  rows_per_page = 2000
);
SELECT count(*) FROM example.test.nation;

field_length로 생성할 필드(문자열)의 길이도 정할 수 있어요:

CREATE TABLE example.test.nation (
  nationkey BIGINT,
  name VARCHAR
)
WITH (
  split_count = 500,
  pages_per_split = 1000,
  rows_per_page = 2000,
  field_length = 100
);

page_processing_delay로 페이지 처리에 의도적인 지연을 넣어 지연 테스트를 할 수도 있어요:

CREATE TABLE example.test.delay (
  dummy BIGINT
)
WITH (
  split_count = 1,
  pages_per_split = 1,
  rows_per_page = 1,
  page_processing_delay = '5s'
);

더 알아보기 (Learn more)

성능 테스트용 커넥터가 궁금하다면 TPCH 커넥터 문서를 이어서 읽어 보세요.