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

Tablestore:指定されたサイズでデータをシャーディングする

最終更新日:Dec 28, 2024

ComputeSplitsBySize オペレーションを呼び出すことで、テーブル内のデータを指定されたサイズに近い論理シャーディングに分割できます。シャーディング間の分割点と、シャーディングが存在するホストに関する情報が返されます。ほとんどの場合、このオペレーションは、同時実行プランなどの計算エンジンのプランを実装するために使用されます。

説明

詳細については、ComputeSplitPointsBySize を参照してください。

前提条件

  • OTSClient インスタンスが初期化されていること。詳細については、クライアントの初期化 を参照してください。

  • データテーブルが作成され、データがデータテーブルに書き込まれていること。

パラメーター

パラメーター

説明

tableName

テーブルの名前。

splitSize

各シャーディングの指定サイズ。

単位:100 MB。

次のコードは、テーブル内のデータを約 200 MB の論理シャーディングに分割する例を示しています。

private static void describeTable(SyncClient client) {
    // テーブルの名前を指定します。テーブル内のデータを論理シャーディングに分割し、各シャーディングのサイズが約 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());
        // split.getLowerBound() 関数と split.getUpperBound() 関数を RangeRowQueryCriteria クラスに挿入し、RangeRowQueryCriteria クラスを渡して getRange() または createRangeIterator() オペレーションを実行できます。
        System.out.println("split.getLowerBound()=" + split.getLowerBound().jsonize());
        System.out.println("split.getUpperBound()=" + split.getUpperBound().jsonize());
    }
}