SQL Gateway REST 엔드포인트

SQL Gateway REST 엔드포인트

SQL Gateway의 REST 엔드포인트는 클라이언트가 REST API로 SQL Gateway에 연결할 수 있게 해줘요. 세션을 열고, SQL을 제출하고, 결과를 가져오는 일련의 흐름과 엔드포인트·REST API 옵션을 설명해요.

출처: REST Endpoint

본문

Overview of SQL Processing

Open Session

클라이언트가 SQL Gateway에 연결하면 SQL Gateway가 클라이언트와 SQL Gateway 사이의 상호작용 동안 사용자가 지정한 정보를 저장하는 컨텍스트로 Session을 생성해요. Session 생성 후 SQL Gateway 서버는 이후 상호작용을 위해 SessionHandle이라는 식별자를 반환해요.

Submit SQL

Session이 등록된 후 클라이언트는 SQL을 SQL Gateway 서버에 제출할 수 있어요. SQL을 제출하면 SQL이 Operation으로 변환되고, 나중에 결과를 가져오기 위한 OperationHandle이라는 식별자가 반환돼요. Operation에는 수명주기가 있는데, 클라이언트는 Operation의 실행을 취소하거나 Operation을 닫아 Operation이 사용하는 리소스를 해제할 수 있어요.

Fetch Results

OperationHandle로 클라이언트는 Operation에서 결과를 가져올 수 있어요. Operation이 준비되면 SQL Gateway는 해당 스키마와 함께 데이터 배치와, 다음 데이터 배치를 가져오는 데 사용하는 URI를 반환해요. 모든 결과를 가져왔으면 SQL Gateway는 응답의 resultTypeEOS 값으로 채우고 다음 데이터 배치의 URI는 null로 설정해요.

SQL Gateway Interactions

Endpoint Options

Key Default Type Description
sql-gateway.endpoint.rest.address (none) String 클라이언트가 sql gateway 서버에 연결할 때 사용해야 하는 주소.
sql-gateway.endpoint.rest.bind-address (none) String sql gateway 서버가 자신을 바인딩하는 주소.
sql-gateway.endpoint.rest.bind-port "8083" String sql gateway 서버가 자신을 바인딩하는 포트. 포트 목록("50100,50101"), 범위("50100-50200") 또는 둘의 조합을 받아들여요. 같은 머신에서 여러 sql gateway 서버가 실행 중일 때 충돌을 피하려면 포트 범위를 설정하는 것이 좋아요.
sql-gateway.endpoint.rest.port 8083 Integer 클라이언트가 연결하는 포트. bind-port가 지정되지 않은 경우 sql gateway 서버는 이 포트에 바인딩해요.

REST API

사용 가능한 OpenAPI 사양은 다음과 같아요. 기본 버전은 v3이에요.

Version Description
Open API v1 specification 사용자가 게이트웨이에 구문(statement)을 제출하고 실행할 수 있게 함.
Open API v2 specification SQL Client가 게이트웨이에 연결하는 것을 지원.
Open API v3 specification Materialized Table refresh 작업을 지원.
Open API v4 specification 애플리케이션 모드에서 스크립트를 배포하는 것을 지원.

경고: OpenAPI 사양은 여전히 실험적이에요.

API reference

API 참조는 v4, v3, v2, v1 탭으로 제공되며, 각각 rest_v4_sql_gateway, rest_v3_sql_gateway, rest_v2_sql_gateway, rest_v1_sql_gateway의 생성된 OpenAPI 사양에 해당해요.

Data Type Mapping

현재 REST 엔드포인트는 rowFormat 쿼리 파라미터로 RowData를 직렬화하는 것을 지원해요. REST 엔드포인트는 Table Objects를 직렬화할 때 JSON 형식을 사용해요. 매핑에 대해서는 JSON format을 참고하세요.

REST 엔드포인트는 모든 컬럼을 String으로 자동 캐스팅하는 PLAIN_TEXT 형식으로 RowData를 직렬화하는 것도 지원해요.

더 알아보기 (Learn more)