如何正确构造Dynamodb具有嵌套或链接的属性?

时间:2019-05-31 14:51:23

标签: database nosql amazon-dynamodb dynamodb-queries

我开始使用Dynamodb,并试图找出构造以下内容的正确方法:

我有一个用户,每个用户可以有多张图片(s3链接和一些元数据),数量不受限制。

每当我要一个用户时,我都将检索他们的所有图片,而不会在单个图片上读取任何内容,并且每次用户上传图片时,我都需要为该用户存储它。

在Mongodb中,我将创建一个名为pictures的数组,其中包含每个图片数据的对象。这也是Dynamodb中正确的方法吗?

1 个答案:

答案 0 :(得分:0)

这是使用dynamodb的方法

| pk    |   sk     |
| user1 |  metadata | age:24 | name: Jon| ...
| user1 | picture#1234#id1 | url:abc.com/xyz.jpeg | ... some other metadata
| user1 | picture#2456#id2 | url:abc.com/xyz.jpeg | ... some other metadata
| user1 | picture#4567#id3 | url:abc.com/xyz.jpeg | ... some other metadata

其中1234、2456可能代表上传图片的时间。 现在,您可以进行

之类的查询
  1. 按时间顺序给我所有照片。

    Select * from table where pk=user1 and sk starts with picture#

  2. 让我黑白所有或在特定日期之后上传的所有图片。

    Select * from table where pk=user1 and sk starts with picture# and sk>picture#1234

  3. 获取我的用户详细信息

    Select from table where pk=user1 and sk=metadata

这将确保几件事

  1. 上传图片时没有比赛条件/锁定

  2. 您可以确定要获取的图像数量,并且仅读取所需内容,而不是全部加载然后进行过滤。