INSERT와 CREATE TABLE AS 지원
INSERT와 CREATE TABLE AS 지원
커넥터에서 INSERT와 CREATE TABLE AS를 지원하려면 어떤 인터페이스를 구현해야 하는지 설명하는 문서예요. 커넥터를 직접 개발할 때 필요한 내용이에요.
출처: 문서
본문
INSERT를 지원하려면 커넥터가 다음을 구현해야 해요.
ConnectorMetadata인터페이스의beginInsert()와finishInsert()- 테이블 핸들을 받아
ConnectorPageSink를 반환하는ConnectorPageSinkProvider
INSERT 문을 실행하면 엔진은 커넥터의 beginInsert() 메서드를 호출해요. 이 메서드는 테이블 핸들과 컬럼 목록을 받아, 커넥터 고유 정보를 담을 수 있는 ConnectorInsertTableHandle을 반환해야 해요. 이 핸들은 페이지 싱크 프로바이더로 전달돼요.
PageSinkProvider는 Page 객체를 받아들이는 페이지 싱크(page sink)를 만들어요. 특정 스플릿(split)에 대한 모든 페이지가 처리되면 Trino는 ConnectorPageSink.finish()를 호출하는데, 이 메서드는 처리된 행에 대한 커넥터 고유 정보를 담은 Collection 조각(fragments)을 반환해요.
모든 스플릿의 모든 페이지가 처리되면 Trino는 ConnectorMetadata.finishInsert()를 호출하며 모든 스플릿의 조각을 모은 컬렉션을 전달해요. 여기서 커넥터는 트랜잭션 커밋 같은 연산 마무리 작업을 해요.
CREATE TABLE AS를 지원하려면 ConnectorPageSinkProvider가 ConnectorOutputTableHandle을 받았을 때도 페이지 싱크를 반환해야 해요. 이 핸들은 ConnectorMetadata.beginCreateTable()에서 반환돼요.
더 알아보기 (Learn more)
INSERT 실행 흐름 전체와 관련된 커넥터 SPI는 커넥터 개발 문서를 참고해 보세요.