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

Tablestore:データの読み取り

最終更新日:Sep 30, 2026

Tablestore は、単一行データを読み取るための GetRow API、および複数行データを読み取るための BatchGetRow API と GetRange API を提供します。

説明

テーブルの基本単位は行であり、プライマリキー列と属性列で構成されます。プライマリキー列は必須であり、すべての行で名前と型が同じである必要があります。属性列はオプションであり、各行で属性が異なる場合があります。詳細については、「ワイドテーブルモデル」をご参照ください。

注意事項

自動採番主キー列を持つテーブルからデータを読み取る場合、自動採番列の値を含む完全なプライマリキーを指定する必要があります。詳細については、「自動採番主キー列」をご参照ください。

重要

自動採番主キー列の値がわからない場合は、最初のプライマリキー列に対して範囲クエリを実行することでデータを読み取ることができます。

単一行データの読み取り

GetRow API を呼び出して、単一行のデータを読み取ることができます。この操作は、完全なプライマリキーがわかっており、少数の行のみを読み取る必要がある場合に便利です。

単一行を読み取る際、以下の条件でデータをフィルターできます。

  • デフォルトでは、すべての列が返されます。特定の列のみを返すように操作を設定することもできます。

  • フィルターを使用して、特定のフィルター条件を満たす行を返すように設定できます。詳細については、「フィルター」をご参照ください。

  • テーブルに複数のデータバージョンを設定している場合、読み取る最大バージョン数を指定できます。また、特定の時間範囲または特定のバージョン番号のデータを読み取ることもできます。データバージョンの詳細については、「データバージョンとライフサイクル」をご参照ください。

読み取り操作の結果は、次の 2 つの場合があります。

  • 行が存在する場合、操作は行のプライマリキー列と属性列を返します。

  • 行が存在しない場合、結果には行が含まれず、エラーは報告されません。

データの一括読み取り

BatchGetRow API を呼び出して、1 回のリクエストで複数の行を読み取るか、複数のテーブルから同時にデータを読み取ることができます。この操作は、完全なプライマリキーがわかっており、多数の行または複数のテーブルからデータを読み取る必要がある場合に便利です。

BatchGetRow 操作は、複数の GetRow サブ操作で構成されます。サブ操作の構築プロセスは、GetRow 操作と同じです。

データを一括で読み取る際、以下の条件でデータをフィルターできます。

  • 1 回のリクエストで複数のテーブルからデータを読み取ることができます。

    1 回のリクエストで最大 100 行を読み取ることができます。

  • デフォルトでは、すべての列が返されます。特定の列のみを返すように操作を設定することもできます。

    一括読み取りのすべての行は、同じパラメータ条件を使用します。例えば、ColumnsToGet=[colA] は、指定されたすべての行に対して colA 列のみが取得されることを意味します。

  • フィルターを使用して、特定のフィルター条件を満たす行を取得できます。詳細については、「フィルター」をご参照ください。

  • テーブルに複数のデータバージョンを設定している場合、読み取る最大バージョン数を指定できます。また、特定の時間範囲または特定のバージョン番号のデータを読み取ることもできます。データバージョンの詳細については、「データバージョンとライフサイクル」をご参照ください。

BatchGetRow 操作のサブ操作は独立して実行され、Tablestore は各サブ操作の結果を返します。

範囲内のデータの読み取り

GetRange API を呼び出して、指定された範囲内のデータを読み取ることができます。この操作は、完全なプライマリキー範囲またはキープレフィックスを決定できる場合に便利です。

説明

Tablestore テーブルでは、すべての行がプライマリキーでソートされます。テーブルのプライマリキーは、すべてのプライマリキー列から順に構成されます。したがって、行は特定のプライマリキー列に基づいてソートされるわけではありません。

GetRange 操作は最左一致の原則に従います。Tablestore は、最初のプライマリキー列から最後のプライマリキー列まで順番に値を比較して、プライマリキー値が指定された範囲内にあるデータを読み取ります。例えば、データテーブルのプライマリキーが PK1、PK2、PK3 のプライマリキー列で構成されているとします。データを読み取る際、Tablestore はまず行の PK1 値が、指定された範囲内にあるかどうかを判定します。PK1 値が範囲内にない場合、その行は直ちに除外され、後続のプライマリキー列 (PK2、PK3) は評価されません。PK1 値が範囲内にある場合にのみ、Tablestore は次に PK2 の値をその指定範囲と比較します。この比較は、範囲クエリで定義されたプライマリキー列に対して順番に続行されます。

