在 shelve 和 sqlite 之间进行选择以获得非常大的字典 (Python)



我有一个大型的 Python 字典,其中包含无法加载到内存中的浮点数(150k 个向量,每个 10k 维),所以我必须使用两种方法之一将其存储在磁盘上并在适当的时候检索特定的向量。向量将被创建和存储一次,但可能会被读取很多(数千)次 - 因此高效读取非常重要。在使用 shelve 模块进行一些测试后,我倾向于相信 sqlite 将是此类任务的更好选择,但在我开始编写代码之前,我想听到更多关于此的意见......例如,除了我不知道的这两个选项之外,还有其他选项吗?

现在,假设我们同意最好的选择是 sqlite,另一个问题与表的确切形式有关。我正在考虑使用具有形式vector_key, element_no, value行的细粒度结构来帮助高效分页,而不是将矢量的所有 10k 元素存储到同一记录中。我非常感谢关于这个问题的任何建议。

你需要sqlite3,那么如果你使用像sqlalchemy这样的ORM,那么你可以很容易地扩展和使用其他后端数据库。

Shelve更像是一个"玩具",而不是在生产代码中实际有用的东西。

你说的另一点叫做规范化,我个人从来都不是很擅长,这应该为你解释一下。

作为额外的说明,这显示了搁置与sqlite3的性能故障

当你处理数字向量时,你可能会发现PyTables是一个有趣的选择。

最新更新