纯Python持久性密钥和基于值的容器(类似哈希的接口),支持大文件系统?

时间:2009-10-09 10:47:56

标签: python hash persistence

我正在为持久性哈希表(btree或b + tree)寻找(可能)纯Python库,它将提供以下功能

  1. 大文件支持(可能以兆兆字节为单位)
  2. 足够快,内存占用少(寻找速度和内存之间的下降平衡)
  3. 管理成本低
  4. 可靠性,即通过文件系统写入内容后不会损坏文件
  5. 最后是一个纯Python实现。我很好,如果它有C库但我正在寻找跨平台解决方案
  6. 我已经研究过redis,shelve,tokyo cabinet等解决方案。东京内阁令人印象深刻,在http://code.google.com/p/python-tokyocabinet/正在制作Python绑定,但其Windows端口正在进行中。

    感谢您提出一些好的建议。我目前正在使用Python探索SQLite3。我得到了使用数据库引擎的建议,但更倾向于精益和平均持久的b +树实现

3 个答案:

答案 0 :(得分:2)

ZODB
http://pypi.python.org/pypi/ZODB3

像Lennart所说,使用最新版本的课程

答案 1 :(得分:2)

使用关系数据库。

  • 如果在密钥中放入索引,则在基于密钥检索数据时非常快。
  • 良好的缩放
  • 不要轻易腐败
  • 已有的工具:
    • 备份
    • 复制
    • 聚类
  • 跨平台
  • 通过网络工作
  • 如果您需要,请允许非常快JOIN,分组,集合和其他复杂查询

您可以轻松创建一个类似dict或哈希表的类,但将数据库用作存储。您可以在内存中尽可能多地缓存它。

答案 2 :(得分:1)

ZODB确实是一个强大的工具,但也许它太过分了。

您可以在少数Python行中破解自己的解决方案:只需将对象等字典编码为数据库适配器。尝试使用this snippets,将SQLite调用替换为MySql,您应该完成。