我正在尝试使用C++为键值对开发主内存索引。我需要确保索引在崩溃后可以恢复。我正在使用我发现的CSB+-Tree实现(BSD许可证)here我面临的主要挑战是在重新实例化节点后维护父子关系数据。我已经搜索了各种策略来将“树结构”保存到磁盘或从磁盘恢复。其中一些是:将节点对象保存在Pre-order中,并为空子指针写入NULLS。为节点提供IDS并在写入时保存节点ID而不是指针到磁盘,然后在重新实例化期间使用ID解析指针。保存时使用文件偏移值(物理内存中的地址)而不是子节点的主内存地址。这可能意味着我必须从leaf-up保存。我还查看了几个序列化库。GoogleProtocolBuffe