DynamoDB表设计:具有嵌套json的一个属性或多个属性

时间:2019-05-11 04:21:41

标签: database nosql amazon-dynamodb

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

1 个答案:

答案 0 :(得分:0)

尽管没有任何标准规则,但我认为作为指导原则的最佳方法是审查;

  • DynamoDB功能(键,索引)
  • 限制
  • 定价模型

在设计表格之前。在您的情况下,具有属性的权衡在于;

  • 可以为高效查询建立索引(更好的性能避免扫描,IOPS利用率低,从而降低了成本)。
  • 仅投影必需的属性。
  • 但是限制了建模的灵活性。

另一方面,嵌套的JSON属性允许;

  • 更多属性和灵活的结构。
  • 从键值本质转变为文档结构的更多方式。
  • 但是限制了对深层嵌套属性的有效查询。
  • 就IOPS而言,成本更高,因为甚至需要读取整个嵌套属性才能读取嵌套属性(这也会增加成本)。

由于还可以在一个表中包含键,基元属性和嵌套属性,因此最好将它们结合使用,视具体情况而定,而不是只使用一种模型。