Pie*_*oni 13 python database performance persistence shelve
我使用python存储一个表,我需要持久性.
基本上我将表作为字典字符串存储到数字中.整个存放与搁置
self.DB=shelve.open("%s%sMoleculeLibrary.shelve"%(directory,os.sep),writeback=True)
Run Code Online (Sandbox Code Playgroud)
我用writeback
,True
因为我发现如果不这样做,系统往往会不稳定.
在计算之后,系统需要关闭数据库并将其存储回来.现在数据库(表格)大约是540MB,而且需要很长时间.桌子增长到大约500MB后,时间爆炸了.但我需要一张更大的桌子.事实上我需要其中两个.
我可能正在使用错误的持久性形式.我该怎么做才能提高性能?
nea*_*ith 14
为了存储大型string : number
键值对字典,我建议使用一个JSON本地存储解决方案,例如MongoDB.它有一个很棒的Python,Pymongo API .MongoDB本身是轻量级的,速度非常快,json对象本身就是Python中的字典.这意味着您可以使用string
密钥作为对象ID,从而允许压缩存储和快速查找.
作为代码容易实现的示例,请参阅以下内容:
d = {'string1' : 1, 'string2' : 2, 'string3' : 3}
from pymongo import Connection
conn = Connection()
db = conn['example-database']
collection = db['example-collection']
for string, num in d.items():
collection.save({'_id' : string, 'value' : num})
# testing
newD = {}
for obj in collection.find():
newD[obj['_id']] = obj['value']
print newD
# output is: {u'string2': 2, u'string3': 3, u'string1': 1}
Run Code Online (Sandbox Code Playgroud)
你只需要从unicode转换回来,这是微不足道的.
归档时间: |
|
查看次数: |
13436 次 |
最近记录: |