我很难建模自己所处的场景。
嗯,我能够对解决方案进行建模,但最终却涉及到2个GSI
这里的背景是我有项目,每个项目都可以有任务
每个任务可以与另一个任务有关系,例如孩子,受抚养人,父母。
最初,我是通过以下方式建模的:
如您所见,project_1有两个任务。
而task_1取决于task_2
使用GSI 1的原因是,如果我只有task_2 id,我可以进行反向搜索以查看task_1依赖于它。
但是,这还不够,它引入了一个新问题:
如果要删除项目以及与之相关的所有数据,该如何删除任务关系对象?我可以,但是会涉及一些非常昂贵的扫描。
所以我添加了第三个GSI:
此新的GSI用于将任务关系的“ belongs_to_project”属性投影为主键,因此我可以通过3个查询轻松删除所有Project信息。
我可以更有效地做到这一点吗?使用更少的查询?更少的GSI?