我很难为某种场景建模,而不必呼吁多个请求。
考虑一个People
表,每个Person
可以相互关联n次,并且此关系具有描述。
请考虑以下建模:
如您所见,我有两个People
,而person_0001
是person_0002
的子代。
现在,在这种情况下,如果我想获得person_0001
拥有的所有关系,这很简单,我只需查询:
GET WHERE PK = "person_0001" AND SK.BEGINS_WITH("rel")
但是,由于它是双向的,我如何获得person_0002
的关系?
我可以使用GSI来反转键,因此通过一个请求,我可以一次查询两个表。
但是真正的问题出在我需要更新/删除时,如何仅通过一个请求就可以删除/更新person_0002
的所有关系?我只能从GSI中读取信息。>
这通常是一个很大的困难,当我需要在GSI上进行删除/更新/写入时该怎么办?