0

我来自关系数据库背景,我正在努力使用单个表的概念来表示我在 DynamoDB 中的所有数据

我的应用程序有制造商,他们允许他们的员工访问我的门户 CRM(制造商用户)。用户然后将他们自己的客户添加到系统并记录和记录他们的所有订单。

  • 获取制造商()
  • 获取制造商用户()
  • 获取制造商客户()
  • GetManufacturerCustomersOrders()

制造商永远不会看到其他制造商客户的订单。

我了解 PK 和 SK 的基础知识,我的问题是……真的吗?这真的是单桌吗?

表客户帐户

  • 制造商(Name, logo etc)
  • 制造商用户(Users of that Manufacturer that access my system i.e. email, role)
  • 制造商的客户(custID,他们所属的制造商名称)
  • 客户交易数据(很多)

鉴于上述情况,您将如何在 DynamoDB 中建模?

访问模式故事

  • 按用户查询制造商(登录名、名称) SK ManufacturerID
  • 按制造商 ID 获取所有客户 ID 和名称 按用户 ID 过滤
  • 获取按 CustomersID 和 ManufacturerID 过滤的所有订单
  • 获取按 OrdersID 和 CustomersID 过滤的所有 Ordered Items
4

1 回答 1

1

正如您所了解的,NoSQL 数据建模与 SQL/关系数据库中的数据建模完全不同。单表设计要求您对数据进行不同的思考,这可能伴随着陡峭的学习曲线。

Alex Debrie 是The DynamoDB Book 的作者,他撰写了一些关于 DynamoDB 中数据建模的最佳材料。他的书非常棒,我向任何想了解 DynamoDB 中的 NoSQL 数据建模的人推荐这本书。

在您的情况下,我会先阅读一篇关于在 DynamoDB 中建模一对多关系的文章。您还可以在 2019 年 AWS Re:Invet 会议上展示的视频中看到相同的材料。这两个资源将使您更好地了解 DynamoDB 中的单表设计。我还没有找到更好的资源来启动 DynamoDB 学习过程。

于 2021-01-27T16:14:31.670 回答