Amazon dynamodb 需要建议:按照官方文件所述,将DynamoDB构建为新模型

Amazon dynamodb 需要建议:按照官方文件所述,将DynamoDB构建为新模型,amazon-dynamodb,Amazon Dynamodb,目前,我的数据库有3个集合。基本上,我的数据结构如下所示 xx: { yy: { zz: { } } } 其中,“xx”、“yy”、“zz”是独立的集合。我用键映射了xx>yy>>zz xx: { KEY: "123" } YY: { xx_Key : "123", KEY : "456" } zz: { yy_key: "456", KEY: "789" } 1,问题是如何将这3个

目前,我的数据库有3个集合。基本上,我的数据结构如下所示

xx: { 
   yy: { 
      zz: {
      }
   }
}
其中,“xx”、“yy”、“zz”是独立的集合。我用键映射了xx>yy>>zz

xx: { 
     KEY: "123"
}

YY: { 
      xx_Key : "123",
      KEY : "456"
}

zz: { 
      yy_key: "456",
      KEY: "789"
}

1,问题是如何将这3个表合并成一个表,但需要对每个“xx”、“yy”、“zz”执行每个操作。因为dynamoDB只允许顶级GSI。那么,我如何对这些设备进行CRUD操作?


2,另一种方法是将数据存储为“一对一”
。因此,我可以在顶级域中获得XX,YY,ZZ,但它会增加数据冗余吗?基本上改变的数据是

Entry1: { 
  XX: "123",
  YY:"456",
  ZZ: "789"
}

Entry2: { 
  XX: "123",
  YY:"456",
  ZZ: "790" //Change in value here. But same xx & yy repeated.
}
那么基本上我该怎么做呢

另一种方法是,将数据存储为“一对一”。所以我可以在顶级域中得到XX,YY,ZZ,但它会增加数据冗余吗

是的,它将增加数据冗余,这将增加存储成本,但这不应成为主要问题,除非复制的数据与文档大小相比非常重要

使用NoSQL进行规范化的概念应该谨慎处理,因为连接大多不受支持,从而导致查询延迟增加

我发现这在设计DynamoDB表结构时很有用。这里引用博客的要点(实际上是博客的结论):

没有一个一刀切的指导方针来决定一个项目 正常化战略。如果您正在迁移,这一点尤其正确 来自关系数据库的应用程序。许多假设 您所做的关系模式设计不适用于NoSQL 像DynamoDB这样的数据库

最后,您选择的模式主要取决于访问权限 应用程序的模式和数据项的大小


我可以知道取消勾选答案的原因吗?有什么遗漏或不正确的吗?