4

プロジェクトにDynamoDBを実装しています。大きなデータ文字列をデータベースに配置する必要があるため、データを小さな断片に分割し、1つの属性値(文字列の一部)のみが変更された複数の行を挿入します。1つの列(範囲キー)には、いくつかの部分が含まれています。データの挿入と選択は、小さい文字列と大きい文字列で完全に機能します。問題はアイテムの削除です。アイテムを削除する場合は、そのアイテムの主キーを指定する必要があることを読みました(ハッシュキーまたはハッシュキーと範囲キー-テーブルによって異なります)。しかし、属性の1つに特定の値を持つアイテムを削除したい場合はどうなりますか?テーブル全体をスキャンする(クエリではなくスキャンする)必要があり、行ごとに削除またはバッチ削除を実行する必要がありますか?または、2つのクエリを使用しない別の解決策はありますか?私がやろうとしているのは、テーブル全体をスキャンしないようにすることです。

手伝ってくれてありがとう。

4

1 に答える 1

1

DynamoDBの任意の要素を削除する方法はありません。あなたは確かにとを知る必要がありhash_keyますrange_key

queryこれに対するあなたのニーズに合わない場合(つまり、あなたも知らないhash_key場合)、あなたは立ち往生しています。

最善の方法は、データモデリングを再構築することです。カスタムインデックスを作成するか、「遅延削除」を実行します。

'lazy delete'を実現するには、削除する要素のキューとしてテーブルを使用します。定期的にEMRを実行して、1回のスキャン操作でバッチ内のすべての削除を実行します。これは本当に最善の解決策ではありませんが、改造を避けるために私が考えることができる唯一の方法です。

TL; DR:実際の方法はありませんが、回避策があります。データの少なくとも一部を再モデル化することを強くお勧めします。

于 2012-09-18T13:54:34.047 に答える