Database design 双向查询关系-dynamodb

Database design 双向查询关系-dynamodb,database-design,amazon-dynamodb,adjacency-list,Database Design,Amazon Dynamodb,Adjacency List,我在dynamodb中建模m:n关系时遇到了一个问题。我研究了文档,发现了一个使用邻接列表模式的示例,该模式与我的案例非常相似: 现在问题来了:我的应用程序最常见的一个查询是“给我所有与特定账单id相关的发票” 我如何才能做到这一点,而不必首先查询所有发票ID(通过反向索引),然后通过其ID分别获取所有发票?如果您还没有遇到它,请提供有关如何实现此模式的更多详细信息,并使下面的答案更易于理解 基本上,您只需使用您的BillId作为分区键来执行GSI查询。然后,对于找到的每个项目,范围键为您提供

我在dynamodb中建模m:n关系时遇到了一个问题。我研究了文档,发现了一个使用邻接列表模式的示例,该模式与我的案例非常相似:

现在问题来了:我的应用程序最常见的一个查询是“给我所有与特定账单id相关的发票”


我如何才能做到这一点,而不必首先查询所有发票ID(通过反向索引),然后通过其ID分别获取所有发票?

如果您还没有遇到它,请提供有关如何实现此模式的更多详细信息,并使下面的答案更易于理解

基本上,您只需使用您的BillId作为分区键来执行GSI查询。然后,对于找到的每个项目,范围键为您提供关联的InvoiceId


这只是一个查询,您会得到所有链接到账单的InvoiceID。

问题的一部分是,我也想得到一些仅在发票行上的数据。我想我的备选方案是:1)首先通过GSI查询InvoiceID,然后再查询相应的发票并合并结果。或者,2)将所需数据从发票行复制到所有相应的票据?然后,我只需要一个查询,但要以维护数据重复为代价,因为在我的情况下,发票数据是可变的