すべてのプロダクト
Search
ドキュメントセンター

Tablestore:増分データ操作

最終更新日:Dec 28, 2024

Tablestore は、テーブルのすべてのストリームをクエリするための ListStream 操作、ストリームに関する情報をクエリするための DescribeStream 操作、シャードを読み取るためのストリーム内の開始イテレータを取得するための GetShardIterator 操作、およびストリーム内のシャードの更新レコードを取得するための GetStreamRecord 操作を提供します。

ListStream

ListStream 操作を呼び出すことで、インスタンス内のテーブルのすべてのストリームをクエリできます。

次のサンプルコードは、テーブルのすべてのストリームをクエリする方法の例を示しています。

private static void listStream(SyncClient client, String tableName) {
    ListStreamRequest listStreamRequest = new ListStreamRequest(tableName);
    ListStreamResponse result = client.listStream(listStreamRequest);
    System.out.println(result.getStreams());
}

DescribeStream

DescribeStream 操作を呼び出すことで、ストリームの作成時刻、ストリームの有効期間、ストリームの状態、シャードのリスト、返される次のシャードの ID など、ストリームに関する情報をクエリできます。

ストリームのすべてのシャードに関する情報、または特定の条件を満たすストリームのシャードに関する情報をクエリできます。

ストリームのすべてのシャードに関する情報をクエリする

次のサンプルコードは、ストリームのすべてのシャードに関する情報をクエリする方法の例を示しています。

private static void describeStream(SyncClient client, String streamId) {
    DescribeStreamRequest desRequest = new DescribeStreamRequest(streamId);
    DescribeStreamResponse desStream = client.describeStream(desRequest);
    // シャードに関する情報を表示します。
    System.out.println("Shard Info: " + desStream.getShards());
    // シャードが作成された時刻をマイクロ秒単位で表示します。
    System.out.println("Creation Time: " + desStream.getCreationTime());
    // シャードの有効期間を時間単位で表示します。
    System.out.println("Expiration Time: " + desStream.getExpirationTime());
}

特定の条件を満たすストリームのシャードに関する情報をクエリする

次のサンプルコードは、開始シャードの ID (InclusiveStartShardId) と各リクエストで返されるシャードの最大数に基づいて、特定のシャードに関する情報をクエリする方法の例を示しています。

private static void describeStream(SyncClient client, String streamId, String shardId) {
    DescribeStreamRequest dsRequest = new DescribeStreamRequest(streamId);
    // 開始シャードの ID を指定します。開始シャードの ID は、ストリームのすべてのシャードに関する情報をクエリすることで取得できます。
    dsRequest.setInclusiveStartShardId(shardId);
    dsRequest.setShardLimit(10);
    DescribeStreamResponse dscStream = client.describeStream(dsRequest);
    // 特定のシャードに関する情報を表示します。
    System.out.println(dscStream.getShards());
}			

GetShardIterator

GetShardIterator 操作を呼び出すことで、シャードを読み取るためのストリーム内の開始イテレータを取得できます。

次のサンプルコードは、シャードを読み取るためのストリーム内の開始イテレータを取得する方法の例を示しています。

private static void getShardIterator(SyncClient client, String streamId, String shardId) {
    GetShardIteratorRequest getShardIteratorRequest = new GetShardIteratorRequest(streamId, shardId);
    GetShardIteratorResponse shardIterator = client.getShardIterator(getShardIteratorRequest);
    System.out.println(shardIterator.getShardIterator());
}

GetStreamRecord

GetStreamRecord 操作を呼び出すことで、シャードの更新レコードを取得できます。

次のサンプルコードは、シャードの最初の 100 件の更新レコードを取得する方法の例を示しています。

private static void getShardIterator(SyncClient client, String shardIterator) {
    GetStreamRecordRequest streamRecordRequest = new GetStreamRecordRequest(shardIterator);
    streamRecordRequest.setLimit(100);
    GetStreamRecordResponse streamRecordResponse = client.getStreamRecord(streamRecordRequest);
    List<StreamRecord> records = streamRecordResponse.getRecords();
    for(int k=0;k<records.size();k++){
        System.out.println("record info:" +  records.get(k).toString());
    }
        System.out.println("next iterator:" + streamRecordResponse.getNextShardIterator());
}