全部产品
Search
文档中心

Tablestore:Operasi data inkremental

更新时间:Jul 02, 2025

Tablestore menyediakan operasi ListStream untuk menanyakan semua aliran dari sebuah tabel, operasi DescribeStream untuk menanyakan informasi tentang sebuah aliran, operasi GetShardIterator untuk mendapatkan iterator awal dalam sebuah aliran guna membaca sebuah shard, serta operasi GetStreamRecord untuk mendapatkan catatan pembaruan dari sebuah shard dalam sebuah aliran.

ListStream

Anda dapat memanggil operasi ListStream untuk menanyakan semua aliran dari sebuah tabel dalam sebuah instance.

Kode sampel berikut menunjukkan cara menanyakan semua aliran dari sebuah tabel:

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

DescribeStream

Anda dapat memanggil operasi DescribeStream untuk menanyakan informasi tentang sebuah aliran, seperti waktu pembuatan aliran, periode validitas aliran, status aliran, daftar shard, dan ID shard berikutnya yang akan dikembalikan.

Anda dapat menanyakan informasi tentang semua shard dari sebuah aliran atau informasi tentang shard tertentu yang memenuhi kondisi tertentu.

Tanyakan informasi tentang semua shard dari sebuah aliran

Kode sampel berikut menunjukkan cara menanyakan informasi tentang semua shard dari sebuah aliran:

private static void describeStream(SyncClient client, String streamId) {
    DescribeStreamRequest desRequest = new DescribeStreamRequest(streamId);
    DescribeStreamResponse desStream = client.describeStream(desRequest);
    // Tampilkan informasi tentang shard.
    System.out.println("Informasi Shard: " + desStream.getShards());
    // Tampilkan waktu ketika shard dibuat dalam mikrodetik.
    System.out.println("Waktu Pembuatan: " + desStream.getCreationTime());
    // Tampilkan periode validitas shard dalam jam.
    System.out.println("Waktu Kedaluwarsa: " + desStream.getExpirationTime());
}

Tanyakan informasi tentang shard dari sebuah aliran yang memenuhi kondisi tertentu

Kode sampel berikut menunjukkan cara menanyakan informasi tentang shard tertentu berdasarkan ID shard awal (InclusiveStartShardId) dan jumlah maksimum shard yang dapat dikembalikan untuk setiap permintaan:

private static void describeStream(SyncClient client, String streamId, String shardId) {
    DescribeStreamRequest dsRequest = new DescribeStreamRequest(streamId);
    // Tentukan ID shard awal. Anda bisa mendapatkan ID shard awal dengan menanyakan informasi tentang semua shard dari sebuah aliran.
    dsRequest.setInclusiveStartShardId(shardId);
    dsRequest.setShardLimit(10);
    DescribeStreamResponse dscStream = client.describeStream(dsRequest);
    // Tampilkan informasi tentang shard tertentu.
    System.out.println(dscStream.getShards());
}			

GetShardIterator

Anda dapat memanggil operasi GetShardIterator untuk mendapatkan iterator awal dalam sebuah aliran guna membaca sebuah shard.

Kode sampel berikut menunjukkan cara mendapatkan iterator awal dalam sebuah aliran untuk membaca sebuah shard:

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

Anda dapat memanggil operasi GetStreamRecord untuk mendapatkan catatan pembaruan dari sebuah shard.

Kode sampel berikut menunjukkan cara mendapatkan 100 catatan pembaruan pertama dari sebuah shard:

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("informasi catatan:" +  records.get(k).toString());
    }
        System.out.println("iterator berikutnya:" + streamRecordResponse.getNextShardIterator());
}