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

Tablestore:データの削除

最終更新日:Dec 28, 2024

Tablestoreは、1行のデータを削除できるDeleteRow操作と、複数行のデータを一度に削除できるBatchWriteRow操作を提供します。

説明

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

使用上の注意

  • データを削除するときは、指定するプライマリキー列の数と型が、テーブル内の実際のプライマリキー列の数と型と同じである必要があります。

  • 削除したデータは復元できません。注意して進めてください。

1 行のデータの削除

DeleteRow 操作を呼び出して、1 行のデータを削除できます。削除する行が存在しない場合、テーブルは変更されません。

1 行のデータを削除するときに、条件付き更新機能を使用して、指定された条件を満たす行からデータを削除できます。詳細については、条件付き更新を参照してください。

複数行のデータを一度に削除する

削除するデータのプライマリキー情報を取得した後、BatchWriteRow 操作を呼び出して、プライマリキー情報に基づいて複数行のデータを一度に削除します。

説明

特定の時間以前に書き込まれたデータを削除する場合は、データを削除するときに Time To Live (TTL) 機能を使用できます。詳細については、TTLを参照してください。

複数行のデータを一度に削除するときに、次の設定を構成できます。

  • リクエストで複数のテーブルからデータを一度に削除できます。

  • 条件付き更新機能を使用して、指定された条件を満たす行からデータを削除できます。詳細については、条件付き更新を参照してください。

使用方法

Tablestore コンソールの使用

Tablestore コンソールで、1 行のデータの削除または複数行のデータの一括削除を実行できます。

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

  2. 概要ページで、管理するインスタンスを見つけ、アクション列のインスタンスの管理をクリックします。

  3. インスタンスの詳細タブのテーブルタブで、管理するテーブルの名前をクリックします。

  4. テーブルの管理ページのデータのクエリタブで、削除する 1 つ以上の行を選択し、ページの下部にある削除をクリックします。

  5. 削除メッセージで、OKをクリックします。

Tablestore CLI の使用

Tablestore CLI で delete コマンドを実行して、データの行を削除できます。

次のサンプルコードは、最初のプライマリキー列の値が 86 で、2 番目のプライマリキー列の値が 6771 である行からデータを削除する方法の例を示しています。

delete --pk '["86", 6771]'

Tablestore SDK の使用

Tablestore SDK for JavaTablestore SDK for GoTablestore SDK for PythonTablestore SDK for Node.jsTablestore SDK for .NET、またはTablestore SDK for PHP を使用してデータを削除できます。この例では、Tablestore SDK for Java を使用します。

1 行のデータの削除

  • データの行を削除する

    次のサンプルコードは、テーブルから特定のデータ行を削除する方法の例を示しています。

    private static void deleteRow(SyncClient client, String pkValue) {
        // プライマリキーを構築します。
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
        PrimaryKey primaryKey = primaryKeyBuilder.build();
        // テーブルの名前を指定します。
        RowDeleteChange rowDeleteChange = new RowDeleteChange("<TABLE_NAME>", primaryKey);
    
        client.deleteRow(new DeleteRowRequest(rowDeleteChange));
    }                    
  • データを削除するときに条件を指定する

    次のサンプルコードは、特定の行が存在し、特定の行の Col0 列の値が 100 より大きい場合に、テーブルから特定のデータ行を削除する方法の例を示しています。

    private static void deleteRow(SyncClient client, String pkValue) {
        // プライマリキーを構築します。
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
        PrimaryKey primaryKey = primaryKeyBuilder.build();
        // テーブルの名前を指定します。
        RowDeleteChange rowDeleteChange = new RowDeleteChange("<TABLE_NAME>", primaryKey);
    
        // DeleteRow 操作の条件を指定します。この例では、行が存在し、Col0 列の値が 100 より大きい場合にのみ行が削除されます。
        Condition condition = new Condition(RowExistenceExpectation.EXPECT_EXIST);
        condition.setColumnCondition(new SingleColumnValueCondition("Col0",
                SingleColumnValueCondition.CompareOperator.GREATER_THAN, ColumnValue.fromLong(100)));
        rowDeleteChange.setCondition(condition);
    
        client.deleteRow(new DeleteRowRequest(rowDeleteChange));
    }                   

