标签: python serialization leveldb
我正在维护一些需要不断更新的映射。
这些映射现在以pickle序列化的dict的形式实现。
pickle
dict
更新过程如下:
此解决方案的问题在于,大型dict可能会占用大量内存。
我已经研究了其他解决方案,例如shelve和leveldb,但是它们都可以生成许多文件而不是一个文件,而保存到键值存储之类的系统则更为复杂。
shelve
leveldb
答案 0 :(得分:0)
要在不将整个映射读入内存的情况下读取和修改映射,则需要将其作为索引结构存储在某种数据库中。有许多具有良好Python绑定的数据库将数据作为文件存储在磁盘上,因此您不必担心数据库服务器或单独的索引文件。 Sqlite几乎可以肯定是最常见的选择。但是,正如您在注释中指出的那样,出于您的目的,可能不需要SQL数据库的全部功能,因为您实际上只需要存储键值对。
那么,根据您的特定要求,我可能会推荐vedis。它是一个单文件,键值数据库,可以支持非常大的数据库大小(文档声称它可以按terrab的顺序处理),具有事务性和启动线程安全性。