使用全局二级索引进行具体化聚合查询 - Amazon DynamoDB

使用全局二级索引进行具体化聚合查询

对于希望快速做出决策的企业来说,对快速更改的数据维持近实时聚合和键指标正变得越来越重要。例如,音乐库可能需要近实时展示下载量最多的歌曲。

考虑下面音乐库表布局:


      音乐库表布局示例。

此示例的表存储歌曲,songID 作为分区键。可以在此表启用 Amazon DynamoDB Streams,将 Lambda 函数附加到这些流,每次下载歌曲时,将一个具有 Partition-Key=SongIDSort-Key=DownloadID 的条目添加到表。进行这些更新时,将在 DynamoDB Streams 中触发 Lambda 函数。Lambda 函数可按 songID 聚合并分组下载,更新顶级项目 Partition-Key=songIDSort-Key=Month。请记住,如果写入新的聚合值后 Lambda 执行失败,可以多次重复和聚合值,获得一个近似值。

要近实时读取更新,并且延迟在毫秒级,请对全局二级索引使用查询条件 Month=2018-01ScanIndexForward=FalseLimit=1

这里用到的另一个关键优化是,全局二级索引是稀疏索引,只能用于需要查询以实时检索数据的项目。全局二级索引可以服务其他工作流,例如需要最受欢迎的前 10 首歌曲,或者该月内下载的任何歌曲的信息。