amazon-web-services - 如何在单个 DynamoDB 表中连接 3 个实体?
问题描述
我有一个简单的关系模型,我想使用单表设计在 DyanamoDB 中创建它。该模型适用于餐厅评论应用程序:
实体是:
- 用户 => 用户有一对多评论
- 评论 => 餐厅有一对多评论
- 餐厅 => 评论有一个`用户
用户有一个email
和displayName
访问模式:
- 列出单个用户的所有评论
- 列出餐厅的评论
displayName
使用创建评论的用户查找餐厅的所有评论。
我正在努力解决 3:使用displayName
创建评论的用户查找餐厅的所有评论。
我可以存储displayName
评论项目,但如果我的用户更新displayName
我需要使用此显示名称更新所有评论。
我正在努力解决如何连接restaurant
review
和user
在单个查询中。我得到的最接近的是:
Hash Key | Range Key | Data
----------------------------------------------------------------
user 1 | review1 | restaurant1
| review2 | restaurant3
| review23 | restaurant4
| profile | Kate Smith | ksmith@gmail.com
user 2 | review5 | restaurant1
| review6 | restaurant2
| review7 | restaurant4
| profile | John Smith | jsmith@gmail.com
restaurant1 | address#street#areaCode |
restaurant2 | address#street#areaCode |
我可以使用具有上述设计但不是 3 的 GSI 来满足模式 1 和 2。我还尝试翻转设计,以便评论与餐馆相关,但仍然无法满足模式 3。
在单个查询中,我正在尝试使用单个表设计来实现吗?即使我可以在两个可行的查询中做到这一点。
非常感谢这里的任何建议!
解决方案
推荐阅读
- mongodb - 如何检查对象在 MongoDB 的其他文档中
- python - 子进程不写输出文件
- symfony - 是否可以在 JMS 中创建组依赖项
- node.js - API-Gateway 背后的 Socket.io
- python - Yellowbrick learningCurve:chage legend
- flutter - 构建器在 Flutter 上更新 ChangeNotifierProxyProvider
- javascript - Leaflet bindPopup 坐标
- javascript - 当我的 python 脚本在服务器上运行时,如何访问我的本地网络摄像头?(实时人脸识别)
- amazon-web-services - 使用 Apache Kafka 代替 SQS
- android - 垂直方向的 Recyclerview 在屏幕的水平滚动上上下滚动