範囲内のデータを読み取る際、以下の条件でデータをフィルターできます。

  • キープレフィックスを指定し、他のプライマリキー列に仮想ポイント INF_MIN (無限小) と INF_MAX (無限大) を使用します。また、完全なプライマリキー範囲を指定してデータを読み取ることもできます。

    重要

    キープレフィックスを決定できない場合、プライマリキー範囲全体を INF_MIN から INF_MAX に設定することで、フルテーブルスキャンを実行できます。この操作は大量の計算リソースを消費します。注意して使用してください。

    範囲が大きい場合、スキャンされた行数またはデータ量が一定の制限を超えると、スキャンは停止します。操作は取得した行と次のプライマリキーに関する情報を返します。返された次のプライマリキー情報を使用して、別のリクエストを開始し、範囲内の残りの行を取得できます。

    次のいずれかの条件が満たされると、GetRange 操作が停止してデータが返される場合があります。

    • スキャンされたデータ量が 4 MB に達した。

    • スキャンされた行数が 5,000 に達した。

    • 返された行数が上限に達した。

    • すべての予約済み読み取りスループットが消費されたため、次の行のデータを読み取るのに十分な読み取りスループットがない。

  • 正順または逆順で指定された最大行数を読み取ることができます。例えば、正順で最大 5 行を読み取ることができます。

  • デフォルトでは、すべての列が返されます。特定の列のみを返すように操作を設定することもできます。

  • フィルターを使用して、特定のフィルター条件を満たす行を取得できます。詳細については、「フィルター」をご参照ください。

    範囲読み取りのすべての行は、同じパラメータ条件を使用します。例えば、ColumnsToGet=[colA] は、範囲内のすべての行に対して colA 列のみが取得されることを意味します。

  • テーブルに複数のデータバージョンを設定している場合、読み取る最大バージョン数を指定できます。また、特定の時間範囲または特定のバージョン番号のデータを読み取ることもできます。データバージョンの詳細については、「データバージョンとライフサイクル」をご参照ください。

GetRange を使用して大量のデータをスキャンする場合、Tablestore はリクエストごとに 1 回のスキャンのみを実行します。行数が 5,000 を超えるか、データサイズが 4 MB を超えると、スキャンは停止します。これらの制限を超えるデータは返されません。後続のデータを取得するには、ページネーションを使用する必要があります。

使用方法

コンソールの使用

コンソールを使用して、単一行のクエリまたは範囲内のデータのクエリを実行できます。

  1. Tablestore コンソールにログインします。

  2. [概要] ページで、インスタンスを探し、[操作] 列の [インスタンス管理] をクリックします。

  3. [インスタンス詳細] タブで、[データテーブルリスト] セクションのテーブルを見つけ、[操作] 列の [クエリ/検索] をクリックします。

  4. [データ管理] タブで、[データクエリ] をクリックします。次に、単一の行を読み取るか、範囲内のデータを読み取るかを選択します。

    単一行データの読み取り

    1. [クエリデータ] ダイアログボックスで、[クエリ範囲] を [単一行クエリ] に設定し、クエリするテーブルを選択します。

    2. デフォルトでは、すべての列が返されます。特定の属性列のみを返すには、[すべての列を取得] を無効にし、目的の属性列を入力します。

      複数の属性列はカンマ (,) で区切ります。

    3. 対象の行の[プライマリキー値]を入力します。

      プライマリキー値の完全性と正確性は、クエリ結果に影響します。

    4. [最大バージョン数] に、返すバージョン数を入力します。

    5. [OK] をクリックします。

    範囲内のデータの読み取り

    1. [データクエリ] ダイアログボックスで、[クエリ範囲] を [範囲クエリ] に設定し、クエリするテーブルを選択します。

    2. デフォルトでは、すべての列が返されます。特定の属性列のみを返すには、[すべての列を取得] を無効にし、目的の属性列を入力します。

      複数の属性列はカンマ (,) で区切ります。

    3. 開始プライマリキー列と終了プライマリキー列を入力します。

    4. 重要
      • 範囲クエリは、最初のプライマリキー列を最初に評価します。最初のプライマリキー列の値が同じ場合、システムは次に 2 番目のプライマリキー列を評価します。このルールは、後続のすべてのプライマリキー列に適用されます。

      • 読み取り範囲は左閉右開区間です。つまり、範囲の開始は含まれ、範囲の終了は含まれません。

    5. 返すバージョン数を [最大バージョン数] に入力します。

    6. クエリ結果のソート順を設定します。[昇順クエリ] または [降順クエリ] を選択できます。

    7. [OK] をクリックします。

