全部产品
Search
文档中心

Tablestore:Bagi data menjadi shard dengan ukuran tertentu

更新时间:Jul 02, 2025

Anda dapat memanggil operasi ComputeSplitsBySize untuk membagi data dalam tabel menjadi shard logis dengan ukuran yang mendekati nilai yang ditentukan. Informasi mengenai titik-titik pemisah antar-shard dan host tempat shard berada akan dikembalikan. Operasi ini sering digunakan untuk mengimplementasikan rencana pada mesin komputasi, seperti rencana konkurensi.

Catatan

Untuk informasi lebih lanjut, lihat ComputeSplitPointsBySize.

Prasyarat

  • Sebuah instance OTSClient telah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi Klien.

  • Sebuah tabel data telah dibuat, dan data telah ditulis ke tabel tersebut.

Parameter

Parameter

deskripsi

tableName

Nama tabel.

splitSize

Ukuran tertentu dari setiap shard.

Satuan: 100 MB.

Contoh

Berikut adalah contoh kode untuk membagi data dalam tabel menjadi shard logis dengan ukuran mendekati 200 MB:

private static void describeTable(SyncClient client) {
    // Tentukan nama tabel. Bagi data dalam tabel menjadi shard logis dan tentukan bahwa ukuran setiap shard mendekati 200 MB. 
    ComputeSplitsBySizeRequest request = new ComputeSplitsBySizeRequest("<TABLE_NAME>", 2);
    ComputeSplitsBySizeResponse response = client.computeSplitsBySize(request);
    System.out.println("ConsumedCapacity=" + response.getConsumedCapacity().jsonize());
    System.out.println("PrimaryKeySchema=" + response.getPrimaryKeySchema());
    System.out.println("RequestId=" + response.getRequestId());
    System.out.println("TraceId=" + response.getTraceId());
    List<Split> splits = response.getSplits();
    System.out.println("splits.size=" + splits.size());
    Iterator<Split> iterator = splits.iterator();
    while (iterator.hasNext()) {
        Split split = iterator.next();
        System.out.println("split.getLocation()=" + split.getLocation());
        // Anda dapat menyuntikkan fungsi split.getLowerBound() dan split.getUpperBound() ke dalam kelas RangeRowQueryCriteria, dan meneruskan kelas RangeRowQueryCriteria untuk melakukan operasi getRange() atau createRangeIterator().
        System.out.println("split.getLowerBound()=" + split.getLowerBound().jsonize());
        System.out.println("split.getUpperBound()=" + split.getUpperBound().jsonize());
    }
}