我需要在 ssd 上创建一个trie 。我不能使用太多 RAM,因为 trie 很大,但 4 GB RAM 没问题。
目前我考虑通过以下方式进行操作:
- 使用一个内存映射文件
- 使用 protobuf 序列化对象,使用文件位置和长度更改指向其他对象的指针
现在我正在寻找可以提供帮助的工具。当对象(节点)变大时我会遇到问题。我需要在文件中为该对象找到一个新位置,更改指向该对象的所有链接。然后我的文件中留下了一个空白。然后我需要压缩我的树并更改所有对象的所有位置以缩小一些差距。在每个对象之后留出一些空间会导致非常大的空间需求。
你知道图书馆或者有一些提示来解决这个问题或者可以帮助编程这一切吗?