首页 » 网站建设 » phpmongodb批量插入技巧_PythonDjangoMongoDB批量插入数据

phpmongodb批量插入技巧_PythonDjangoMongoDB批量插入数据

duote123 2024-11-11 0

扫一扫用手机浏览

文章目录 [+]

下面是我通过利用pymongo原生方法和框架中的常常利用的Mongoengine进行的性能测试。

一、利用Mongoengine

phpmongodb批量插入技巧_PythonDjangoMongoDB批量插入数据

Mongoengine是基于面向工具的,在构建凑集的时候非常方便,就直接写一个类。
而pymongo是继续于MongoDB的文档类型的,以是在框架中利用会相对没有那么方便。
但是Mongoengine目前来讲还有许多还没有完善的地方。
个人以为,还是根据实际的需求来选择不同的引擎。

phpmongodb批量插入技巧_PythonDjangoMongoDB批量插入数据
(图片来自网络侵删)

插入数据方面,Mongoengine在0.15版本之前只有save()方法,在0.15版本之后添加了insert_one()和inset_many()方法,详细可以看官方文档:。

但是由于Django官方没有将MongoDB列为建议利用的数据库,以是不支持0.9之后的版本。

代码:

插入一千条数据

插入方法:利用save()保存数据

耗时:大概2秒钟

插入10万条数据

插入方法:利用save()

耗时:两分多钟

二、利用pymongo

(1)测试1:插入一百万数据

插入方法:insert_many()

耗时:28秒

代码:

耗时时间:

插入结果:

(2)测试2:在一百万条数据根本上增加十万数据

插入方法:insert_one()

耗时:1分钟29秒

代码:

耗时时间:

插入结果:

通过上面的测试,很明显的看到,无论是利用Mongoengine的save()方法,还是利用pymongo的insert_one()方法,在大数据量的插入时都会耗费大量的韶光,在百万级别的数据就已经须要花费5-6个小时的韶光了,显然,这样的效率是很低的。
更别说千万级别的数据了。

而利用pymongo的insert_many()方法,在插入百万条数据只是花费了28秒,速率彷佛快得有点弗成思议是吧?按照这样的推算,千万级别数据的数据也大概花费不到5分钟就可以完成了。

那么为什么pymongo的原生方法insert_many()有这么高的效率呢?如何能更进一步提高效率呢?通过阅读源码和剖析参数,来理解一下。

insert_many() 定义源码:

def insert_many(self, documents, ordered=True, bypass_document_validation=False, session=None):

官方对参数的解析:

参数:

documents便是我们须要插入的数据文档,也便是上文的articles

下面重点讲ordered和bypass_document_validaion

1. ordered

默认情形下是True,即按顺序来插入多条数据,如果发生缺点,就会终止后面的插入。
如果设置为False,文档将以任意的顺序将数据插入到做事器中,并且是并行进行的,客户端会尽力将所有的数据都插入到做事器中。
以是,设置为False会在数据的插入效率有很大的提升,但也要付出一点数据安全性的代价。

2. bypass_document_validation

默认情形为False。
如果为True,那么许可在写入发生缺点的时候推出文档级别的验证,不影响后面的数据插入。

设置得当的参数值,可以更好地为海量数据的插入供应更好的插入环境。

标签:

相关文章

保皇之路,进贡之路的历史传承与当代启示

自古以来,进贡作为一种外交手段,在维护国家稳定、增进民族友谊等方面发挥了重要作用。在我国历史上,许多朝代都存在进贡现象。本文将探讨...

网站建设 2025-01-02 阅读0 评论0

信创编程语言,引领未来科技发展的新引擎

随着我国科技实力的不断提升,信创编程语言逐渐成为引领未来科技发展的新引擎。信创编程语言不仅在我国信息技术领域具有广泛的应用前景,还...

网站建设 2025-01-02 阅读0 评论0