ホーム>source

DynamoDBテーブルのアイテムをどのように循環できますか?

つまり、 [A,B,C] を含むテーブルがある場合 、最初の通話でアイテムA、2番目の通話でアイテムB、3番目の通話でアイテムC、4番目の通話でアイテムAを効率的に取得するにはどうすればよいですか?

この表は、将来的に D, E, F を含むように拡張される可能性がありますなど、新しい要素をサイクルに組み込んでいきたいと思います。

私が現在行っている方法は、各アイテムに「seen」属性を与えることです。テーブル全体をスキャンして、「表示」されていない要素を見つけ、「表示」として戻します。すべてが「見られた」とき、すべての要素を再び「見られない」ようにします。これは非常に高価です。

あなたの答え
  • 解決した方法 # 1

    私は最も簡単なオプションはおそらく次のとおりだと思います:

    Limit=1 でスキャンを使用する  そして ExclusiveStartKey を供給しないでください 、これは最初のアイテムを取得します

    アイテムが返され、 LastEvaluatedKey  応答に存在する場合、 ExclusiveStartKey でスキャンを再実行します   LastEvaluatedKey に設定  以前の応答と再び Limit=1 、アイテムが返されなくなるか LastEvaluatedKey になるまで手順2を繰り返します。  欠席です

    返されるアイテムがゼロの場合は、テーブルの最後に到達し、ステップ1に進みます。

    これは珍しいパターンであり、おそらく非常に効率的ではないため、ここで実際に実行しようとしていることについてこれ以上共有できれば、より良いオプションを提案できる可能性があります。

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ text to speech - Windows 8用のフリートテストプロジェクトを構築する方法は?