【发布时间】:2019-02-27 01:34:21
【问题描述】:
我目前面临一些关于我的数据库设计的问题。目前我正在开发一个允许用户执行以下操作的 api:
- 创建一个帐户(1 个用户拥有 1 个帐户)
- 创建个人资料(1 个帐户拥有 1-n 个个人资料)
- 让配置文件上传 2 种类型的项目(1 个配置文件拥有 0-n 个项目;这些项目的类型和用途不同)
调用 API 方法会触发 AWS Lambda 在 DynamoDB 表中执行请求的操作。
我目前的计划是这样的:
应该可以通过指定时间范围和配置文件 ID 来查询项目。但我认为我的设计完全违背了 DynamoDB 的目的。 AWS 文档说,一个设计良好的产品只需要一个表。
- 在一个表中实现此架构的好方法是什么?
- 使用当前设计有什么缺点吗?
- 在当前设计和单表方法中,您会指定什么作为主/分区/排序键/辅助索引?
【问题讨论】:
-
为了想出一个好的设计,考虑你的访问模式很重要。您需要执行哪些类型的查询/检索?
-
"Most well designed applications require only one table" 是正确的,但它隐含地假设该用例适用于 DynamoDB。当这种情况发生故障时,有时表明该应用程序不适合 DynamoDB。
标签: amazon-web-services database-design amazon-dynamodb