2

特定の値をまだ持っておらず、追加のフラグが設定されているドメイン内のすべてのアイテムに値を設定しようとしています。

基本的にすべてのアイテムについて、

ValueB が 0 の場合、ValueA を 100 に設定

しかし、私はこれを達成する方法について混乱しています。これまでのところ、次のような PutRequest を使用して個々のアイテムの値を設定してきました。

ArrayList<ReplaceableAttribute> newAttributes = new ArrayList<ReplaceableAttribute>();
newAttributes.add(new ReplaceableAttribute("ValueA",Integer.toString(100), true));
PutAttributesRequest newRequest = new PutAttributesRequest();
newRequest.setDomainName(usersDomain);
newRequest.setItemName(userID);
newRequest.setAttributes(newAttributes);
sdb.putAttributes(newRequest);

これは個々のアイテムに対して機能し、最初にアイテム名 (ユーザー ID) を取得する必要があります。これは、すべてのアイテムを「リスト」し、1 つずつ行う必要があるということですか? 私は約19000以上のアイテムを持っているので、トークンを使用して2000の制限の後に次のセットを取得する必要があると思いますか?

より効率的な方法はありませんか?今はそれほど重くはないかもしれませんが、最終的には 100,000 個を超えると予想しています。

PD: AWS Java SDK for Eclipse を使用しています。

4

1 に答える 1

1

独自のコードを記述して文法的にそれを行う方法について話している場合は、はい. まず、すべてのアイテム名、つまりあなたの場合は UserID を知る必要があり、次に値を 1 つずつ設定する必要があります。この場合、BatchPUTAttribute を使用できます。Batch PUT を使用すると、1 回の要求で 25 項目を更新できます。並列スレッドで 5 ~ 20 個の BatchPutAttribute 要求を実行できます。パフォーマンスを調整するための詳細を知ってください

何らかのトリッキーな方法でそれを行う必要がある場合は、SDBExplorerを使用できます。SDBExplorer は条件付き PUT をサポートしていないため、すべてのアイテムに 100 が設定されることに注意してください。とにかく設定したい場合は、次の手順に従ってください-

  1. ダウンロード SDBExplorer zip 版のフォーム ダウンロード ページ。
  2. それを抽出し、実行可能ファイルを実行します。
  3. 30 日間の試用ライセンスをダウンロードします。
  4. ライセンスがダウンロードされると、メイン UI が開きます。
  5. 有効なアクセス キーとシークレット キーを入力し、[GO] ボタンをクリックします。
  6. 左側のツリーにドメインのリストが表示されます。
  7. すべての項目に値を設定するドメインを右クリックします。
  8. 「CSV にエクスポート」オプションを選択します。
  9. ドメインのコンテンツを CSV にエクスポートします。http://www.sdbexplorer.com/documentation/simpledb--how-to-export-domain-in-csv-using-sdbexplorer.html
  10. ドメインがエクスポートされたパスに移動します。
  11. CSV ファイルを開きます。
  12. 最初の列はアイテム名です。
  13. 項目名と列「ValueA」以外のすべての列を削除します。
  14. 「ValueA」列以下のすべての項目名に100を設定します。
  15. CSV を保存します。
  16. SDBExplorer のメイン UI に移動します。
  17. 同じドメインを選択します。
  18. ツールバーから「インポート」オプションをクリックします。
  19. パネルが開きます。
  20. 次に、データをドメインにインポートします。http://www.sdbexplorer.com/documentation/simpledb--how-to-upload-csv-file-data-and-specifying-column-as-amazon-simple-db-item-name.html
  21. インポートが完了したら、ドメインを調べると、列 ValueA のすべてのアイテムに値 100 が設定されていることがわかります。

最初にダミー ドメインで手順を試してください。

私があなたに何を提案しようとしているのですか?

ドメイン内のすべてのアイテム名を知るには、ドメインのすべてのコンテンツをローカル ファイル システムの CSV ファイルにエクスポートすることをお勧めします。すべてのアイテム名を CSV で取得したら、「ValueA」という 1 つの列だけを保持します。CSV ファイルのすべての項目に「100」を設定し、コンテンツをドメインにアップロード/インポートします。

開示者: 私は SDBExplorer の開発者の 1 人です。

于 2013-08-02T05:39:43.157 に答える