我正在寻找一种高效的索引持久数据结构。我通常在 .NET 中工作并且知道 FSharp 的 Map 但是该实现和我知道的大多数其他实现只提供一个“索引”,即映射的左侧。
基本上这是场景
public class MyObject
public int Id { get; }
public int GroupId { get; }
public string Name { get; }
对象的 ID 将是添加的全局唯一项集。GroupId 可能有重复的值,我希望能够查询具有匹配 GroupId 的所有值,并且在 GroupId 内名称将是唯一的,但可能在不同的 GroupId 之间重复。这不是我可以简单地创建 3 个字段的复合键的情况,因为我需要根据特定字段值独立访问项目组。
我可以做到这一点,并且在过去使用字典中的字典,这已在 STackoverflow 上的其他帖子中推荐过......但是,我也希望数据结构是 1)完全持久性和一切意味着 2)高效在内存中 - 意味着版本需要共享尽可能多的节点 3) 高效的修改 - 我希望它快
我意识到我在这里要求很多,但我想要求避免即使已经完成了重新发明轮子。
谢谢