DyanmoDB主键设计:最频繁的操作之一是"list items by time order",我应该使用时间戳吗?



编辑:提醒@notionquest评论说,DynamoDB的主键是哈希键,所以我下面描述的想法行不通;但我仍然想讨论如何在DynamoDB架构设计期间实现这种"按时间排序"功能

在这里,我发现 AWS 使用 DynamoDB 为其论坛提供服务,请参阅 AWS DynamoDB 示例。AWS 论坛如何按时间顺序显示话题?

我有一个 DynamoDB 表Tweet Items,我的 Web 应用程序的登录页面是按历史记录顺序显示推文项目(注意:"推文"是我自己的 Web 应用的数据,而不是来自 Twitter.com 的推文 - 我在这里使用推文来足够清楚地描述这个问题的情况)

显然,对我的 DynamoDB 最常见的查询(每个用户的主页都需要此查询)是列出存储在我的Tweet Items表中的所有推文。

具有以下表结构很诱人

| primary  Key             | Attribute  |
| Timestamp                | text-content|
-------------------------------------------
| "2017-03-05-12:30:30"    | "some string"|

但我也听说将时间戳作为哈希键通常是一种反模式。

对于我的用例,使用时间戳作为主键是否明智?如果没有,我该怎么办?

您可以使用timestamp作为sort键而不是哈希键,这似乎很简单。 您将需要其他东西作为哈希键,即"推文"ID(如果有的话)。 如果您没有 id,则可以使用生成的值。

然后,您可以使用 ScanIndexForward 来控制时间戳是按升序还是降序返回。

最新更新