1

我希望在 DynamoDB 表中存储大量照片。每张照片都可以属于一个“相册”——实际上,一张照片可以属于多个相册。我想设置数据,以便我可以查询album_id 并检索属于该专辑的所有photo_id。

例如:“获取属于相册 1 的所有照片”

table "album-photo-map"
keys(album_id, timestamp) - photo_id

然后,我可以对表相册照片地图执行范围查询,询问属于相册“1”且时间戳大于 0 的范围键的所有 photo_id。

问题是——如果有两张具有相同时间戳的照片怎么办?DynamoDB 不会让我拥有多个具有相同密钥的项目。

解决此问题的一种方法可能是将 photo_ids 的二进制列表存储在album_id 的数据字段之一中,但随后照片列表将受到 64K 的限制,我不想这样做。

我是否正确地考虑了这一点?是否有解决重复时间戳问题的方法?也许我可以做类似的事情:

timestamp = str(time.time()).replace('.','')
>> 134704419008

并存储它?这是否足够快以消除重复问题?

4

1 回答 1

1

您可以使用图像的哈希作为 range_key。如果散列函数选择得当,图像重叠但不完全相同的可能性很小。这个键会更好,因为它与内容直接相关。

如果性能很重要,您可以简单地将随机数附加到密钥。

于 2012-09-07T19:14:12.703 回答