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

Tablestore:並列スキャンのためのデータ分割

最終更新日:Aug 06, 2026

Tablestore SDK for Java は、テーブル内のすべてのデータを指定されたサイズのスプリットに論理的に分割し、各スプリットのプライマリキー範囲とロケーションヒントを返します。

前提条件

Tablestore SDK for Java をインストールし、クライアントを初期化します。

説明

Tablestore は、サーバー上でテーブルを指定された概算サイズのスプリットに論理的に分割します。各スプリットには、そのプライマリキー範囲 (lowerBound / upperBound) と、スプリットをホストするマシンのロケーションヒント (location) が含まれます。これらのプライマリキー範囲を RangeRowQueryCriteria に渡し、範囲を指定したデータ読み取り または イテレーターを使用したデータ読み取り によってスプリットを並列で処理します。

public ComputeSplitsBySizeResponse computeSplitsBySize(ComputeSplitsBySizeRequest request) throws TableStoreException, ClientException

次の例では、split_demo テーブルを約 200 MB のスプリットに分割し、各スプリットのロケーションと主キーの範囲を出力します。

String tableName = "split_demo";

// テーブルの全データをおおよそ 200 MB (2 * 100 MB) のスプリットに分割します。
ComputeSplitsBySizeRequest request =
        new ComputeSplitsBySizeRequest(tableName, 2);

ComputeSplitsBySizeResponse response = client.computeSplitsBySize(request);

System.out.println("PrimaryKeySchema: " + response.getPrimaryKeySchema());
List<Split> splits = response.getSplits();
System.out.println("Splits size: " + splits.size());

Iterator<Split> iterator = splits.iterator();
while (iterator.hasNext()) {
    Split split = iterator.next();
    // getLowerBound() と getUpperBound() が返すプライマリキー範囲は、
    // getRange または createRangeIterator による並列読み取りのために、
    // RangeRowQueryCriteria に直接渡すことができます。
    System.out.println("Location: " + split.getLocation());
    System.out.println("LowerBound: " + split.getLowerBound().jsonize());
    System.out.println("UpperBound: " + split.getUpperBound().jsonize());
}

パラメータ

名前

型

説明

tableName (必須)

String

テーブルの名前。

splitSize (必須)

long

各スプリットのおおよそのサイズ (100 MB 単位)。たとえば、2 を指定すると、データは 200 MB ずつのスプリットに分割されます。

レスポンス

分割結果

ComputeSplitsBySizeResponse には、以下のオペレーション固有のフィールドが含まれます。

名前

型

説明

splits

List<Split>

論理分割。 getSplits() を呼び出してリストを取得します。

primaryKeySchema

List<PrimaryKeySchema>

テーブルのプライマリキースキーマ。 getPrimaryKeySchema() を呼び出して値を取得します。

スプリット情報

ComputeSplitsBySizeResponse.splits[] の各要素は Split 型です。

名前

型

説明

lowerBound

PrimaryKey

スプリットのプライマリキー範囲の下限。

upperBound

PrimaryKey

スプリットのプライマリキー範囲の上限。

location

String

スプリットを格納するマシンのロケーションヒント。値は空の文字列の場合があります。