MongoDB在Ubuntu10.04下的单机性能测试

日期: 2010-09-01 作者:龙浩 来源:TechTarget中国 英文

  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
{u’date’: datetime.datetime(2010, 8, 31, 12, 59, 30, 456000), u’text’: u’My first blog post!’, u’_id’: ObjectId(‘4c7cfcb28cb52a3eec00002e’), u’author’: u’46Mike’, u’tags’: [u’mongodb’, u’python’, u’pymongo’]}
find run: 0.0865120887756
count before remove: 1000000
count after remove: 0
remove run: 9.01437902451

  测试显示向数据库中插入100W条数据耗时211.038秒,删除100W条数据耗时9.014秒,数据库文件总大小为1G(这个和保持的对象大小有关系)

  遇到到问题:

  1:数据库文件大小在清空库后不能自动更改;

  2:单线程测试的结果,多线程效率会怎样还需要测试!

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

龙浩
龙浩

相关推荐