클래식 SDK와 고성능 SDK 비교

이 섹션에서는 클래식 및 고성능 SDKs의 주요 차이점을 요약합니다.

클라이언트 및 채널 관리

  • OpenClient: 고성능 SDK에서는 DB, SCHEMA 및 :code:`PIPE`를 지정해야 합니다. 클래식 SDK에서는 클라이언트 :code:`NAME`만 지정하면 됩니다.

  • OpenChannel: 고성능 SDK는 채널 이름만 요구하여 지정을 간소화합니다. 클래식 SDK에서는 DB, SCHEMA, TABLE 및 :code:`ERROR_OPTION`을 지정해야 합니다. 새로운 SDK는 채널 엔터티와 상태를 포함하는 :code:`OpenChannelResult`도 반환하므로 마지막으로 커밋된 오프셋 토큰을 가져오기 위해 별도의 RPC를 호출할 필요가 없습니다.

  • offsetToken 지원: 이제 새로운 openChannel 메서드에 선택적 offsetToken 매개 변수가 있으므로 특정 위치에서 채널을 열 수 있습니다. openChannel(String channelName, (optional) String offsetToken).

데이터 수집

  • InsertRows 이름 변경: 이제 InsertRows 메서드를 고성능 SDK에서는 :code:`AppendRows`로 지칭합니다.

  • AppendResult 제거: appendRowappendRows 메서드는 더 이상 AppendResult`를 반환하지 않습니다. 서명이 :code:`void appendRow(Map<String, Object> row, String offsetToken) 및 :code:`void appendRows(Iterable<Map<String, Object>> row, String startOffsetToken, String endOffsetToken)`로 변경되었습니다.

새로운 비동기 및 유틸리티 메서드

  • GetChannelStatus: Channel 오브젝트에서 사용 가능한 새 API입니다.

  • waitForFlush: 새 waitForFlush 메서드가 클라이언트 및 채널 오브젝트 모두에 추가되었습니다.

    • 클라이언트: void close(boolean waitForFlush, Duration timeoutDuration)

    • 채널 및 클라이언트: void waitForFlush((optional) Duration timeoutDuration)

  • waitForCommit: 새 메서드 :code:`CompletableFuture<Boolean>waitForCommit(Predicate<String> tokenChecker, Duration timeoutDuration)`을 사용하면 커밋이 확인될 때까지 기다릴 수 있습니다.

  • initiateFlush: 이 새로운 메서드 :code:`void initiateFlush()`는 채널 또는 클라이언트에서 플러시를 비동기적으로 호출하며, 시간 제한을 기다리거나 크기 제한 없이 데이터를 플러시하는 데 유용합니다.

기타 변경 사항

  • GetLatestCommittedOffsetTokens: 이 API가 개선되었습니다. 고성능 SDK에서 이제 클라이언트가 열지 않은 채널에 대한 오프셋 토큰을 가져올 수 있으며 부분적인 실패를 허용합니다.

  • isValid 제거: isValid 메서드가 고성능 SDK에서 제거되었습니다.

다음 테이블은 클래식 SDK와 고성능 SDK 간에 API가 어떻게 변경되었는지를 보여줍니다.

SnowflakeStreamingIngestClientFactory 및 SnowflakeStreamingIngestClientFactory.Builder

클래식

고성능

참고

builder(String name)

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

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

N/A

setExecutorService(ExecutorService executorService)

새로운 메서드입니다. SDK가 백그라운드 작업에 사용할 :code:`ExecutorService`를 지정할 수 있습니다.

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, (optional) String offsetToken)

다른 요청 인자와 반환 값.

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

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

다른 요청 인자입니다. 고성능 SDK를 사용하면 API는 다른 클라이언트가 열고 잠재적으로 해당 클라이언트에 속하지 않는 채널의 상태를 가져올 수 있습니다.

N/A

ChannelStatusBatch getChannelStatus(List<String> channelNames)

신규 API.

Void dropChannel(DropChannelRequest request)

Void dropChannel(String channelName)

다른 요청 인자.

Void setRefreshToken(String refreshToken)

N/A

제거되었습니다.

N/A

CompletableFuture<Void> close(boolean waitForFlush, Duration timeoutDuration)

종료 프로세스를 더 잘 제어할 수 있는 새 클라이언트 close 메서드입니다. waitForFlush: 클라이언트가 종료하기 전에 모든 채널이 플러시될 때까지 기다려야 하는지 여부를 나타내는 부울 매개 변수입니다. timeoutDuration: 강제 종료 전에 플러시가 완료될 때까지 클라이언트가 기다려야 하는 시간을 지정하는 :code:`Duration`입니다.

N/A

CompletableFuture<Void> waitForFlush((optional) Duration timeoutDuration)

플러시가 완료될 때까지 대기하는 새로운 메서드입니다. timeoutDuration: 클라이언트가 시간 초과될 때까지 기다려야 하는 시간을 지정합니다.

N/A

void initiateFlush()

클라이언트가 플러시를 비동기적으로 트리거하고 결과를 즉시 반환하도록 하는 새로운 메서드입니다.

SnowflakeStreamingIngestChannel

클래식

고성능

참고

getLatestCommittedOffsetToken

getLatestCommittedOffsetToken

이 API가 개선되었습니다. 고성능 SDK에서 이제 클라이언트가 열지 않은 채널에 대한 오프셋 토큰을 가져올 수 있으며 부분적인 실패를 허용합니다.

isValid

N/A

제거되었습니다.

N/A

String getDBName()

신규 API.

N/A

String getSchemaName()

신규 API.

N/A

String getPipeName()

신규 API.

N/A

String getFullyQualifiedPipeName()

신규 API.

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

void appendRow(Map<String, Object> row, @Nullable String offsetToken)

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

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

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

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

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 close(boolean waitForFlush, Duration timeoutDuration)

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

Boolean isValid()

N/A

제거되었습니다.

N/A

CompletableFuture<Void> waitForFlush((optional)Duration timeoutDuration)

플러시가 완료될 때까지 대기하는 새로운 메서드입니다. timeoutDuration: 채널이 시간 초과되기까지 기다려야 하는 시간을 지정합니다.

N/A

void waitForCommit(Predicate<String> tokenChecker, Duration timeoutDuration)

이 특정 채널 내에서 버퍼링된 모든 데이터가 Snowflake 서버로 플러시되도록 비동기적으로 트리거하고 플러시가 끝날 때까지 대기하는 새로운 메서드입니다. 이 메서드를 사용하면 보류 중인 모든 데이터가 성공적으로 작성되고 플러시 작업이 완료된 후에 계속 진행됩니다.

N/A

void initiateFlush()

채널이 플러시를 비동기적으로 트리거하도록 하는 새로운 메서드입니다.