コマンドラインインターフェイス (CLI) の使用

コマンドラインインターフェイス (CLI) を使用して、次のコマンドを実行してデータを読み取ることができます。

  • get コマンドを実行して、単一行のデータを読み取ります。詳細については、「データの読み取り」をご参照ください。

    次の例では、最初のプライマリキー列の値が "86"、2 番目のプライマリキー列の値が 6771 の行を読み取ります。

    get --pk '["86",6771]'
  • scan コマンドを実行して、範囲内のデータを読み取ります。詳細については、「データのエクスポート」をご参照ください。

    次の例では、["86",7000] と ["86",6770] の間のプライマリキー範囲から逆順でデータを読み取り、pid 列のみを返します。

    scan --begin '["86",7000]' --end '["86",6770]' --backward --columns pid

SDK の使用

Java SDK、Go SDK、Python SDK、Node.js SDK、.NET SDK、または PHP SDK を使用してデータを読み取ることができます。このセクションでは、Java SDK を例に説明します。

単一行データの読み取り

データを読み取る際、データバージョン、読み取る列、フィルター、正規表現フィルターを指定できます。

  • 最新バージョンのデータと特定の列の読み取り

    次のサンプルコードは、データテーブルの行の指定された列から最新バージョンのデータを読み取る方法の例を示しています。

    private static void getRow(SyncClient client, String pkValue) {
        // プライマリキーを構築します。
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
        PrimaryKey primaryKey = primaryKeyBuilder.build();
    
        // テーブル名とプライマリキーを指定して、1 行のデータを読み取ります。
        SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("<TABLE_NAME>", primaryKey);
        // MaxVersions パラメータを 1 に設定して、最新バージョンのデータを読み取ります。
        criteria.setMaxVersions(1);
        GetRowResponse getRowResponse = client.getRow(new GetRowRequest(criteria));
        Row row = getRowResponse.getRow();
    
        System.out.println("読み取りが完了しました。結果:");
        System.out.println(row);
    
        // 読み取る列を指定します。
        criteria.addColumnsToGet("Col0");
        getRowResponse = client.getRow(new GetRowRequest(criteria));
        row = getRowResponse.getRow();
    
        System.out.println("読み取りが完了しました。結果:");
        System.out.println(row);
    } 
  • フィルターを使用したデータの読み取り

    次のサンプルコードは、データテーブルの行から最新バージョンのデータを読み取り、フィルターを使用して Col0 列の値に基づいてデータをフィルターする方法の例を示しています。

    private static void getRow(SyncClient client, String pkValue) {
        // プライマリキーを構築します。
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
        PrimaryKey primaryKey = primaryKeyBuilder.build();
    
        // テーブル名とプライマリキーを指定して、1 行のデータを読み取ります。
        SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("<TABLE_NAME>", primaryKey);
        // MaxVersions パラメータを 1 に設定して、最新バージョンのデータを読み取ります。
        criteria.setMaxVersions(1);
    
        // Col0 列の値が 0 の行を返すようにフィルターを設定します。
        SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter("Col0",
                SingleColumnValueFilter.CompareOperator.EQUAL, ColumnValue.fromLong(0));
        // Col0 列が存在しない場合、行は返されません。
        singleColumnValueFilter.setPassIfMissing(false);
        criteria.setFilter(singleColumnValueFilter);
    
        GetRowResponse getRowResponse = client.getRow(new GetRowRequest(criteria));
        Row row = getRowResponse.getRow();
    
        System.out.println("読み取りが完了しました。結果:");
        System.out.println(row);
    }
  • データの読み取り時に正規表現フィルターを使用する

    次のサンプルコードは、データテーブルの行から Col1 列のデータを読み取り、正規表現を使用して列内のデータをフィルターする方法の例を示しています。

    private static void getRow(SyncClient client, String pkValue) {
        // データテーブルの名前を指定します。
        SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("<TABLE_NAME>");
     
        // プライマリキーを構築します。
        PrimaryKey primaryKey = PrimaryKeyBuilder.createPrimaryKeyBuilder()
            .addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue))
            .build();
        criteria.setPrimaryKey(primaryKey);
     
        // MaxVersions パラメータを 1 に設定して、最新バージョンのデータを読み取ります。
        criteria.setMaxVersions(1);
     
        // フィルターを設定します。cast<int>(regex(Col1)) が 100 より大きい場合、行が返されます。
        RegexRule regexRule = new RegexRule("t1:([0-9]+),", RegexRule.CastType.VT_INTEGER);
        SingleColumnValueRegexFilter filter =  new SingleColumnValueRegexFilter("Col1",
            regexRule,SingleColumnValueRegexFilter.CompareOperator.GREATER_THAN, ColumnValue.fromLong(100));
        criteria.setFilter(filter);
     
        GetRowResponse getRowResponse = client.getRow(new GetRowRequest(criteria));
        Row row = getRowResponse.getRow();
    
        System.out.println("読み取りが完了しました。結果:");
        System.out.println(row);
    }

