我有一个很大的Python向量字典,其中包含无法加载到内存中的浮点数(150k个向量,每个10k维),因此我必须使用两种方法中的一种将其存储在磁盘上,并在适当的时候检索特定的向量。矢量将被创建并存储一次,但可能会被多次(数千次)读取-因此拥有有效的读取非常重要。在对shelve模块进行了一些测试之后,我倾向于相信sqlite对于这类任务会是一个更好的选择,但是在我开始编写代码之前,我希望听到更多关于这方面的意见……例如,除了这两个我不知道的选项之外,还有其他选择吗?
现在,假设我们同意最好的选项是sqlite,另一个问题与表的确切形式有关。我正在考虑使用具有vector_key, element_no, value形式的行的细粒度结构来帮助进行有效的分页,而不是将向量的所有10k元素存储到同一记录中。我真的很感谢在这个问题上的任何建议。
发布于 2012-06-05 19:32:34
如果您想要sqlite3,那么如果您使用像sqlalchemy这样的对象关系管理,那么您可以很容易地扩展和使用其他后端数据库。
在生产代码中,Shelve更像是一个“玩具”,而不是实际有用的东西。
您正在讨论的另一个问题是标准化,我个人一直不太擅长这个问题,this应该为您解释一下。
正如额外说明的那样,this显示了搁置与sqlite3之间的性能故障
发布于 2012-06-05 19:36:53
当您处理数值向量时,您可能会发现PyTables是一个有趣的替代方案。
https://stackoverflow.com/questions/10896395
复制相似问题