淺析MongoDB及其C#驅動的操作步驟

來源:互聯網
上載者:User

1:簡單介紹

MongoDB是一款分布式文檔資料庫,支援類似關型資料庫的主從結構,文檔以二進位Json形式儲存,無鎖,無事務,有索引。

2:安裝步驟

第一步:下載程式集http://www.mongodb.org/downloads

第二部:解壓並抽取相關的bin目錄到C:\Mongo下這個任意選擇) ,並在該目錄下建db檔案夾。

第三部:開啟CMD視窗,進入到C:\Mongo\bin目錄下,運行mongod.exe --dbpath="c:\Mongo\db"

第四步:再開CMD視窗保持以前的視窗不關閉)運行mongo.exe。在這個視窗你可以執行簡單的命令,以下簡單列出幾個

 
  1. > j = { name : "mongo" };  
  2. {"name" : "mongo"}  
  3. > t = { x : 3 };  
  4. { "x" : 3  }  
  5. > db.things.save(j);  
  6. > db.things.save(t);  
  7. > db.things.find();  
  8. { "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "mongo" }  
  9. { "_id" : ObjectId("4c2209fef3924d31102bd84b"), "x" : 3 }  
  10. >  
  11. > for (var i = 1; i <= 20; i++) db.things.save({x : 4, j : i});  
  12. > db.things.find();  
  13. > var cursor = db.things.find();  
  14. > while (cursor.hasNext()) printjson(cursor.next());  
  15. > db.things.find().forEach(printjson);  
  16. > var cursor = db.things.find();  
  17. > printjson(cursor[4]);  
  18. > var arr = db.things.find().toArray();  
  19. > arr[5];  
  20. > db.things.find({name:"mongo"}).forEach(printjson);  
  21. > db.things.find({x:4}, {j:true}).forEach(printjson);  
  22. > printjson(db.things.findOne({name:"mongo"}));  
  23. > db.things.find().limit(3); 

3:C#版的驅動

以下列出幾款C#版的驅動,並作簡單介紹。

第一款:mongodb-csharp 項目地址:http://github.com/samus/mongodb-csharp

簡單介紹:該驅動是比較全的驅動,更新隨度非常快,有人已經應用到項目中去,並且表現非常好。目前他們的團隊正在致力於串連管理這部分功能的擴充例如:自動重連,串連池等等。

第二款:mongodb-net 項目地址:http://code.google.com/p/mongodb-net/

簡單介紹:該開發還在進行中,有些功能還沒有實現

第三款:MongoDB.Emitter 項目地址:http://bitbucket.org/gwbasic/mongodb.emitter/

簡單介紹:提供了強型別支援

第四款:CSMongo 項目地址:http://somewebguy.wordpress.com/2010/02/21/building-a-mongo-driver-part-1/

簡單介紹:實現了部分功能,並且沒有可下載的代碼。但是你可以看他的部落格以瞭解這種驅動的思想。

第五款:simple-mongodb 項目地址:http://code.google.com/p/simple-mongodb/

簡單介紹:沒有提供原始碼,以JSon為核心。

最後一個是對第一款某些地方的增強,地址http://deserialized.com/convert-csharp-classes-to-and-from-mongodb-documents-automatically-using-net-reflection

第六款:NoRM 項目地址:http://github.com/atheken/NoRM

介紹:增強了第一種,支援強型別。

延伸閱讀

 

MongoDB Logo

Mongo是一個高效能,開源,無模式的文檔型資料庫,它在許多情境下可用於替代傳統的關係型資料庫或鍵/值儲存方式。Mongo使用C++開發,提供了以下功能:

◆面向集合的儲存:適合儲存物件及JSON形式的資料。

◆動態查詢:Mongo支援豐富的查詢運算式。查詢指令使用JSON形式的標記,可輕易查詢文檔中內嵌的對象及數組。

◆完整的索引支援:包括文檔內嵌對象及數組。Mongo的查詢最佳化工具會分析查詢運算式,並產生一個高效的查詢計劃。

◆查詢監視:Mongo包含一個監視工具用於分析資料庫操作的效能。

◆複製及自動容錯移轉:Mongo資料庫支援伺服器之間的資料複製,支援主-從模式及伺服器之間的相互複製。複製的主要目標是提供冗餘及自動容錯移轉。

◆高效的傳統儲存方式:支援位元據及大型物件如照片或圖片)。

◆自動分區以支援雲層級的伸縮性處於早期alpha階段):自動分區功能支援水平的資料庫叢集,可動態添加額外的機器。

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等平台的驅動程式。

相關文章

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.