【问题标题】:NoSQL database design using single table使用单表的 NoSQL 数据库设计
【发布时间】:2019-01-03 12:30:53
【问题描述】:

您对“您应该在 DynamoDB 应用程序中维护尽可能少的表。大多数设计良好的应用程序只需要一个表。”这句话的满意度如何?

我已经列出了 NoSQL 设计的用例,但将自己限制在单个表设计中会使设计变得复杂,并且要求每个使用 NoSQL 表的开发人员都了解遵循分区和性能提升原则的逻辑复杂性。只是为了写一些我的应用程序做以下事情:

  1. 在移动设备上注册用户帐户。
  2. 允许多个用户在任何安装了应用程序的移动设备上检查他们的帐户。
  3. 记录用户活动,每个用户一天内可以进行 10 到 1000 次活动。
  4. 有一个批处理作业会定期检查是否有任何用户帐户获得更新,然后它将通知发送到所有用户已登录的设备(作为上次登录设备的用户)。
  5. 当然,这些 FCM 通知是基于用户对通知的偏好。
  6. 最后,用户帐户与唯一的电子邮件地址相关联,用户可以从任何设备更新其帐户的所有其他属性。

我发现批处理作业定期扫描整个表,迫使我创建第二个表,以便我可以生成尽可能多的线程来处理行。

我怎样才能让这一切都放在一张桌子上?

【问题讨论】:

    标签: nosql amazon-dynamodb partitioning


    【解决方案1】:

    所以这都是 Rick Houlihan 的错。他是 AWS 的首席工程师,专注于 DynamoDB。

    所以开场白说大多数设计良好的应用程序只需要一个表,但缺少的是关于如何构建表才能有效的设计指南。

    对于您示例中的单表设计,您需要每个设备一个分区和每个用户一个分区,您也可以为每个设备或每个用户编写相关信息。您可以在单个表中混合和匹配所有这些。您将使用全局二级索引来检索相关数据,但该索引设计将取决于您的访问模式。

    从本质上讲,为单个表设计建模数据的方式与 RDBMS 完全不同,因此您需要将您所知道的一切抛在脑后,然后重新学习。

    我推荐阅读这些博文

    并多次观看 Rick 的 reInvent 会议...通常在灯泡开始熄灭的第 10 次左右...

    Rick 的 DynamoDB 高级设计模式讲座 - https://www.youtube.com/watch?v=6yqfmXiZTlM

    它有相当多的深度。祝你好运!

    【讨论】:

      猜你喜欢
      • 2012-12-08
      • 1970-01-01
      • 2020-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-23
      • 2022-11-14
      相关资源
      最近更新 更多