13

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

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

4

2 回答 2

10

您想要 sqlite3,然后如果您使用像sqlalchemy这样的 ORM,那么您可以轻松地扩展和使用其他后端数据库。

Shelve 更像是一个“玩具”,而不是在生产代码中真正有用。

您正在谈论的另一点称为规范化,我个人从来没有非常擅长它,应该为您解释。

作为一个额外的说明,显示了 shelve 与 sqlite3 的性能失败

于 2012-06-05T11:32:34.087 回答
3

在处理数字向量时,您可能会发现PyTables是一个有趣的替代方案。

于 2012-06-05T11:36:52.670 回答