MongoDB是一個(gè)可擴(kuò)展,高性能、開源、模式自由、面向文檔的數(shù)據(jù)庫

它并不是我們通常用的RDBMS,屬于最近比較熱門的"NoSql"的數(shù)據(jù)庫范疇

它和一般的基于key-value的db還是不大一樣的,因?yàn)樗旧淼墓δ芎軓?qiáng)大

它已經(jīng)實(shí)現(xiàn)了類似于SQL的很多功能,如index,limit,skip,group….

當(dāng)應(yīng)用的數(shù)據(jù)量達(dá)到海量級,傳統(tǒng)的Mysql,Oracle不能滿足我們的性能要求

而對于數(shù)據(jù)還有一定的查詢需求時(shí),也許可以考慮一下使用MongoDB

安裝很簡單:

 

折疊復(fù)制代碼

  1. wget "http://downloads./linux/mongodb-linux-x86_64-1.2.4.tgz"

     

  2. tar zxvf mongodb-linux-x86_64-1.2.4.tz

     

  3. ln -s /opt/mongodb-linux-x86_64-1.2.4/ /usr/local/mongodb

     

  4. mkdir /opt/mongodb_data

     

 

MongoDB有2個(gè)版本的,官方推薦使用mongodb-linux-x86_64-1.2.4.tgz,只有在linux是老系統(tǒng),mongodb無法啟動(dòng)時(shí),才使用"legacy static“版

MongoDB里提供了簡單的Auth功能,如果要開啟認(rèn)證,則在啟動(dòng)之前,需要首先增加用戶

 

折疊復(fù)制代碼

  1. /usr/local/mongodb/bin/mongo admin

     

  2. db.addUser('admin','manager')

     

  3. db.auth('admin','manager')

     

  4. show dbs

     

  5. use address

     

  6. db.addUser('mongodb','test')

     

 

其中,admin是一個(gè)特殊的數(shù)據(jù)庫,只有在admin上db.auth通過后,才能給其它的數(shù)據(jù)庫增加權(quán)限

如上,我們?yōu)閍ddress數(shù)據(jù)庫增加了一個(gè)mongodb的用戶

另外,如果我們要啟用Master/Slave模式,而且開啟了Auth功能,則需要同時(shí)在Master和Slave上的local數(shù)據(jù)庫上增加一個(gè)repl的用戶

 

折疊復(fù)制代碼

  1. use local

     

  2. db.addUser('repl','replication')

     

 

否則,當(dāng)我們啟動(dòng)slave時(shí),會(huì)報(bào)錯(cuò):

replauthenticate: no user in local.system.users to use for authentication

 

replauthenticate: can't authenticate to master server, user:repl

然后,我們使用如下腳本來分別啟動(dòng)Master和Slave即可,注意–oplogSize選項(xiàng),它指定了master往slave同步時(shí),更新日志保存的最大大小,默認(rèn)64位機(jī)器,最大1G,如果太小,slave沒有及時(shí)跟上的話,有可能會(huì)數(shù)據(jù)不一致

 

折疊復(fù)制代碼

  1. nohup /usr/local/mongodb/bin/mongod run –dbpath=/data/mongodb_data/ –logpath=/data/mongodb_data/mongodb.log –oplogSize=10000M –logappend –auth –master &

     

  2. nohup /usr/local/mongodb/bin/mongod run –dbpath=/opt/mongodb_data/ –logpath=/opt/mongodb_data/mongodb.log –logappend –auth –slave –source=192.168.10.10:27017 &

     

 

t" type=text/css href="http://www./editor/fckeditor/editor/plugins/insertcode/insertcode.css">

在python中,可以使用pymongo模塊

 

折疊復(fù)制代碼

  1. from pymongo.connection import Connection

     

  2.  

  3. connection = Connection("127.0.0.1",27017)

     

  4. db = connection.mail_addr

     

  5. db.authenticate('mongodb','test')

     

  6. ……

     

  7. db.address.save(user_addr,safe=True)

     

 

使用save來保存某個(gè)記錄,如果我們已經(jīng)使用find()查處了某個(gè)記錄,則修改后也可以使用save來進(jìn)行update操作

如果要實(shí)現(xiàn)某條記錄不存在就insert,存在就update,則可以使用

 

折疊復(fù)制代碼

  1. db.foo.update({'yy'}:5,{'$set':{'xx':2}},upsert=true)

     

 

MongoDB的功能很強(qiáng)大,可以像Mysql那樣建立索引,且支持多字段索引、支持unique索引…

今后有空繼續(xù)研究….