在 DynamoDB 中使用全局二级索引进行具体化聚合查询
对于希望快速做出决策的企业来说,对快速更改的数据维持近实时聚合和键指标正变得越来越重要。例如,音乐库可能需要近实时展示下载量最多的歌曲。
考虑下面音乐库表布局:
此示例的表存储歌曲,songID
作为分区键。可以在此表启用 Amazon DynamoDB Streams,将 Lambda 函数附加到这些流,每次下载歌曲时,将一个具有 Partition-Key=SongID
和 Sort-Key=DownloadID
的条目添加到表。进行这些更新时,将在 DynamoDB Streams 中触发 Lambda 函数。Lambda 函数可按 songID
聚合并分组下载,更新顶级项目 Partition-Key=songID
和 Sort-Key=Month
。请记住,如果写入新的聚合值后 Lambda 执行失败,可以多次重复和聚合值,获得一个近似值。
要近实时读取更新,并且延迟在毫秒级,请对全局二级索引使用查询条件 Month=2018-01
、ScanIndexForward=False
、Limit=1
。
这里用到的另一个关键优化是,全局二级索引是稀疏索引,只能用于需要查询以实时检索数据的项目。全局二级索引可以服务其他工作流,例如需要最受欢迎的前 10 首歌曲,或者该月内下载的任何歌曲的信息。