AWS DynamoDB表,用于按日期顺序检索视频/照片内容

时间:2019-01-25 20:10:50

标签: amazon-web-services nosql amazon-dynamodb data-modeling

我将为类似Instagram的视频/照片共享应用程序创建一个DynamoDB表。该表的目的是按日期顺序提供所有用户帖子的网格视图。我们都知道用例:)

很明显,GUID(用于视频或照片)将是我的主键。我将拥有一个看起来像这样(部分)JSON的结构,用于初始加载表:

{
    "VideoCatalog": [
        {
            "PutRequest": {
                "Item": {
                    "Guid": "67459e53-21bb-4a7d-8f7a-18e4cd165c44",
                    "Timestamp": "20160314",
                    "ThumbnailName": "20160314-TheWind_tumb.0000000.jpg",
                    "Title": "The Wind"
                }
            }
        },
        ...
}

可能并不重要,但是GUID对应于一个S3文件夹,其中包含各种视频“资产”,包括用于自适应多比特率视频点播流的各种格式。我将使用AWS JavaScript SDK访问表等。

我不确定的是我是否要指定timestamp作为排序键,以帮助按日期顺序(最近一次优先)返回结果(最终通过延迟加载/分页)。

在阅读中,我已经完成了排序键(例如here)的使用,我不确定这是否是它们的预期功能。

如DynamoDB指南所述:

  

在具有分区键和排序键的表中,两个项目可能具有相同的分区键值。

那绝对不是我的数据的用例。

关于从DynamoDB表中按日期顺序检索项目的任何建议吗?

1 个答案:

答案 0 :(得分:1)

如果guid是您的主键,那么将日期作为辅助键是没有意义的,因为在我对您的用例的理解中,只能有一个资源。

但是,这就是我设计解决您的用例的方案的方式。

| userId (PK) |  Timestamp (sortKey) | resourceid         |
| 123         |   12343212           |  guid1             |
| 123         |   12343215           |  guid2             |