データの一括読み取り

次のサンプルコードは、バージョン条件、読み取る列、フィルターを設定して 10 行のデータを読み取る方法の例を示しています。

private static void batchGetRow(SyncClient client) {
    // データテーブルの名前を指定します。
    MultiRowQueryCriteria multiRowQueryCriteria = new MultiRowQueryCriteria("<TABLE_NAME>");
    // 読み取る 10 行を指定します。
    for (int i = 0; i < 10; i++) {
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("pk" + i));
        PrimaryKey primaryKey = primaryKeyBuilder.build();
        multiRowQueryCriteria.addRow(primaryKey);
    }
    // 条件を追加します。
    multiRowQueryCriteria.setMaxVersions(1);
    multiRowQueryCriteria.addColumnsToGet("Col0");
    multiRowQueryCriteria.addColumnsToGet("Col1");
    SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter("Col0",
            SingleColumnValueFilter.CompareOperator.EQUAL, ColumnValue.fromLong(0));
    singleColumnValueFilter.setPassIfMissing(false);
    multiRowQueryCriteria.setFilter(singleColumnValueFilter);

    BatchGetRowRequest batchGetRowRequest = new BatchGetRowRequest();
    // BatchGetRow 操作では、複数のテーブルからデータを読み取ることができます。各 multiRowQueryCriteria パラメータは、1 つのテーブルのクエリ条件を指定します。複数のテーブルからデータを読み取るために、複数の multiRowQueryCriteria パラメータを追加できます。
    batchGetRowRequest.addMultiRowQueryCriteria(multiRowQueryCriteria);

    BatchGetRowResponse batchGetRowResponse = client.batchGetRow(batchGetRowRequest);

    System.out.println("すべての操作が成功したかどうか:" + batchGetRowResponse.isAllSucceed());
    System.out.println("読み取りが完了しました。結果:");
    for (BatchGetRowResponse.RowResult rowResult : batchGetRowResponse.getSucceedRows()) {
        System.out.println(rowResult.getRow());
    }
    if (!batchGetRowResponse.isAllSucceed()) {
        for (BatchGetRowResponse.RowResult rowResult : batchGetRowResponse.getFailedRows()) {
            System.out.println("失敗した行:" + batchGetRowRequest.getPrimaryKey(rowResult.getTableName(), rowResult.getIndex()));
            System.out.println("失敗の原因:" + rowResult.getError());
        }

        /**
         * createRequestForRetry メソッドを使用して、失敗した行の操作を再試行するためのリクエストを構築できます。この例では、再試行リクエストのみが構築されます。
         * バッチ操作の実行後に失敗した行を再試行する方法として、Tablestore SDK のカスタム再試行ポリシーを使用することを推奨します。この方法では、再試行ポリシーを指定した後、操作を呼び出すための再試行コードを追加する必要はありません。
         */
        BatchGetRowRequest retryRequest = batchGetRowRequest.createRequestForRetry(batchGetRowResponse.getFailedRows());
    }
}

