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

How to structure Dynamodb correctly to have nested or linked properties?

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

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

每当我呼叫用户时,我会检索他们所有的图片,单张图片不会被读取,并且每次用户上传图片时,我都需要为用户存储。

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

以下是使用 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. 给我所有上传的图片 b/w 或特定日期之后。

    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. 上传图片时没有比赛condition/lock

  2. 您可以决定要获取多少张图片,您将只读取您需要的图片,而不是加载所有图片然后过滤。