我想知道如何改善Mongodb中数据的导入性能。我有17700个txt文件,要导入它们,我必须先将它们转换成字典,然后再将它们导入Mongo,但是使用循环进行处理确实太慢了,有什么建议吗? 谢谢 这是我的代码:
from bson.objectid import ObjectId
def txt_dict(x):
d = {}
with open(x,'r') as inf:
conta=0
for line in inf:
if (conta == 0):
movie_id = line.replace(":","")
conta = conta+1
else:
d['user_id'] = line.split(sep = ',')[0]
d['rating'] = int(line.split(sep = ',')[1])
d['date'] = line.split(sep = ',')[2]
d['_id'] = ObjectId()
d['movie_id'] = movie_id
collection.insert(d)
import os
directory =
r"/Users/lorenzofamiglini/Desktop/Data_Science/training_set"
for filename in os.listdir(directory):
if filename.endswith('.txt'):
txt_dict((directory+"/"+filename))
#print (str(directory+"/"+filename))
答案 0 :(得分:0)
两种提高性能的方法。
任何数据库都受单个插入上磁盘写入速度的限制,但是在将多个插入操作分批处理时非常有效。通过并行加载,可以使磁盘饱和。
简而言之,它将运行得更快。之后,您将使用多个磁盘驱动器和SSD将写入并行化。
使用MongoDB Atlas,您可以在数据加载期间调高IOPS速率(输入输出操作),然后将其调低。如果您在云中,则始终是一个选择。