换句话说,我们能否有效地对持久数据结构中的多对多关系进行建模?
建议使用一对单向多图。但是,我不确定这对于在持久数据结构中的删除效果如何。假设我们有键 1..4 到值“1”..“4”,假设它们每个都引用所有其他的,所以我们有两个在两个方向上看起来都非常相似的映射:
{1 => ["2","3","4"], 2 => ["1","3","4"], ...} {"1" => [2,3, 4], "2" => [1,3,4], ...}
现在我们要从系统中完全删除项目 1。这需要在第一个映射中更改一个节点,但它需要在第二个映射中更改 n-1 个节点。对于成千上万的 n (这可能在我正在考虑的情况下),那不是相当昂贵吗?或者多图是否针对处理这种类型的更改进行了优化?这是一个病态的案例,但仍然...
四叉树似乎是一个迷人的想法。我要多考虑一下。