DynamoDB テーブルに大量の写真を保存しようとしています。各写真は「アルバム」に属することができます。実際、写真は複数のアルバムに属することができます。データをセットアップして、album_id のクエリを実行し、そのアルバムに属するすべての photo_id を取得できるようにしたいと考えています。
例: 「アルバム 1 に属するすべての写真を取得してください」
table "album-photo-map"
keys(album_id, timestamp) - photo_id
次に、album-photo-map テーブルに対して範囲クエリを実行し、タイムスタンプの range_key が 0 より大きいアルバム「1」に属するすべての photo_id を要求します。
問題は、同じタイムスタンプを持つ 2 枚の写真がある場合はどうなるかということです。DynamoDB では、同じキーを持つ複数のアイテムを使用できません。
これを回避する 1 つの方法は、photo_id のバイナリ リストを album_id のデータ フィールドの 1 つに格納することですが、写真のリストが 64K に制限されてしまいます。
私はこれについて正しく考えていますか?タイムスタンプの重複問題の解決策はありますか? おそらく私は次のようなことができます:
timestamp = str(time.time()).replace('.','')
>> 134704419008
そしてそれを保存しますか?重複の問題を解消するのに十分な速さでしょうか?