【发布时间】:2018-09-01 20:18:56
【问题描述】:
我在 DynamoDb 中有一个场景,其中记录具有多对多关系。
在 SQL 中,通常我会创建一个关联表来将记录分隔成一对多的关系。
例如:
- 故事可以有多个位置
- 地点有多个故事
这是一个示例记录:
{
"storyId": "asd239ruefjsp32wf",
"name": "Donut store",
"locations": [
{
"locationId": "asdas23r23",
"name": "New South Whales",
"abbreviation": "NSW"
},
{
"locationId": "sdgkhsdf98",
"name": "Queensland",
"abbreviation": "QLD"
}
]
}
这可能被分成 3 个表格:
故事
- 故事 ID
- 位置
地点
- 位置标识
StoriesLocations(使用 GSI - partitionKey = locationId)
- storyLocationId
- 故事 ID
- 位置标识
我的大问题是,用户可以使用超过 1 个 locationId 搜索故事。
GET /stories?locations=sdgkhsdf98,asdas23r23
单独使用每个 storyId 查询 StoriesLocations GSI 似乎不是一个好的解决方案,特别是如果我必须在后面获取所有故事数据并管理分页。
目前只有 1 个国家,有 7 个地点。所以只会搜索少数几个位置。
有没有更有效的数据存储方式?甚至查询它?
我之所以选择 DynamoDB,是因为它的启动速度很快,而且我通常会进行前端开发。所以建立一个我没有太多经验的SQL数据库。我还将使用 Appsync 的实时聊天状态器,它默认使用 DynamoDB。
【问题讨论】:
标签: nosql amazon-dynamodb