テーブル内のデータを、サイズが指定された値とほぼ同じになる複数の論理スプリットに分割します。スプリット間の分割点と、スプリットが存在するホストに関する情報が返されます。この操作は、コンピュートエンジンが同時実行計画などの実行計画を決定するために使用されます。
リクエスト構文
message ComputeSplitPointsBySizeRequest {
required string table_name = 1;
required int64 split_size = 2; // 100MB単位
optional int64 split_size_unit_in_byte = 3;
optional int32 split_point_limit = 4;
}
パラメーター | タイプ | 必須 | 説明 |
table_name | string | はい | データを分割するテーブルの名前。 |
split_size | int64 | はい | 各スプリットのおおよそのサイズ。単位: メガバイト。 |
split_size_unit_in_byte | int64 | いいえ | 分割に使用するサイズ単位。このパラメーターは、計算精度を確保するために分割点の計算で使用されます。 |
split_point_limit | int32 | いいえ | 分割点の数の制限。このパラメーターは、分割点の計算の戻り値を制御するために使用されます。 |
レスポンス構文
message ComputeSplitPointsBySizeResponse {
required ConsumedCapacity consumed = 1;
repeated PrimaryKeySchema schema = 2;
/**
* スプリット間の分割点 (昇順)
*
* スプリットは、プライマリキーの連続した範囲であり、
* データサイズはリクエストで指定された split_size とほぼ同じです。
* サイズを正確にすることは難しい場合があります。
*
* 分割点は、テーブルスキーマに関するプライマリキー列の配列であり、
* テーブルスキーマの配列より長くなることはありません。
* 末尾の -inf は、送信ペイロードを削減するために省略されます。
*/
repeated bytes split_points = 3;
/**
* スプリットが存在する場所。
*
* TableStore のマネージド性により、これらの場所はヒントにすぎません。
* 場所が表示に適していない場合は、空の文字列が配置されます。
*/
repeated SplitLocation locations = 4;
}
パラメーター | タイプ | 説明 |
consumed | このリクエストによって消費されるキャパシティユニット (CU) の数。 | |
schema | テーブルのスキーマ。スキーマは、テーブルの作成時に定義されたスキーマと同じです。 | |
split_points | repeated bytes | スプリット間の分割点。分割点は、これらのスプリット間で単調に増加する必要があります。各分割点はPlainBuffer形式のデータ行であり、プライマリキーのみを含みます。各分割点の最後の -inf は送信されません。これにより、送信されるデータ量を削減できます。 |
locations | repeated SplitLocation | 分割点が存在するホストに関する情報。このパラメーターは空のままにすることができます。 |
たとえば、テーブルに3つのプライマリキー列が含まれており、最初のプライマリキー列のデータ型が文字列である場合、この操作を呼び出すと、(-inf,-inf,-inf)
から("a",-inf,-inf)
、("a",-inf,-inf)
から("b",-inf,-inf)
、("b",-inf,-inf)
から("c",-inf,-inf)
、("c",-inf,-inf)
から("d",-inf,-inf)
、("d",-inf,-inf)
から(+inf,+inf,+inf)
というスプリットが取得されます。最初の3つのスプリットはmachine-Aに存在し、他の2つのスプリットはmachine-Bに存在します。この場合、split_pointsの値は[("a"),("b"),("c"),("d")]
、locationsの値は"machine-A"*3, "machine-B"*2
です。
TableStore SDK の使用
Java 用 TableStore SDK: データを特定のサイズのシャードに分割する
CU 消費量
消費される読み取り CU の数は、スプリットの数と同じです。書き込み CU は消費されません。