我有一个庞大的Python字典向量(150k向量,每个10k维度)的浮点数无法加载到内存中,因此我必须使用这两种方法之一将其存储在磁盘上并在适当时检索特定向量。矢量将被创建并存储一次,但可能会被读取很多次(数千次) - 因此有效读取非常重要。在使用搁置模块进行一些测试之后,我倾向于认为sqlite对于这种任务来说是更好的选择,但在我开始编写代码之前,我想听到更多关于此的意见...例如,还有其他任何除了那两个我不知道的选项?
现在,假设我们同意最佳选项是sqlite,另一个问题与表的确切形式有关。我正在考虑使用带有表格行的细粒度结构 vector_key, element_no, value
帮助有效分页,而不是将矢量的所有10k元素存储到同一记录中。我真的很感激有关这个问题的任何建议。
你想要sqlite3,那么如果你使用ORM就好了 SQLAlchemy的 然后,您可以轻松扩展并使用其他后端数据库。
Shelve更像是一个“玩具”,而不是生产代码中实际有用的东西。
你要谈的另一点叫做规范化,我个人从来都不是很擅长 这个 应该为你解释一下。
就像一个额外的说明 这个 显示shelve vs sqlite3中的性能故障
你想要sqlite3,那么如果你使用ORM就好了 SQLAlchemy的 然后,您可以轻松扩展并使用其他后端数据库。
Shelve更像是一个“玩具”,而不是生产代码中实际有用的东西。
你要谈的另一点叫做规范化,我个人从来都不是很擅长 这个 应该为你解释一下。
就像一个额外的说明 这个 显示shelve vs sqlite3中的性能故障
在处理数字向量时,您可能会发现 PyTables 一个有趣的选择。