複数行のデータを一度に削除する

  1. データを削除する前に、ビジネス要件に基づいて、削除するデータのプライマリキー情報をクエリする適切な方法を選択します。

    • プライマリキー値が指定された範囲内にあるデータを削除するには、GetRange 操作を呼び出してデータをクエリし、データのプライマリキー情報を取得します。詳細については、データの読み取りを参照してください。

    • 指定された条件を満たすデータを削除するには、検索インデックスを使用してデータをクエリします。次に、データのプライマリキー情報を取得します。詳細については、検索インデックスの作成Tablestore SDK の使用を参照してください。

  2. データのプライマリキー情報を取得した後、BatchWriteRow 操作を呼び出して、プライマリキー情報に基づいて複数行のデータを一度に削除します。詳細については、「データの書き込み」トピックの複数行のデータを一度に書き込むセクションを参照してください。

    次のサンプルコードは、テーブル内の pk プライマリキー列の値が pk であるデータ行と、別のテーブル内の pk1 プライマリキー列の値が pk1 で pk2 プライマリキー列の値が pk2 であるデータ行を一度に削除する方法の例を示しています。

    private static void batchWriteRow(SyncClient client) {    
        BatchWriteRowRequest batchWriteRowRequest = new BatchWriteRowRequest();
    
        // rowDeleteChange1 を構築します。
        PrimaryKeyBuilder pk1Builder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        pk1Builder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("pk"));
        // テーブルの名前を指定します。
        RowDeleteChange rowDeleteChange1 = new RowDeleteChange("<TABLE_NAME1>", pk1Builder.build());
        // バッチ操作のコードに rowDeleteChange1 を追加します。
        batchWriteRowRequest.addRowChange(rowDeleteChange1);
    
        // rowDeleteChange2 を構築します。
        PrimaryKeyBuilder pk2Builder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        pk2Builder.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromString("pk1"));
        pk2Builder.addPrimaryKeyColumn("pk2", PrimaryKeyValue.fromString("pk2"));
        // テーブルの名前を指定します。
        RowDeleteChange rowDeleteChange2 = new RowDeleteChange("<TABLE_NAME2>", pk2Builder.build());
        // バッチ操作のコードに rowDeleteChange2 を追加します。
        batchWriteRowRequest.addRowChange(rowDeleteChange2);
    
        BatchWriteRowResponse response = client.batchWriteRow(batchWriteRowRequest);
    
        System.out.println("すべての操作が成功したかどうか:" + response.isAllSucceed());
        if (!response.isAllSucceed()) {
            for (BatchWriteRowResponse.RowResult rowResult : response.getFailedRows()) {
                System.out.println("失敗した行:" + batchWriteRowRequest.getRowChange(rowResult.getTableName(), rowResult.getIndex()).getPrimaryKey());
                System.out.println("失敗の原因:" + rowResult.getError());
            }
            /**
             * createRequestForRetry メソッドを使用して別のリクエストを構築し、失敗した行でバッチ操作を再試行できます。この例では、再試行リクエストのみが構築されます。
             * Tablestore SDK のカスタム再試行ポリシーを使用することをお勧めします。このポリシーを使用して、失敗した行でバッチ操作を再試行できます。再試行ポリシーを構成した後、操作を呼び出すために再試行コードを追加する必要はありません。
             */
            BatchWriteRowRequest retryRequest = batchWriteRowRequest.createRequestForRetry(response.getFailedRows());
        }
    }

課金

操作で消費されたキャパシティユニット (CU) の数に基づいて課金されます。消費された CU には、インスタンスタイプに基づいて、従量課金読み取り/書き込み CU と予約読み取り/書き込み CU が含まれる場合があります。

説明

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

DeleteRow 操作で消費される読み取り CU と書き込み CU の数は、次のルールに基づいて計算されます。

  • 消費される書き込み CU の数は、次の式の計算結果を切り上げた値です。消費される書き込み CU の数 = 行のすべてのプライマリキー列のデータサイズ / 4 KB。

  • condition パラメーターの値が IGNORE でない場合、消費される読み取り CU の数は、次の式の計算結果を切り上げた値です。消費される読み取り CU の数 = 行のすべてのプライマリキー列のデータサイズ / 4 KB。

  • 指定された行存在条件が満たされない場合、操作は失敗し、1 つの書き込み CU が消費されます。