我正在努力理解如何正确地设计DynamoDB模式。我读过几篇文章,看过一些YouTube视频,但老实说,我还不太舒服。
这就是我试图正确设计的:
访问模式:
我读过邻接列表,因为会有n-m关系,所以我决定试一试。
这就是我想出来的:
# | PK (GSI1-SK) | SK (GSI1-PK) | DATA
==|======================|====================|==============
1 | LOCATION#locationId1 | A | locationName1
2 | LOCATION#locationId2 | A | locationName2
3 | LOCATION#locationId1 | VEHICLE#vehicleId1 |
4 | LOCATION#locationId1 | VEHICLE#vehicleId2 |
5 | LOCATION#locationId2 | VEHICLE#vehicleId3 |
6 | VEHICLE#vehicleId1 | A | vehicleName1
7 | VEHICLE#vehicleId2 | A | vehicleName2
8 | VEHICLE#vehicleId3 | A | vehicleName3#1-2和#6-8是我的实体记录,那些有实体本身的额外数据的记录(例如它的名称)。
#3-5是我如何设计一段关系的一个例子。我增加了一个倒置的GSI,以便能够以两种方式进行搜索。
回到我的访问模式:
邻接列表看起来是设计复杂关系的一种很好而干净的方法,但要么我做错了什么(可能),要么它们带来了大量的查询,这些查询是查找事物所必需的。
如有任何建议,敬请见谅。
发布于 2021-08-13 03:19:28
我在DynamoDB工作台中对此进行建模:
为了:
从GS1 PK1="ALL#LOCATION“中选择*
从PK="ALL#VEHICLE“的主索引中选择*
从GSI1 PK1="LOC#ID“中选择*
这里有几件事:
https://stackoverflow.com/questions/68718651
复制相似问题