Database DynamoDB表设计:一个属性与嵌套的json或多个属性

Database DynamoDB表设计:一个属性与嵌套的json或多个属性,database,nosql,amazon-dynamodb,Database,Nosql,Amazon Dynamodb,在阅读AWS dynamoDB文档时,我发现它不建议创建多个表。但是,当我们将json格式的数据放在DynamoDB表中时,应该创建一个具有多个级别(如10)的嵌套json内容的属性,还是创建具有较少级别的多个属性?我想是逐案的。但我想知道的是设计dynamoDB表时的一般规则。在阅读了AWS文档之后,我仍然感到困惑,所以我在这里发帖提问。谢谢 虽然没有任何标准规则,但我认为作为指导方针的最佳方法是审查 DynamoDB功能(键、索引) 极限 定价模型 在设计桌子之前。在您的案例中,拥有属性

在阅读AWS dynamoDB文档时,我发现它不建议创建多个表。但是,当我们将json格式的数据放在DynamoDB表中时,应该创建一个具有多个级别(如10)的嵌套json内容的属性,还是创建具有较少级别的多个属性?我想是逐案的。但我想知道的是设计dynamoDB表时的一般规则。在阅读了AWS文档之后,我仍然感到困惑,所以我在这里发帖提问。谢谢

虽然没有任何标准规则,但我认为作为指导方针的最佳方法是审查

  • DynamoDB功能(键、索引)
  • 极限
  • 定价模型
在设计桌子之前。在您的案例中,拥有属性的权衡是:

  • 为高效查询建立索引的可能性(避免扫描的性能更好,IOPS利用率低,从而降低成本)
  • 仅投影所需的属性
  • 但是限制了建模的灵活性
另一方面,嵌套JSON属性允许:

  • 更多的属性和结构上的灵活性
  • 更倾向于文档结构从键值性质转移
  • 但限制了深层嵌套属性的高效查询
  • IOPS成本更高,因为即使读取嵌套属性也需要检索整个嵌套属性(这也会增加成本)
由于也可以在一个表中包含键、基本属性和嵌套属性,因此最好将它们结合使用,逐案使用,而不是只使用一个模型