我将为类似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表中按日期顺序检索项目的任何建议吗?
答案 0 :(得分:1)
如果guid是您的主键,那么将日期作为辅助键是没有意义的,因为在我对您的用例的理解中,只能有一个资源。
但是,这就是我设计解决您的用例的方案的方式。
| userId (PK) | Timestamp (sortKey) | resourceid |
| 123 | 12343212 | guid1 |
| 123 | 12343215 | guid2 |