我正在制作一个网站,用户可以在其中提取图片并给他们添加注释,我正在努力寻找最有效的方法来构建表格。请考虑以下几点:
进行比较了。
我猜img id和user id作为分区和排序键是最好的选择,尽管这会给每个用户留下1000个条目,当添加新的图像时,我需要为每个用户添加一个项--我可能可以很容易地使用一个辅助索引来完成这个任务。如果可能的话,我想完全避免扫描。
发布于 2020-05-03 14:59:37
如果您想要一个表,可以考虑此表中的两种类型的项:
1. (未加注释)图像
分区键:imgID_xxx
范围键:img
2.按用户标注的图像
分区键:userID_xxx
范围键:imgID_xxx
注释:some annotation...
因此,最初您将只有1000个未加注释的图像项,用户可以通过GSI查询这些项(hashKey是我在这里所称的分区键):
hashKey | rangeKey | isImg | ...
img_0001 | img | 1 |
img_0002 | img | 1 |
...
img_1000 | img | 1 |当任何用户下载任何图像时,他们都会从这个常见的映像开始,只有在用户注释图像之后才会懒洋洋地生成“按用户标注的图像”项。
如果用户希望对图像进行注释,则需要写入“注释图像”项,该项将由userID进行分区,但在imgID上也应该有一个GSI。
例如,如果user_111注释了两个图像(img_0002和img_0042),那么user_222只注释了一个图像(img_0002):
hashKey | rangeKey | isImg | annotation | imgID |
img_0001 | img | 1 |
img_0002 | img | 1 |
...
img_1000 | img | 1 |
user_111 | img_0002 | | "foo" | img_0002 |
user_111 | img_0042 | | "bar" | img_0042 |
user_222 | img_0002 | | "baz" | img_0002 |这将使用户能够:
查询所有图像(通过第一个GSI):1000个条目-- returned
img_0042的一个项或img_0002.的两个项
添加新图像时,只需要添加一个项。只有在用户对该图像进行注释之后,您才需要为该用户创建额外的项。
https://stackoverflow.com/questions/61568970
复制相似问题