範囲内のデータの読み取り

  • 定義された範囲内のデータの読み取り

    次のサンプルコードは、プライマリキー値が指定された範囲内にあるデータを正順で読み取る方法の例を示しています。応答の nextStartPrimaryKey パラメータの値が空の場合、プライマリキー値が指定された範囲内にあるすべてのデータが読み取られます。それ以外の場合は、プライマリキー値が指定された範囲内にあるすべてのデータが返されるまで、別のリクエストを開始する必要があります。

    private static void getRange(SyncClient client, String startPkValue, String endPkValue) {
        // データテーブルの名前を指定します。
        RangeRowQueryCriteria rangeRowQueryCriteria = new RangeRowQueryCriteria("<TABLE_NAME>");
    
        // 開始プライマリキーを指定します。
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(startPkValue));
        rangeRowQueryCriteria.setInclusiveStartPrimaryKey(primaryKeyBuilder.build());
    
        // 終了プライマリキーを指定します。
        primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(endPkValue));
        rangeRowQueryCriteria.setExclusiveEndPrimaryKey(primaryKeyBuilder.build());
    
        rangeRowQueryCriteria.setMaxVersions(1);
    
        System.out.println("GetRange の結果:");
        while (true) {
            GetRangeResponse getRangeResponse = client.getRange(new GetRangeRequest(rangeRowQueryCriteria));
            for (Row row : getRangeResponse.getRows()) {
                System.out.println(row);
            }
    
            // nextStartPrimaryKey パラメータの値が null でない場合、読み取り操作を続行します。
            if (getRangeResponse.getNextStartPrimaryKey() != null) {
                rangeRowQueryCriteria.setInclusiveStartPrimaryKey(getRangeResponse.getNextStartPrimaryKey());
            } else {
                break;
            }
        }
    }         
  • 最初のプライマリキー列で定義された範囲に基づくデータの読み取り

    次のサンプルコードは、最初のプライマリキー列の値によって決定される範囲内のデータを正順で読み取る方法の例を示しています。この例では、2 番目のプライマリキー列の開始値は INF_MIN に設定され、2 番目のプライマリキー列の終了値は INF_MAX に設定されます。応答の nextStartPrimaryKey パラメータの値が null の場合、指定された範囲内のすべてのデータが読み取られます。それ以外の場合は、最初のプライマリキー列の値によって決定される範囲内のすべてのデータが返されるまで、別のリクエストを開始する必要があります。

    private static void getRange(SyncClient client, String startPkValue, String endPkValue) {
        // データテーブルの名前を指定します。
        RangeRowQueryCriteria rangeRowQueryCriteria = new RangeRowQueryCriteria("<TABLE_NAME>");
        // 開始プライマリキーを指定します。この例では、2 つのプライマリキー列が使用されます。
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromString(startPkValue));// 最初のプライマリキー列の値を特定の値に設定します。
        primaryKeyBuilder.addPrimaryKeyColumn("pk2", PrimaryKeyValue.INF_MIN);// 2 番目のプライマリキー列の値を無限小の値に設定します。
        rangeRowQueryCriteria.setInclusiveStartPrimaryKey(primaryKeyBuilder.build());
    
        // 終了プライマリキーを指定します。
        primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromString(endPkValue));// 最初のプライマリキー列の値を特定の値に設定します。
        primaryKeyBuilder.addPrimaryKeyColumn("pk2", PrimaryKeyValue.INF_MAX);// 2 番目のプライマリキー列の値を無限大の値に設定します。
        rangeRowQueryCriteria.setExclusiveEndPrimaryKey(primaryKeyBuilder.build());
    
        rangeRowQueryCriteria.setMaxVersions(1);
    
        System.out.println("GetRange の結果:");
        while (true) {
            GetRangeResponse getRangeResponse = client.getRange(new GetRangeRequest(rangeRowQueryCriteria));
            for (Row row : getRangeResponse.getRows()) {
                System.out.println(row);
            }
    
            // nextStartPrimaryKey パラメータの値が null でない場合、読み取り操作を続行します。
            if (getRangeResponse.getNextStartPrimaryKey() != null) {
                rangeRowQueryCriteria.setInclusiveStartPrimaryKey(getRangeResponse.getNextStartPrimaryKey());
            } else {
                break;
            }
        }
    }    
  • 定義された範囲内のデータの読み取りと特定の列への正規表現フィルターの適用

    次のサンプルコードは、Col1 列からプライマリキー値が ["pk:2020-01-01.log", "pk:2021-01-01.log") の範囲内にあるデータを読み取り、正規表現を使用して Col1 列のデータをフィルターする方法の例を示しています。

    private static void getRange(SyncClient client) {
        // データテーブルの名前を指定します。
        RangeRowQueryCriteria criteria = new RangeRowQueryCriteria("<TABLE_NAME>");
     
        // 読み取るデータのプライマリキーの範囲として ["pk:2020-01-01.log", "pk:2021-01-01.log") を指定します。範囲は左閉右開区間です。
        PrimaryKey pk0 = PrimaryKeyBuilder.createPrimaryKeyBuilder()
            .addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("2020-01-01.log"))
            .build();
        PrimaryKey pk1 = PrimaryKeyBuilder.createPrimaryKeyBuilder()
            .addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("2021-01-01.log"))
            .build();
        criteria.setInclusiveStartPrimaryKey(pk0);
        criteria.setExclusiveEndPrimaryKey(pk1);
     
        // MaxVersions パラメータを 1 に設定して、最新バージョンのデータを読み取ります。
        criteria.setMaxVersions(1);
     
        // フィルターを設定します。cast<int>(regex(Col1)) が 100 より大きい場合、行が返されます。
        RegexRule regexRule = new RegexRule("t1:([0-9]+),", RegexRule.CastType.VT_INTEGER);
        SingleColumnValueRegexFilter filter =  new SingleColumnValueRegexFilter("Col1",
            regexRule,SingleColumnValueRegexFilter.CompareOperator.GREATER_THAN,ColumnValue.fromLong(100));
        criteria.setFilter(filter);
    
        while (true) {
            GetRangeResponse resp = client.getRange(new GetRangeRequest(criteria));
            for (Row row : resp.getRows()) {
                // 何かを実行します
                System.out.println(row);
            }
            if (resp.getNextStartPrimaryKey() != null) {
                criteria.setInclusiveStartPrimaryKey(resp.getNextStartPrimaryKey());
            } else {
                break;
            }
       }
    }

