MongoDB資料庫簡單介紹(一)
Mongo是一個高性能,開源,無模式的文檔型資料庫,它在許多場景下可用于替代傳統的關系型資料庫或鍵/值存儲方式。Mongo使用C++開發,提供了以下功能:
面向集合的存儲:适合存儲對象及JSON形式的資料。
動态查詢:Mongo支援豐富的查詢表達式。查詢指令使用JSON形式的标記,可輕易查詢文檔中内嵌的對象及數組。
完整的索引支援:包括文檔内嵌對象及數組。Mongo的查詢優化器會分析查詢表達式,并生成一個高效的查詢計劃。
查詢監視:Mongo包含一個監視工具用于分析資料庫操作的性能。
複制及自動故障轉移:Mongo資料庫支援伺服器之間的資料複制,支援主-從模式及伺服器之間的互相複制。複制的主要目标是提供備援及自動故障轉移。
高效的傳統存儲方式:支援二進制資料及大型對象(如照片或圖檔)。
自動分片以支援雲級别的伸縮性(處于早期alpha階段):自動分片功能支援水準的資料庫叢集,可動态添加額外的機器。
MongoDB的主要目标是在鍵/值存儲方式(提供了高性能和高度伸縮性)以及傳統的RDBMS系統(豐富的功能)架起一座橋梁,集兩者的優勢于一身。根據官方網站的描述,Mongo 适合用于以下場景:
網站資料:Mongo非常适合實時的插入,更新與查詢,并具備網站實時資料存儲所需的複制及高度伸縮性。
緩存:由于性能很高,Mongo也适合作為資訊基礎設施的緩存層。在系統重新開機之後,由Mongo搭建的持久化緩存層可以避免下層的資料源過載。
大尺寸,低價值的資料:使用傳統的關系型資料庫存儲一些資料時可能會比較昂貴,在此之前,很多時候程式員往往會選擇傳統的檔案進行存儲。
高伸縮性的場景:Mongo非常适合由數十或數百台伺服器組成的資料庫。Mongo的路線圖中已經包含對MapReduce引擎的内置支援。
用于對象及JSON資料的存儲:Mongo的BJSON資料格式非常适合文檔化格式的存儲 及查詢。
自然,MongoDB的使用也會有一些限制,例如它不适合:
高度事務性的系統:例如銀行或會計系統。傳統的關系型資料庫目前還是更适用于需要大量原子性複雜事務的應用程式。
傳統的商業智能應用:針對特定問題的BI資料庫會對産生高度優化的查詢方式。對于此類應用,資料倉庫可能是更合适的選擇。
需要SQL的問題
MongoDB支援OS X、Linux及Windows等作業系統,并提供了Python,PHP,Ruby,Java,C,C#,Javascript,Perl及C++語言的驅動程式,社群中也提供了對Erlang 及.NET等平台的驅動程式
MongoDB下載下傳:
http://www.mongodb.org/display/DOCS/Downloads
http://downloads.mongodb.org/lin ... 686-v1.2-latest.tgz
MongoDB安裝:
CODE:
<code>[[email protected] ~/mongodb]$tar xvzf mongodb-linux-i686-v1.2-latest.tgz [[email protected] ~/mongodb]$mv mongodb-linux-i686-v1.2-latest mongodb [[email protected] ~/mongodb]$cd mongodb [[email protected] ~/mongodb]$ ls mongo mongodump mongofiles mongorestore mongosniff mongod mongoexport mongoimport mongos</code>隻需要解壓到相關目錄即可,不需要編譯安裝
MongoDB啟動與關閉:
mongoDB的伺服器端程式為mongod
<code>[[email protected] ~/mongodb]$ bin/mongod --help ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data ** see http://blog.mongodb.org/post/137788967/32-bit-limitations for more Allowed options: General options: -h [ --help ] show this usage information --version show version information -f [ --config ] arg configuration file specifying additional options --port arg specify port number --bind_ip arg local ip address to bind listener - all local ips bound by default -v [ --verbose ] be more verbose (include multiple times for more verbosity e.g. -vvvvv) --dbpath arg (=/data/db/) directory for datafiles 指定資料存放目錄 --quiet quieter output 靜默模式 --logpath arg file to send all output to instead of stdout 指定日志存放目錄 --logappend appnd to logpath instead of over-writing 指定日志是以追加還是以覆寫的方式寫入日志檔案 --fork fork server process 以建立子程序的方式運作 --cpu periodically show cpu and iowait utilization 周期性的顯示cpu和io的使用情況 --noauth run without security 無認證模式運作 --auth run with security 認證模式運作 --objcheck inspect client data for validity on receipt 檢查用戶端輸入資料的有效性檢查 --quota </code>