【问题标题】:Amazon DynamoDB Notification SystemAmazon DynamoDB 通知系统
【发布时间】:2023-03-22 07:50:01
【问题描述】:

我来自强大的关系数据库背景,在理解 DynamoDB 中的哈希和范围以及二级索引时遇到了困难。

我希望为用户存储通知。

在 SQL 中,列是:

  • 通知 ID (PK)
  • 用户 ID (FK)
  • 留言
  • 创建日期
  • 查看日期

我需要帮助设置正确的哈希和范围键,以便在以下任务中正常工作

  • 查询或扫描以查找用户 ID 列表的最新通知。该列表将由当前实际登录的用户决定。相当于 SQL 中的“WHERE userID IN (1,2,3)”
  • 获取 dateViewed = '1/1/1900' 的通知计数
  • 更新具体通知
  • 获取特定用户的所有通知

感谢任何有关正确构建此表的帮助

【问题讨论】:

    标签: amazon-dynamodb


    【解决方案1】:

    有很多方法可以对此建模 - 这是您可能需要考虑的一种选择:

    1. 使用哈希主键 (notificationId - uuid) 和您在项目中描述的其他字段创建一个表(称为通知)。

    现在,您可以使用 UpdateItem API 更新基表中的项目。见:Java SDK层:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/JavaSDKHighLevel.html

    2.使用以下架构在通知表上创建全局二级索引 (GSI): - 哈希 (userId) + 范围 (notificationId) - 这允许您在二级索引上发出查询 API“获取此用户的所有通知”,您也可以按时间戳过滤。请参阅此处的示例:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html。 - 对于跨用户 ID 列表查找最新通知:您可以作为 DynamoDB 并行(在不同线程中)发出多个查询 API 调用。

    数据模型有多种变体(例如使用哈希 (userId) 和范围(时间戳)创建另一个 GSI - 以根据给定用户的时间戳有效地对通知进行排序)。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      相关资源
      最近更新 更多