深入理解MongoDB(一)Linux下配置MongoDB全攻略,mongodb全攻略

來源:互聯網
上載者:User

深入理解MongoDB(一)Linux下配置MongoDB全攻略,mongodb全攻略
一 MongoDB簡介

 

MongoDB是一個高效能,開源,無模式的文檔型資料庫,是當前NoSql資料庫中比較熱門的一種。它在許多情境下可用於替代傳統的關係型資料庫或鍵/值儲存方式,Mongo使用C++開發。Mongo的官方網站地址是:http://www.mongodb.org/,讀者可以在此獲得更詳細的資訊。

 

特點:

它的特點是高效能、易部署、易使用,儲存資料非常方便。主要功能特性有:
  • 面向集合儲存,易儲存物件類型的資料。
  • 模式自由。
  • 支援動態查詢。
  • 支援完全索引,包含內部對象。
  • 支援查詢。
  • 支援複製和故障恢複。
  • 使用高效的位元據儲存,包括大型物件(如視頻等)。
  • 自動處理片段,以支援雲端運算層次的擴充性。
  • 支援RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言。
  • 檔案儲存體格式為BSON(一種JSON的擴充)。
  • 可通過網路訪問。

 

功能:

  • 面向集合的儲存:適合儲存物件及JSON形式的資料。
  • 動態查詢:Mongo支援豐富的查詢運算式。查詢指令使用JSON形式的標記,可輕易查詢文檔中內嵌的對象及數組。
  • 完整的索引支援:包括文檔內嵌對象及數組。Mongo的查詢最佳化工具會分析查詢運算式,並產生一個高效的查詢計劃。
  • 查詢監視:Mongo包含一個監視工具用於分析資料庫操作的效能。
  • 複製及自動容錯移轉:Mongo資料庫支援伺服器之間的資料複製,支援主-從模式及伺服器之間的相互複製。複製的主要目標是提供冗餘及自動容錯移轉。
  • 高效的傳統儲存方式:支援位元據及大型物件(如照片或圖片)
  • 自動分區以支援雲層級的伸縮性:自動分區功能支援水平的資料庫叢集,可動態添加額外的機器。

 

適用情境:

  • 網站即時資料處理。它非常適合即時的插入、更新與查詢,並具備網站即時資料儲存所需的複製及高度伸縮性。
  • 緩衝。由於效能很高,它適合作為資訊基礎設施的緩衝層。在系統重啟之後,由它搭建的持久化緩衝層可以避免下層的資料來源過載。
  • 高伸縮性的情境。非常適合由數十或數百台伺服器組成的資料庫,它的路線圖中已經包含對MapReduce引擎的內建支援。


不適用情境:

  • 要求高度事務性的系統。
  • 傳統的商業智慧應用。
  • 複雜的跨文檔(表)級聯查詢。

 

二 MongoDB配置全攻略

 

版本說明:

RedHat:6.1 x86_64

MongoDB:2.6.3

 

首先,我們到官網(http://www.mongodb.org/downloads)下載64位Linux 版的MongoDB;

 

然後,做配置MongoDB之前的準備工作;

--建立MongoDB主目錄# mkdir /usr/local/mongodb/--解壓MongoDB包到MongoDB主目錄# tar -xvf mongodb-linux-x86_64-2.6.3.tgz -C /usr/local/mongodb/--建立MongoDB資料目錄,可以存放到其他位置,比如RAID、LVM上# mkdir /usr/local/mongodb/data/--建立MongoDB日誌目錄,建議放到var目錄下# mkdir /usr/local/mongodb/log/

接著,我們使用mongod命令啟動MongoDB,再開啟另一個終端,使用mongo命令串連到MongoDB;

# cd /usr/local/mongodb/bin/# ./mongod --dbpath=/usr/local/mongodb/data/ --logpath=/usr/local/mongodb/log/mongo.log# ./mongoMongoDB shell version: 2.6.3connecting to: test>

接著,配置環境變數;

# pwd/usr/local/mongodb/bin# vim ~/.bash_profile # tail -n3 !$tail -n3 ~/.bash_profilePATH=$PATH:$HOME/bin:/usr/local/mongodb/binexport PATH# source !$source ~/.bash_profile

為了更方便的啟動和關閉MongoDB,我們可以使用Shell寫指令碼,當然也可以加入到service中;

# cp ssh mongodb# vim mongodb# cat mongodb#!/bin/bash## mongodStart up the MongoDB server daemon## source function library. /etc/rc.d/init.d/functions#定義命令CMD=/usr/local/mongodb/bin/mongod#定義資料目錄DBPATH=/usr/local/mongodb/data#定義日誌目錄LOGPATH=/usr/local/mongodb/log/mongo.logstart(){#fork表示後台運行$CMD --dbpath=$DBPATH --logpath=$LOGPATH --forkecho "MongoDB is running background..."}stop(){pkill mongodecho "MongoDB is stopped."}case "$1" instart)start;;stop)stop;;*)echo $"Usage: $0 {start|stop}"esac

我們可以測試編寫指令碼的正確性;

# /etc/init.d/mongodb startabout to fork child process, waiting until server is ready for connections.forked process: 1347child process started successfully, parent exitingMongoDB is running background...# /etc/init.d/mongodb stopTerminated

當然,更好的方式是採用設定檔,把MongoDB需要的參數寫入設定檔,然後在指令碼中引用;

$ vim mongodb.conf $ cat mongodb.conf #代表連接埠號碼,如果不指定則預設為27017#port=27027#MongoDB資料檔案目錄dbpath=/usr/local/mongodb/data#MongoDB記錄檔目錄logpath=/usr/local/mongodb/log/mongo.log#記錄檔自動累加logappend=true

編寫好設定檔後,我們需要修改啟動指令碼;

# vim mongodb # cat mongodb #!/bin/bash## mongodStart up the MongoDB server daemon## source function library. /etc/rc.d/init.d/functions#定義命令CMD=/usr/local/mongodb/bin/mongod#定義設定檔路徑INITFILE=/usr/local/mongodb/mongodb.confstart(){#&表示後台啟動,也可以使用fork參數$CMD -f $INITFILE &echo "MongoDB is running background..."}stop(){pkill mongodecho "MongoDB is stopped."}case "$1" instart)start;;stop)stop;;*)echo $"Usage: $0 {start|stop}"esac

編寫完成後,再次測試指令碼的正確性。

# /etc/init.d/mongodb startMongoDB is running background...# /etc/init.d/mongodb stopTerminated


三 後記

這是深入理解MongoDB的第一篇文章,本篇文章簡要地介紹了MongoDB,並把Linux下完整的配置過程呈現給讀者。

 

四 參考資料

http://baike.baidu.com/subview/3385614/9338179.htm


Good Luck!

Robin

2014年8月2日


linux 上安裝mongodb為何沒有設定檔,mongodb官網上說預設為/etc/mongodbconf 直接解壓的安裝包

源碼安裝,mongod.conf貌似需要自己擼一個。
也許是我沒找到,上官網上看了些,也沒看說在哪,就自己弄了個。
參考資料的連結可以去看看。
參考資料:hi.baidu.com/...4665a1
 
Mongodb在Linux 64位系統下,通過mongofiles上傳的單個檔案有大小限制?

一樓的,MongoDB有設定檔?在哪呢?我這是頭回聽說。

建議你改用任意一種主流驅動進行上傳,如java的API,裡面有GridFS這個類,適用於管理檔案系統的,這樣對於出錯的情況很容易把我,如利用try catch和writeconcern。
你這樣什麼錯誤資訊都不給出,是沒辦法排查的。
 

相關文章

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.