MongoDB是一個高性能、分佈式、無模式的開源數據庫數據庫,支持相似關型數據庫的主從結構,文檔以二進制Json形式存儲,無鎖,無事務,有索引。 由C++語言編寫。旨在爲WEB應用提供可護展的高性能數據存儲解決方案。 html
它的特色是高性能、易部署、易使用,存儲數據很是方便。mysql
l 面向集合存儲。易存儲對象類型的數據及JSON形式的數據。 git
l 模式自由。程序員
l 動態查詢。支持豐富的查詢表達式。查詢指令使用JSON形式的標記,可輕易查詢文檔中內嵌的對象及數組。github
l 徹底索引。 sql
l 複製和自動故障轉移。Mongo數據庫支持服務器之間的數據複製,支持主-從模式及服務器之間的相互複製。複製的主要目標是提供冗餘及自動故障轉移。 使用高效的二進制數據存儲,包括大型對象(如視頻等)。mongodb
l 自動處理碎片,以支持雲計算層次的擴展性shell
l 支持RUBY、PYTHON、JAVA、C#、C++、PHP等多種語言。數據庫
l 文件存儲格式爲BSON(一種JSON的擴展)數組
l 可經過網絡訪
面向集合(Collenction-Orented),意思是數據被分組存儲在數據集中,被稱爲一個集合(Collenction)。每一個集合在數據庫中都有一個惟一的標識名,而且能夠包含無限數目的文檔。集合的概念相似關係型數據庫(RDBMS)裏的表(table),不一樣的是它不須要定義任何模式(schema)。
模式自由(schema-free),意味着對於存儲在mongodb數據庫中的文件,咱們不須要知道它的任何結構定義。若是須要的話,你徹底能夠把不一樣結構的文件存儲在同一個數據庫裏。 文檔,存儲在集合中,被存儲爲鍵-值對的形式。鍵用於惟一標識一個文檔,爲字符串類型,而值則能夠是各中複雜的文件類型。咱們稱這種存儲形式爲BSON(Binary Serialized dOcument Format)。
MongoDB的主要目標是在鍵/值存儲方式(提供了高性能和高度伸縮性)以及傳統的RDBMS系統(豐富的功能)架起一座橋樑,集二者的優點於一身。根據官方網站的描述,Mongo適合用於如下場景:
◆網站數據:Mongo很是適合實時的插入,更新與查詢,並具有網站實時數據存儲所需的複製及高度伸縮性。
◆緩存:因爲性能很高,Mongo也適合做爲信息基礎設施的緩存層。在系統重啓以後,由Mongo搭建的持久化緩存層能夠避免下層的數據源過載。
◆大尺寸,低價值的數據:使用傳統的關係型數據庫存儲一些數據時可能會比較昂貴,在此以前,不少時候程序員每每會選擇傳統的文件進行存儲。
◆高伸縮性的場景:Mongo很是適合由數十或數百臺服務器組成的數據庫。Mongo的路線圖中已經包含對MapReduce引擎的內置支持。
◆用於對象及JSON數據的存儲:Mongo的BSON數據格式很是適合文檔化格式的存儲及查詢。
天然,MongoDB的使用也會有一些限制,例如它不適合:
◆高度事務性的系統:例如銀行或會計系統。傳統的關係型數據庫目前仍是更適用於須要大量原子性復瑣事務的應用程序。
◆傳統的商業智能應用:針對特定問題的BI數據庫會對產生高度優化的查詢方式。對於此類應用,數據倉庫多是更合適的選擇。
◆須要SQL的問題
MongoDB支持OS X、Linux及Windows等操做系統,並提供了Python,PHP,Ruby,Java及C++語言的驅動程序,社區中也提供了對Erlang及.NET等平臺的驅動程序。
MongoDB服務端可運行在Linux、Windows或OS X平臺,支持32位和64位應用,默認端口爲27017。推薦運行在64位平臺,由於MongoDB在32位模式運行時支持的最大文件尺寸爲2GB。
遷移案例:
1. Wordnik的MongoDB使用經驗:http://www.infoq.com/cn/news/2010/11/wordnik-mongodb
2. 視覺中國的NoSQL之路:從MySQL到MongoDB:http://www.programmer.com.cn/4199/
3. Choosing a non-relational database; why we migrated from MySQL to MongoDB
4. David Mytton爲何從MySQL遷移到MongoDB數據庫 http://www.iteye.com/topic/748322
性能評測:
1. MongoDB、HandlerSocket和MySQL性能測試及其結果分析http://blog.nosqlfan.com/html/1329.html
2. MySQL和MongoDB的性能測試http://www.oschina.net/bbs/thread/10930
3. mongodb有關的研究http://www.cnblogs.com/lovecindywang/archive/2010/05/16/1736934.html
測試環境:Win2008R2 x64 + MongoDB1.8
推薦下載版本1.8(x86_64)
下載連接:http://downloads.mongodb.org/win32/mongodb-win32-x86_64-1.8.0.zip
安裝:
1. 將下在的壓縮包解壓到磁盤某路徑下(如D:\mongo)。
2. 建立D:\mongo\data目錄(用於存放數據庫文件)
啓動:
方式一(CMD方式):
打開CMD窗口,D:\mongo\mongod.exe -dbpath D:\mongo\data
注意,此CMD窗口不要關閉
方式二(Windows服務方式)
打開CMD窗口,D:\mongo\bin\mongod.exe -dbpath D:\mongo\data -install
之後就不須要每次使用CMD打開服務了
測試
打開CMD窗口,
D:\mongodb\bin>mongo.exe
D:\A\mongodb\bin>mongo.exe
MongoDB shell version: 1.8.0
connecting to: test
> db.foo.save({foo:'bar',hello:'world'})
> db.foo.find()
{ "_id" : ObjectId("4d843f4574cc3f74d85eee36"), "foo" : "bar", "hello" : "world"
}
>
說明:
啓動服務時,可使用-port參數指定服務端口,默認是27017
啓動服務時,可使用-logpath參數指定日誌文件,默認控制檯輸出
啓動服務時,可使用-logappend參數指定日誌模式爲追加,默認覆蓋
測試環境:Win2008R2 x64 + MongoDB1.8 + VS2010
首先下個C#的驅動,MongodB提供了各類語言的驅動
C# 驅動下載地址:https://github.com/mongodb/mongo-csharp-driver/downloads
C# 驅動教程:http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial
下載後,將MongoDB.Bson.dll和MongodB.Driver.dll添加到項目引用中
Mongo鏈接字符串:
mongodb://[username:password@][hostname1[:port1], ...][/[database][?options]]
該字符串能夠指定用戶登陸認證和主機列表
MongoServer 建立:
MongoServer Create() 若是隻是鏈接本機,而且本機只啓動了一個服務,直 接調用這個方法,徹底不須要鏈接串
MongoServer Create(MongoConnectionStringBuilder builder)
MongoServer Create(MongoUrl url)
MongoServer Create(string connectionString)
MongoServer Create(Uri uri)
代碼以下: