DynamoDB:获取特定哈希键和辅助字段的最新观测值



我有一个表,我在一组网页上存储了多个随时间变化的社交媒体帖子。表列是page_id、post_id和obs_date[加上我感兴趣的数据]。我想查询这个表的最新观察每个 post_id的给定 page_id。在SQL中,这是类似于

SELECT * FROM my_table 
JOIN 
(SELECT max(obs_date) AS obs_date, post_id FROM my_table 
  WHERE page_id='12345' GROUP BY post_id) AS t 
ON t.obs_date=my_table.obs_date AND t.post_id=my_table.post_id

我已经看到了在这样的问题中获取哈希键的最新项的食谱,但在这里我想知道是否有可能进一步采取这一步并获得给定哈希键的最新项,然后为另一个属性中的每个"GROUP BY"。我将如何设置我的表和键来做到这一点?我可以使用本地或全局二级索引吗?

这可以通过Local secondary Index

实现

首先你的主表看起来像

   page_id - hash
   post_id - range 
   other attributes

则可以创建具有

的LSI
   page_id - hash
   date_time - Range
   other attributes you need

现在,当您根据给定的page_id查询LSI时,您将根据日期升序/降序获得所有数据(scanIndexForward -false将降序给出)。

文档中也有类似的例子:

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LSI.html

希望这对你有帮助

谢谢