클래식 SDK 와 고성능SDK 비교

다음은 기존 SDK 에서 고성능 SDK 로 변경된 내용을 요약한 것입니다.

  • OpenClient: 새 버전의 경우 DB, SCHEMA, PIPE fmf 지정해야 합니다. 이전에는 NAME 만 지정하면 됐습니다.

  • OpenChannel:

    • 새 버전의 채널 이름만 지정하면 됩니다. 이전에는 DB, SCHEMA, TABLE, ERROR_OPTION 을 지정해야 했습니다.

    • 새 버전에서는 채널이 열릴 때 channelStatus 뿐만 아니라 채널 엔터티가 모두 포함된 OpenChannelResult 가 반환됩니다. 레거시 버전과 달리 Snowflake에 RPC 호출을 통해 마지막으로 커밋된 토큰을 다시 가져올 필요가 없습니다.

  • InsertRows 의 이름이 AppendRows 로 변경됩니다.

  • CloseChannel: 이전에는 Snowpipe Streaming이 비동기 호출을 수행하여 토큰이 완전히 커밋될 때까지 기다렸다가 사용자가 결과를 가져올 수 있도록 미래의 오브젝트를 반환했습니다. 현재 새 버전에서는 이 기능이 지원되지 않습니다.

  • GetLatestCommittedOffsetTokens: 이는 이 클라이언트가 개설한 채널의 최신 오프셋 토큰을 가져오는 배치 API 이며, 클래식 SDK 에서 부분적인 실패를 허용하지 않습니다. 새로운 SDK 에서는 클라이언트가 열지 않은 최신 오프셋 토큰을 가져올 수 있으며, 이 API 는 부분적인 실패도 허용합니다.

  • isValid 은 새 버전에서 제거되었습니다.

다음 테이블은 클래식 SDK 및 고성능 SDK 의 API 차이점을 보여줍니다.

SnowflakeStreamingIngestClientFactorySnowflakeStreamingIngestClientFactory.Builder

클래식

고성능

참고

builder(String name)

builder(String clientName, String dbName, String schemaName, String pipeName)

클래식 버전의 name = 고성능 버전의 clientName.

SnowflakeStreamingIngestClient

클래식

고성능

참고

String getName()

String getClientName()

API 이름 바꾸기만 가능하며, 동일한 정보가 반환됩니다.

N/A

String getDBName()

신규 API.

N/A

String getPipeName()

신규 API.

N/A

String getSchemaName()

신규 API.

SnowflakeStreamingIngestChannel openChannel(OpenChannelRequest 요청)

OpenChannelResult openChannel(String channelName, String offsetToken)

다른 요청 인자와 반환 값.

Map<String,String> getLatestCommittedOffsetTokens (List<SnowflakeStreamingIngestChannel> channels)

Map<String, String> getLatestCommittedOffsetTokens (List<String> channelNames)

다른 요청 인수. 이제 다른 클라이언트가 열었으나 클라이언트의 소유가 아닐 가능성이 있는 채널 상태를 가져올 수 있습니다.

N/A

ChannelStatusBatch getChannelStatuses(List<String> channelNames)

신규 API.

Void dropChannel(DropChannelRequest request)

Void dropChannel(String channelName)

다른 요청 인자.

Void setRefreshToken(String refreshToken)

N/A

OAuth 의 경우에만 필수입니다.

SnowflakeStreamingIngestChannel

클래식

고성능

참고

InsertValidationResponse insertRow(Map<String, Object> row, String offsetToken)

AppendResult appendRow(Map<String, Object> row, String offsetToken)

API 이름이 변경되었습니다. 클라이언트에 더 이상 유효성 검사가 없기 때문에 응답 유형이 변경되었습니다.

InsertValidationResponse insertRow(Iterable<Map<String, Object>> row, String startOffsetToken, String endOffsetToken)

AppendResult appendRows(Iterable<Map<String, Object>> row, String startOffsetToken, String endOffsetToken)

클라이언트에 더 이상 유효성 검사가 없기 때문에 응답 유형이 변경되었습니다.

InsertValidationResponse insertRow(Iterable<Map<String, Object>> row, String offsetToken)

N/A

제거되었습니다.

String getTableName()

N/A

제거되었습니다.

String getFullyQualifiedTableName()

N/A

제거되었습니다.

N/A

String getPipeName()

신규 API.

N/A

String getFullyQualifiedPipeName()

신규 API.

String getName()

String getChannelName()

API 이름 바꾸기.

String getFullyQualifiedName()

String getFullyQualifiedChannelName()

API 이름 바꾸기.

Map<String, ColumnProperties> getTableSchema()

N/A

제거되었습니다.

N/A

ChannelStatus getChannelStatus()

신규 API.

CompletableFuture<Void> close()

Void close()

반환 유형은 변경되었지만 동작은 동일합니다.

CompletableFuture<Void> close(boolean drop)

Void drop()

API 이름이 변경되었지만, 동작은 동일합니다.

Boolean isValid()

N/A

제거되었습니다.