我希望在DynamoDB表中存储大量照片。 每张照片都属于“专辑” - 事实上,照片可以属于多张专辑。 我想设置数据,以便我可以执行album_id的查询并检索属于该相册的所有photo_id。
例如:“获取属于专辑1的所有照片”
table "album-photo-map"
keys(album_id, timestamp) - photo_id
然后,我可以在table album-photo-map上执行范围查询,要求所有属于专辑“1”的photo_id,其range_key的时间戳大于0。
问题是 - 如果有两张具有相同时间戳的照片怎么办? DynamoDB不会让我有多个具有相同密钥的项目。
解决这个问题的一种方法可能是在album_id的一个数据字段中存储photo_ids的二进制列表,但是然后照片列表会被64K限制,我宁愿不这样做。
我是否正确地考虑过这个问题?是否有重复时间戳问题的解决方案?也许我可以这样做:
timestamp = str(time.time()).replace('.','')
>> 134704419008
并存储?这会快到足以消除重复的问题吗?
答案 0 :(得分:1)
您可以使用图像的哈希值作为range_key。如果很好地选择了散列函数,那么在不相同的情况下图像重叠的可能性很小。这个密钥会更好,因为它与内容直接相关。
如果性能很重要,您只需在密钥上附加一个随机数即可。