Amazon dynamodb DynamoDB全局索引重载与稀疏索引

Amazon dynamodb DynamoDB全局索引重载与稀疏索引,amazon-dynamodb,amazon-dynamodb-index,Amazon Dynamodb,Amazon Dynamodb Index,我们正在设计一个将DynamoDB用作存储系统的应用程序 我们确定了不同的访问模式,在查看了全局二级索引文档之后,我们决定使用哪种方法:索引重载还是使用2个稀疏索引 为了提供更多的上下文,我们的应用程序存储订单,我们可以有内部订单或外部订单。基于此,它们将链接到客户或仓库: 由于我们希望按客户和/或仓库进行搜索,我们考虑了两种解决方案 第一种解决方案是,保持上述数据结构,在以下位置创建2个索引: GSI1-客户(主键) GSI2-仓库(PK) 第二种解决方案是重载另一列,如: 因此,只需

我们正在设计一个将DynamoDB用作存储系统的应用程序

我们确定了不同的访问模式,在查看了全局二级索引文档之后,我们决定使用哪种方法:索引重载还是使用2个稀疏索引

为了提供更多的上下文,我们的应用程序存储订单,我们可以有内部订单或外部订单。基于此,它们将链接到客户或仓库:

由于我们希望按客户和/或仓库进行搜索,我们考虑了两种解决方案

第一种解决方案是,保持上述数据结构,在以下位置创建2个索引:

  • GSI1-客户(主键)
  • GSI2-仓库(PK)
第二种解决方案是重载另一列,如:

因此,只需要1个索引:Destination(PK),queryed应用前缀


问题是:“索引重载比拥有两个不同的稀疏全局二级索引有什么好处?”(在容量调配、数据传输、查询时间、数据复杂性等方面节约成本…

由于我还没有得到任何答案,我将补充我的观点

在这两种情况下,这两种方法之间没有太大的区别,所有项目最终都将被索引并存储类似的属性


我能找到的一些好处是:

使用2个GSI的好处

  • 数据模式更容易理解(无重载)
  • 更灵活地演化模式:如果需求发生变化,可以将订单分配给客户和仓库
  • 调整更好预测的能力(可能并不总是适用,但您可能只需要2个字段用于客户访问模式,3个字段用于仓库)
  • 索引越小,性能越好
  • 使用1个GSI的好处

  • 无需担心容量单位,它们可以类似于主表。当使用两个索引时,您需要知道每个索引下的记录数量估计值,否则您需要过度配置它们

    示例:如果将主表中的50%RCU和WCU设置为每个索引,但有70%的订单是为客户提供的,则某些请求将被阻止


  • 总之,即使使用2个索引也可以获得更精确的配置,但最终可能会有更高的成本,并且需要不时检查索引配置以调整其访问模式使用情况。

    从您的回答开始已经一年多了,我也处于类似的情况,您能分享一下您的想法吗,您最终得到了什么?任何您可以与他人分享的问题或反馈,谢谢