【问题标题】:Best design pattern for modeling leaderboard of counts in DynamoDB在 DynamoDB 中建模计数排行榜的最佳设计模式
【发布时间】:2022-01-09 11:01:35
【问题描述】:

我正在尝试统计房间内的人数。目前,人们可以加入和离开房间(多对多)的关系。我目前正在通过 GSI 的双向roomId <-> userId PK/SK 交换对此进行建模。所以我可以查出谁在房间里,以及用户在哪个房间里。

但是,我还想知道按人口计算的前 N ​​个房间。为此,我可以在用户进入时增加每个房间的计数,并在他们离开时减少(比如在另一个表中),但随后我必须进行额外的写入。我觉得保持同步也可能存在问题,也许 DynamoDB 流可以处理同步问题。

想到更好的方法?

例如

PK SK
user1 room1
user1 room2
user2 room2
user3 room2

topRooms(n) = {room1: 1, room2: 3}

【问题讨论】:

    标签: database-design nosql amazon-dynamodb amazon-dynamodb-streams


    【解决方案1】:

    如何使用物化聚合查询来执行此操作? https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-gsi-aggregation.html

    所以基本上你要做的就是使用流并为其附加一个 lambda 函数。

    每当有人加入或离开房间时,都会将其写入数据库,数据库会触发 lambda 函数并进行聚合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-27
      • 2019-03-10
      • 2022-01-21
      • 2013-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-24
      相关资源
      最近更新 更多