我正在尝试在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控制台中设计架构,以便它支持查询以检索具有最新版本的页面?谢谢!
答案 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"