如何从DynamoDb AWS控制台的表中获取最大元素?

时间:2015-03-13 13:11:29

标签: json amazon-web-services amazon-dynamodb nosql

我正在尝试在NoSQL中创建一个数据库表,以便能够在其中一列中检索具有最大值的元素。

假设SQL模式如下所示:

Table_Page

PageId:int(10) - PK

名称:varbinary(255)

RevisionId:int(10) - FK

Table_Revision

RevisionId:int(10) - PK

Text:varbinary(255)

Rev_TimeStamp:binary(14)

如何我可以在 Amazon DynamoDB控制台中设计架构,以便它支持查询以检索具有最新版本的页面?谢谢!

1 个答案:

答案 0 :(得分:1)

我认为您想要执行的查询是,在给定page_id的情况下,查找具有最大时间戳的该页面的修订版。 (而不是找到最大时间戳的修订版,无论page_id如何)

您可以在DynamoDB中设计您的表格,如下所示:

Table_Page_Revision
HashKey: PageId
RangeKey: Rev_TimeStamp
Attrubute 1: RevisionId
Attribute 2: Text

然后另一个表只是为了存储页面的名称:

Table_Page_Name
HashKey: PageId
Attribute: Name

要进行查询,可以使用此伪代码:

Table_Page_Revision.query(HashKey="Your Page Id", ScanIndexForward=False, Limit=1)

我们设置"向前扫描"参数为false,表示它将从具有大范围键的项开始到较小范围键(DESC)。我们还将限制设置为1,这意味着我们只对返回1个项目感兴趣。结合在一起,这为您提供了最大的" Rev_TimeStamp"