課金の説明

操作によって消費されるキャパシティーユニット (CU) 数に基づいて課金されます。メータリングされた読み取りおよび書き込み CU の料金は、予約済み読み取りおよび書き込み CU の料金とは別です。インスタンスタイプによって、メータリングされた CU または予約済み CU が消費されるかが決まります。

説明

インスタンスタイプと CU の詳細については、「インスタンス」および「読み取り/書き込みスループット」をご参照ください。

データの読み取りでは、読み込みキャパシティーユニット (RCU) を消費しますが、書き込みキャパシティーユニット (WCU) は消費しません。消費される RCU は次のように計算されます。

  • GetRow 操作によって消費される RCU

    消費される RCU 数は、読み取られたデータの合計サイズに基づいており、これはプライマリキーのデータサイズと取得された属性列のデータサイズの合計です。この合計サイズは 4 KB で除算され、整数に切り上げられます。指定された行が存在しない場合、操作は 1 RCU を消費します。

  • BatchGetRow 操作によって消費される RCU

    BatchGetRow 操作の RCU は、各 RowInBatchGetRowRequest を独立した GetRow 操作として扱うことで計算されます。

  • GetRange 操作によって消費される RCU

    消費される RCU 数は、スキャンされたすべてのデータの合計サイズに基づいており、これは範囲内のすべての行のプライマリキーのデータサイズとスキャンされた属性列のデータサイズの合計です。この合計サイズは 4 KB で除算され、整数に切り上げられます。例えば、スキャンが 10 行に及び、各行のプライマリキーとスキャンされた属性列の合計サイズが 330 バイトの場合、合計データサイズは 3.3 KB (10 行 × 330 バイト) です。この操作は 1 RCU を消費します。