我正在尝试从标准 RDBMS 背景中学习正确的 DynamoDB 建模。
我试图非规范化的关系数据库如下:
双因素细节
- 标识 (pk)
- 地位
- 电话号码 ID (fk)
电话号码
- 标识 (pk)
- 电话号码
- 类型
- 授权尝试
日志
- 标识 (pk)
- TwoFactorDetailId (fk)
- 事件类型
- 创建时间
我的单表架构如下:
https://i.stack.imgur.com/8p3WY.png
如您所见,许多TwoFactorDetail实体可以使用相同的PhoneNumber 。
考虑这两种读/写模式:
- 读取TwoFactorDetail元数据,包括电话号码、电话号码类型和 TwoFactorDetail.Id 尝试
- 通过电话号码更新PhoneNumber尝试
正如您在模型中看到的那样,我使用一种已知方法来满足读取模式,其中链接到TwoFactorDetail的PhoneNumber实体成为该分区中的一个项目。这意味着我可以使用以下条件读取特定TwoFactorDetail.Id的所有详细信息,只需往返一次到数据库: PK = "DET#12345" AND (SK = "DET" OR SK Begins with "PHO")
现在我的问题是如何使PhoneNumber元数据在分区之间保持一致。
IE。因为电话号码可以在许多两个因素详细信息实体之间共享,并且我想在每个分区中复制这些数据以方便阅读,所以我不确定如何以智能方式更新与电话号码匹配的所有项目,以便我使用 less请求的数量。