我想知道是否有一种带有Python绑定的快速磁盘键值存储,支持对不同键进行数百万次读/写调用。我的问题涉及在非常大的语料库(Wikipedia)中计算词共现,并不断更新共现计数。这涉及到使用64位键和64位值读取和写入大约300亿个值70次。
我还可以将我的数据表示为上三角稀疏矩阵,尺寸约为2M x 2M。
到目前为止,我已经尝试过:
- Redis(64GB内存不够大) - TileDB SparseArray(无法添加到值) - Sqlite(速度太慢) - LMDB(将300亿次读/写分批执行事务需要多个小时) - Zarr(基于坐标的更新超级慢) - Scipy .npz (无法在内存中保留矩阵以进行加法部分) - 稀疏COO与memmapped coords和data(添加矩阵时RAM使用量巨大)
目前唯一有效的解决方案是LMDB,但运行时间约为12天,这似乎是不合理的,因为我觉得我没有处理那么多数据。使用.npz将子矩阵(约300M个值)保存到磁盘几乎是瞬时的。
有什么想法吗?
我还可以将我的数据表示为上三角稀疏矩阵,尺寸约为2M x 2M。
到目前为止,我已经尝试过:
- Redis(64GB内存不够大) - TileDB SparseArray(无法添加到值) - Sqlite(速度太慢) - LMDB(将300亿次读/写分批执行事务需要多个小时) - Zarr(基于坐标的更新超级慢) - Scipy .npz (无法在内存中保留矩阵以进行加法部分) - 稀疏COO与memmapped coords和data(添加矩阵时RAM使用量巨大)
目前唯一有效的解决方案是LMDB,但运行时间约为12天,这似乎是不合理的,因为我觉得我没有处理那么多数据。使用.npz将子矩阵(约300M个值)保存到磁盘几乎是瞬时的。
有什么想法吗?
ndbm
)可能值得一试。 - Serge Ballesta