我对DynamoDB还是很陌生。所以我对此有很多疑问。
我建立了如下的模型关系
表关系
Users
有很多项目表模型
用户表
+-------------+------------+
| UserID (PK) | Attributes |
+-------------+------------+
| U_01 | ... |
+-------------+------------+
| U_02 | ... |
+-------------+------------+
| U_03 | ... |
+-------------+------------+
项目表
+-----------+------------+
| ProjectId | Attributes |
+-----------+------------+
| PJ_01 | ... |
+-----------+------------+
| PJ_02 | ... |
+-----------+------------+
| PJ_03 | ... |
+-----------+------------+
UserProject表
+-------------+----------------+------------+
| UserID (PK) | ProjectID (SK) | Attributes |
+-------------+----------------+------------+
| U_01 | PJ_01 | ... |
+-------------+----------------+------------+
| U_02 | PJ_02 | ... |
+-------------+----------------+------------+
| U_03 | PJ_01 | ... |
+-------------+----------------+------------+
套房表
+------------------+----------------+------------+
| SuiteId (SK) | ProjectId (PK) | Attributes |
+------------------+----------------+------------+
| S_01 | PJ_01 | ... |
+------------------+----------------+------------+
| S_02 | PJ_02 | ... |
+------------------+----------------+------------+
| S_03 | PJ_01 | ... |
+------------------+----------------+------------+
案例表
+-----------------+------------------+------------+
| CaseId (PK) | SuiteId (SK) | Attributes |
+-----------------+------------------+------------+
| C_01 | S_01 | ... |
+-----------------+------------------+------------+
| C_02 | S_01 | ... |
+-----------------+------------------+------------+
| C_03 | S_01 | ... |
+-----------------+------------------+------------+
为了更新或删除测试用例(例如:C_01),我必须确保用户不得删除非自有项目(例如:U_02将不允许删除C_01)。顺便说一句,我通过身份验证后从令牌中获得了用户ID
我已经设计了如下所示的API端点来更新或删除数据。您能告诉我您在这种情况下的最佳做法吗?非常感谢。
更新:/ cases /:id
删除:/ cases /:id
(我没有像/ projects /:prjId / suites /:sId / case /:cId这样的东西作为Microsoft创建API的最佳实践建议)
答案 0 :(得分:0)
几天后,我重新考虑了使用关系模型表的方式。
对于DynamoDB,我们有2个定义来解析RDS。 -全球二级指数(GSI) -Adjacency List
我发现"AWS re:Invent 2018: Amazon DynamoDB Deep Dive: Advanced Design Patterns for DynamoDB"视频。疯了。
他们建议我们使用1 table for 1 application
,Hierarchical Data Structure as Items
,pair partition key and sort key to query
和GSI
。
但是直到@Rick Houlihan give me an answer为止,我仍然不清楚。