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

Tablestore:指定したサイズに近い複数の論理スプリットにテーブル内のデータを分割する

最終更新日:Dec 28, 2024

ComputeSplitsBySize オペレーションを呼び出すことで、テーブル内のデータを、指定した値とほぼ同じサイズを持つ複数の論理スプリットに分割できます。スプリット間の分割点と、スプリットが存在するホストに関する情報が返されます。ほとんどの場合、このオペレーションは、コンピューティングエンジンの並列処理計画などの実行計画を決定するために使用されます。

説明

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

前提条件

API オペレーション

    /**
     * テーブル内のデータを、指定したサイズに近い複数のスプリットに論理的に分割し、スプリット間の分割点を返し、スプリットが存在するホストについてプロンプトを表示します。
     * ほとんどの場合、この操作は、コンピューティングエンジンの並列処理計画などの実行計画を決定するために使用されます。
     * @api
     * @param [] $request リクエストパラメータ。
     * @return [] レスポンス。
     * @throws OTSClientException パラメータエラーが発生した場合、または Tablestore サーバーが検証エラーを返した場合にスローされる例外。
     * @throws OTSServerException Tablestore サーバーがエラーを返した場合にスローされる例外。
     */
    public function computeSplitPointsBySize(array $request)
            

パラメータ

リクエスト情報

リクエストパラメータ

パラメータ

説明

table_name

データテーブルの名前。

split_size

各スプリットの指定サイズ。

単位:100 MB。

リクエスト構文

$result = $client->ComputeSplitsBySize([
    'table_name' => '<string>', // データテーブルの名前を指定します。このパラメータは必須です。
    'split_size' => <integer>   // 各スプリットのサイズを指定します。このパラメータは必須です。
]);     

レスポンス情報

レスポンスパラメータ

パラメータ

説明

consumed

この操作で消費されたキャパシティユニット (CU) の数。

capacity_unit は、消費された読み取りおよび書き込み CU の数を示します。

  • read: 読み取りスループット。

  • write: 書き込みスループット。

primary_key_schema

データテーブルのプライマリキースキーマ。これは、データテーブルの作成時に指定されたスキーマと同じです。

splits

スプリット間の分割点。このパラメータには、次の構成項目が含まれます。

  • lower_bound: プライマリキーの範囲の最小値。

    lower_bound 値は、GetRange に渡して範囲でデータを読み取ることができます。

    • 各項目には、プライマリキー名、プライマリキー値 (PrimaryKeyValue)、プライマリキタイプ (PrimaryKeyType) が順番に含まれます。

    • PrimaryKeyType は、INTEGER 値を指定する PrimaryKeyTypeConst::CONST_INTEGER、UTF-8 エンコード文字列を指定する PrimaryKeyTypeConst::CONST_STRING、BINARY 値を指定する PrimaryKeyTypeConst::CONST_BINARY、INF_MIN(-inf) 値を指定する PrimaryKeyTypeConst::CONST_INF_MIN、または INF_MAX(inf) 値を指定する PrimaryKeyTypeConst::CONST_INF_MAX に設定できます。

  • upper_bound: プライマリキーの範囲の最大値。upper_bound の形式は lower_bound と同じです。

    upper_bound 値は、GetRange に渡して範囲でデータを読み取ることができます。

  • location: 分割点が配置されているマシン。このパラメータの値は空にすることができます。

レスポンス構文

[
    'consumed' => [
        'capacity_unit' => [
            'read' => <integer>,
            'write' => <integer>
        ]
    ],
    'primary_key_schema' => [
        ['<string>', <PrimaryKeyType>],
        ['<string>', <PrimaryKeyType>, <PrimaryKeyOption>]
    ]
    'splits' => [
        [ 
            'lower_bound' => [
                ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>],
                ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
            ],
            'upper_bound' => [
                ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>],
                ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
            ],
            'location' => '<string>'
        ],
        // ...
    ]
]           

次のサンプルコードは、テーブル内のデータをサイズが 100 MB に近い複数のスプリットに論理的に分割する方法の例を示しています。

    $result = $client->ComputeSplitsBySize([
        'table_name' => 'MyTable', 
        'split_size' => 1
    ]);
    foreach($result['splits'] as $split) {
        print_r($split['location']);    
        print_r($split['lower_bound']);    
        print_r($split['upper_bound']);    
    }