【发布时间】:2021-09-26 07:15:05
【问题描述】:
我有一个旧应用程序,我正在对其进行现代化改造并引入 AWS。我将使用 DynamoDB 作为数据库,并希望采用单表设计。这是一个多租户应用程序。
应用程序将包括组织、网点、客户和交易。 一切都源于一个组织,一个组织可以有多个网点,网点可以有多个客户,客户可以有多个交易。
访问模式预计如下:
- 按 ID 获取客户
- 按姓名或电子邮件搜索客户
- 获取指定网点的所有客户
- 获取客户的所有交易
- 获取网点的所有交易
- 获取指定时间段内某个网点的所有交易(时间戳将随每笔交易一起存储)
- 获取给定组织的所有网点
- 通过 ID 获取插座
我一直在阅读单表设计并利用主键和排序键来启用这种访问,但现在我无法完全弄清楚表/模式设计。 客户将附上 outletID 和 OrganiastionID,所以我应该始终知道这些 ID
数据结构(可修改)
组织:
- 身份证
- 姓名
- 所有者
- 奥特莱斯列表
- createdAt(时间戳)
分店:
- 组织 ID
- 分店名称
- 客户数量
- 交易数量
- createdAt(时间戳)
客户:
- 身份证
- 组织 ID
- 出口 ID
- 名字
- 姓氏
- 电子邮件
- 总交易量
- 总花费
- createdAt(时间戳)
交易:
- 身份证
- 客户 ID
- 组织 ID
- 出口 ID
- createdAt(时间戳)
- 类型
- 价值
【问题讨论】:
-
在我看来,您的所有数据和数据访问模式至少需要 2 或 3 个表。为什么您觉得有必要将所有内容都限制在一个表中?
标签: amazon-dynamodb