1.Mongodb
版本:mongodb-linux-x86_64-static-legacy-1.8.1.tgz
:http://www.mongodb.org/downloads
mongodb提供兩個下載版本: mongodb-linux-x86_64-1.8.1.tgz 和 mongodb-linux-x86_64-static-legacy-1.8.1.tgz
區別:只有在linux是老系統,mongodb無法啟動時,或者出現浮點數異常,才使用"legacy static“版,
儘可能使用mongodb-linux-x86_64-1.8.1.tgz
2.簡介
(以下內容從網上摘抄的,原址:http://hi.baidu.com/moioo/blog/item/8d464a8f05eb37f6513d923e.html)
MongDB是一個可擴充,高效能、開源、模式自由、面向文檔的資料庫,並不是我們通常用的RDBMS,屬於“NoSql”的範疇。
它和一般的基於key-value的db還是不大一樣,因為他本身的功能很強大,已經實現了類似於SQL的很多功能,
如index、limit、skip、group。。。。。
當應用的資料量達到海量級,傳統的Mysql,Oracle 不能滿足我們的效能需求,而對於資料還有一定的查詢需求時,可以考慮
MongoDB。
3.安裝:
由於RHEL4.3使用mongodb-linux-x86_64-1.8.1.tgz 版本,
會出現錯誤: error while loading shared libraries: requires glibc 2.5 or later dynamic linker
所以使用版本:mongodb-linux-x86_64-static-legacy-1.8.1.tgz
1)建立mongodb程式運行目錄及預設的資料存放目錄:
#mkdir -p /usr/local/mongodb-1.18.1
#mkdir -p /data/db
2)解壓縮:
#tar zxf mongodb-linux-x86_64-static-legacy-1.8.1.tgz -C /usr/local/mongodb
3)cd到mongodb安裝目錄,運行:
#./mongod --dbpath=/data/db/ --logpath=/data/db/mongodb.log --logappend
4.python測試
1)RHEL4.3預設的python版本為 2.3.4.
升級為python 2.7.1
(1)下載python2.7.1的源碼包 http://www.python.org/getit/,版本:Python-2.7.1.tgz
安裝:#tar zxf Python-2.7.1.tgz
#cd Python-2.7.1
#configure
#make
#make install
修改path
#mv /usr/bin/python /usr/bin/python_2.3 //將原始的2.3版本重新命名
#mv /usr/local/bin/python2.7 /usr/bin/python //將新產生的2.7版本考到/usr/bin/目錄下
#python -V //查看python新版本是否生效
(2)安裝python2.7.1版本對應的setuptools
下載:http://pypi.python.org/pypi/setuptools 版本:setuptools-0.6c11-py2.7.egg
安裝:#chmod +x setuptools-0.6c11-py2.7.egg
#./setuptools-0.6c11-py2.7.egg
2)下載並安裝mongodb的python驅動包
下載http://www.mongodb.org/downloads,版本:pymongo-1.11.tar.gz
安裝:#tar zxf pymongo-1.11.tar.gz
#cd pymongo-1.11
#python setup.py build
#python setup.py install
測試:#python
>>>import pymongo
3)入庫速度測試
測試指令碼
########################################################
#!/usr/bin/python
#-*- coding: utf-8 -*-
import os,sys
import random
import string
import time
import pymongo
insertinfo={}
valid_letters='ABCDEFGHIJKLMNOPQRSTUVWXYZbcdefghijklmnopqrstuvwxyz1234567890'
def getrandstring(length):
return ''.join([random.choice(valid_letters) for i in range(0,length)])
conn=pymongo.Connection('127.0.0.1',27017) //建立資料庫連接
conn.drop_database('test') //刪除已有的資料庫 ‘test’
print 'database_names:%s' % conn.database_names() //列印當所有的資料庫名
print 'nodes :%s' % conn.nodes //列印節點名稱
print 'port :%s' % conn.port //列印單口號
print 'host :%s' % conn.host //列印host地址
#print 'serverinfo :',conn.server_info() //列印server資訊
db=conn.test //建立一個資料庫連接
mycollection=db.test_collection_2 //建立一個collection。若test庫和此collection並不存在
則此時也並未實際建立,直到插入資料時,才產生。
print 'dbname :%s\n' % db.name //列印當前串連的庫名
print "test_collection_2 index info:",mycollection.index_information() //列印collection的索引資訊
print "connection information ------------------"
for myconn in db.collection_names(): //列印當前串連的所有colleciton
print myconn
#print 'insert data ----------------------'
print mycollection.count() //列印當前collection的資料條數
begtime=time.time()
pretime=begtime
for i in range(0,1000000): //產生迴圈的隨機字串
insertinfo["_id"]=i //手動插入“_id”值.
insertinfo["y"]=str(getrandstring(random.randint(15,30)))
insertinfo["z"]=str(getrandstring(random.randint(15,30)))
insertinfo["m"]=str(getrandstring(random.randint(15,30)))
mycollection.insert(insertinfo,safe=False,check_keys=False) //向當前的collection插入資料
if db.error() is not None: //檢測插入是否成功,否則輸出錯誤資訊
print db.error()
print insertinfo
print mycollection.index_information()
if i % 10000==0:
print i,mycollection.count(),(time.time()-pretime)
pretime=time.time()
endtime=time.time()
print 'run time: %s' % (endtime-begtime)
"""
print 'insert finish,outpu insert info------------------'
for item in mycollection.find():
for key in item.keys():
print key+":",item[key]
"""
conn.disconnect() //關閉資料庫連接
########################################################
測試結果:
本地vmware虛擬機器:512M記憶體,單cpu。
100萬資料,插入時間:404.967557907秒。
產生的資料檔案列表:
#ls -l /data/db
##########################
-rw------- 1 root root 64M Jun 13 09:37 test.0
-rw------- 1 root root 128M Jun 13 09:37 test.1
-rw------- 1 root root 256M Jun 13 09:40 test.2
-rw------- 1 root root 16M Jun 13 09:37 test.ns
##########################