클래식 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 제거:
appendRow및appendRows메서드는 더 이상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¶
클래식 |
고성능 |
참고 |
|---|---|---|
|
|
클래식 버전의 |
N/A |
|
새로운 메서드입니다. SDK가 백그라운드 작업에 사용할 :code:`ExecutorService`를 지정할 수 있습니다. |
SnowflakeStreamingIngestClient¶
클래식
고성능
참고
String getName()
String getClientName()API 이름 바꾸기만 가능하며, 동일한 정보가 반환됩니다.
N/A
String getDBName()신규 API.
N/A
String getPipeName()신규 API.
N/A
String getSchemaName()신규 API.
SnowflakeStreamingIngestChannelopenChannel(OpenChannelRequest 요청)
OpenChannelResultopenChannel(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에서 이제 클라이언트가 열지 않은 채널에 대한 오프셋 토큰을 가져올 수 있으며 부분적인 실패를 허용합니다.
isValidN/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()채널이 플러시를 비동기적으로 트리거하도록 하는 새로운 메서드입니다.