淺嘗key-value資料庫(二)——MongoDB的優與劣

來源:互聯網
上載者:User

標籤:

淺嘗key-value資料庫(二)——MongoDB的優與劣

MongoDB的名字取自英文單詞"humongous"的中間五個字母,是一個C++開發的基於分布式檔案儲存體的資料庫開源項目。他的檔案儲存體格式是BSON(Binary JSON),因此可以高效儲存位元據,例像、視頻等大對象。

由於我是CentOS x86_64的系統,於是安裝MongoDB非常簡單:

vi /etc/yum.repos.d/mongo.repo
[10gen]
name=10gen Repository
baseurl=http://downloads.mongodb.org/distros/centos/5.4/os/x86_64/
gpgcheck=0
yum install mongo-stable mongo-stable-server mongo-stable-debuginfo

然後建一個資料目錄/var/db/mongo

啟動服務

mongod --dbpath /var/db/mongo --fork --logpath /var/log/mongodb.log --logappend

 

之後就可以通過預設連接埠27017訪問了。

mongo
>use d # 選擇資料庫d
>db.c.save({_id: 0, value: "abcd"}) # 在Collection c中存入{0, "abcd"}索引值對
>db.c.findOne({_id: 0}) # 在c中尋找主鍵為0的資料
>db.c.find() # 列出c中的所有資料
>use admin # 切換到admin模式
>db.shutdownServer() # 關閉MongoDB

那麼MongoDB的效能是否如同傳說中的那樣出色呢?我在一台配置為Xeon E5506  2.13GHz x 4,8G記憶體,1TB SATA硬碟的機器上進行了測試,結果如下:

 

寫入:

第一次插入500W條每條大小約2K的資料,耗時1050.2s,實際內容為12G左右,資料集佔用空間為22G

第二次再插入4500W條每條大小約2K的資料,耗時8614.4s,實際內容共為98G左右,資料集共佔有空間為137G

 

隨機讀取:

讀取32041次,耗時250.3s

可以看出,隨機讀的速度非常慢,也許是由於SATA磁碟I/O效能不足吧。另外,MongoDB的磁碟空間佔用也是在key-value資料庫中比較大的。

同時,同事做了與Tokyo Tyrant的對比,結論是效能差不多,磁碟空間佔用稍微少一點,但是TT似乎不支援分布式。由於我沒有拿到測試資料,在這裡就不細說了。在網上可以找到老趙做過的MongoDB和TT的比較——《MongoDB與Tokyo Tyrant效能比較》,他的測試結論是MongoDB效能有10~20%的優勢,也可以參考一下。

由於MongoDB磁碟空間佔用比較大,那麼他的分布式功能就刻不容緩了。MongoDB從1.6版本開始也提供了Sharding的介面,下一篇我們會來測試MongoDB的分布式。

淺嘗key-value資料庫(二)——MongoDB的優與劣

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.