MongoDB是一个基于分布式文件存储的数据库开源项目。由C++语言编写。旨在为WEB应用提供可护展的高性能数据存储解决方案。它比纯noSQL数据库查询功能强悍,比关系数据库更面向集合。
测试的硬件:酷睿双核3.0G,2G内存,7200转普通硬盘,Ubuntu10.04 32bit,MongoDB1.61
安装&启动
longhao@aliyun:~$ sudo apt-get install mongodb
#添加一个so,否则启动不了mongodb longhao@aliyun:~$ sudo ln -s /usr/lib/xulrunner-devel-1.9.2.8/lib/libmozjs.so /usr/lib/libmozjs.so #启动 longhao@aliyun:~$ sudo service mongodb start |
安装python库
到github上去下载mongodb到python driver或者 git clone git://github.com/mongodb/mongo-python-driver.git pymongo
longhao@aliyun:~$ tar zxvf pymongo.*.tar.gz longhao@aliyun:~$ cd pymongo longhao@aliyun:~$ python setup.py install |
编写测试代码
#!/usr/bin/env python from pymongo import Connection import time,datetime connection = Connection(‘127.0.0.1’, 27017) db = connection[‘testdb’] ”’ test program execute time,use python decorator! ”’ def func_time(func): def _wrapper(*args,**kwargs): start = time.time() func(*args,**kwargs) print func.__name__,’run:’,time.time()-start return _wrapper @func_time def insert(num): posts = db.posts for x in range(num): post = {“author”: str(x)+”Mike”, ”text”: “My first blog post!”, ”tags”: [“mongodb”, “python”, “pymongo”], ”date”: datetime.datetime.utcnow()} posts.insert(post) @func_time def find(): posts = db.posts print posts.find_one() @func_time def remove(): posts = db.posts print ‘count before remove:’,posts.count(); posts.remove({}); print ‘count after remove:’,posts.count(); if __name__ == “__main__”: num = 1000000 insert(num) find() remove() |
测试结果
longhao@aliyun:~$ python mongodb.py insert run: 211.037979126 |
测试显示向数据库中插入100W条数据耗时211.038秒,删除100W条数据耗时9.014秒,数据库文件总大小为1G(这个和保持的对象大小有关系)
遇到到问题:
1:数据库文件大小在清空库后不能自动更改;
2:单线程测试的结果,多线程效率会怎样还需要测试!
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
MongoDB收购Realm数据库以增强移动力量
日前MongoDB公司宣布收购开源数据库供应商Realm公司,以帮助其在日益移动化计算领域提升竞争能力。 Re […]
-
MongoDB与Cassandra数据库对比
MongoDB和Cassandra都属于NoSQL数据库系列,它们也恰好都是开源,但是,它们的相似之处仅此而已 […]
-
低成本和云选项推动开源RDBMS的部署
随着企业产生越来越多的数据,数据专业人员面临困境:在此过程中数据库账单必须变得更多吗?对此,越来越多注重成本的 […]
-
eHarmony公司利用Redis NoSQL数据库进行热存储
虽然关系型数据库不会消失,但关系型数据库管理系统有时仅在会话管理、推荐引擎和模式匹配等关键Web应用程序中担当 […]