我的用例显示项目的列表视图和每个项目的详细信息视图,并提供更多信息。列表中项目显示所需的数据最大为2KB,其他项目详细信息在2KB到20KB的范围内变化。目前,所有与项目相关的数据都存储在一个条目中。将其拆分为具有一对一关系的单独表是否是明智的优化?除了我必须立即更新到表并使用TransactWrite来保持连接一致之外,还有什么缺点吗?
将具有1:1关系的记录拆分为单独的表是DynamoDB的反模式。正如AWS所说:
(1(模式灵活性允许DynamoDB将复杂的分层数据存储在单个项中。(2( 复合键设计使它能够将相关项目紧密地存储在同一张表上。
如果您的查询模式包括对与摘要信息分开的项目重的详细记录的请求,则将摘要和详细记录分离到一个表中可能会使您受益。
PK | SK | 注意 |
---|---|---|
第1项ID | 摘要 | |
第1项ID | ||
第2项ID | 摘要 | |
第2项ID | ||
Item2 ID | 详细信息#历史记录#2021-11-16T13:00:00 | 添加项目历史记录的选项