使用了一點Mongodb ,以下是自己的一點心得體會:
不提及他的分步式,效率等特性.至少以下一些特點.讓我感覺沒有必要再在普通應用情境再使用關係型資料庫如:SQLServer那樣的資料庫了.
1. 省去了ORM:如NHibernate是一個優秀的ORM,效能也很好.但你得學習NHibernate的運算式文法.像NH那種文檔健全的尚可接受.
我還有一些更可怕的經曆,寫過很多用預存程序查詢後手動映射成對象的代碼.完全肉搏哦.
2. 綠色的:Mongodb,如果你不想註冊成服務,只要啟動那個exe就行了.資料庫和資料庫Data檔案完全拷貝就可以遷移了.
3. GridFS.把檔案直接存在資料庫裡
4. 各種程式設計語言驅動支援.
官方支援的:
C
C# and .NET
C++
Erlang
Haskell
Java
Javascript
Perl
開源社區支援的更多:
不列舉了,很多語言沒聽說過.連小眾的火星語言也都支援了呀.
Mongodb 官方網站: http://www.mongodb.org/downloads
C# 的Mongodb的Driver 版本也很多.本文只介紹mongodb官方網站上Csharp Driver.這個Driver 是目前C#中,使用人數最多的,支援最完善的一個,支援MapReduce,但目前最新版本尚不支援Linq 方式查詢.需要構建Query 運算式來查詢,不那麼直觀,這個有點OUT.具體見:http://www.mongodb.org/display/DOCS/CSharp+Language+Center
1. MongoVUE : 介面較為直觀,易用.但只有商業版,可以試用
2. RockMongo: PHP+NGinx 免費,目前我用過幾個中,最為靠譜一個了.http://code.google.com/p/rock-php/wiki/rock_mongo3.在沒有安裝其他管理工具的時候,Mongodb內建了一個Shell.mongo.exe
- CRUD 操作樣本: (範例程式碼摘的.比我自己寫的好)
串連資料庫 //MongoServer manages access to MongoDatabase
MongoServer mongoServer = MongoServer.Create("mongodb://localhost:27017");
//MongoDatabase used to access MongoCollection instances
_mongoDatabase = mongoServer.GetDatabase("CodeCamp");
string COLLECTION="Artists";
var artist = new Artist() { Name = "The Decembrists" };
//直接插一個對象哦,
_mongoDatabase.GetCollection<Artist>(COLLECTION)
.Insert(artist);
//更新
artist.Name = "The Decemberists";
_mongoDatabase.GetCollection<Artist>(COLLECTION)
.Save(artist);
//更新一批
_mongoDatabase.GetCollection<Artist>(COLLECTION).Update(
Query.EQ("Name", "The Decemberists"),
Update.PushAll("Albums", "Castaways and Cutouts", "Picaresque", "Hazards of Love", "The Crane Wife")
);
更多更複雜的玩法:見
http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial一個詳細介紹的PPT:https://skydrive.live.com/?cid=4c2acd76fe2dcc19&sc=documents&id=4C2ACD76FE2DCC19%21237&retry#!/view.aspx/.Public/NYC-Code-Camp-2011-DotNet-MongoDB.pptx?cid=4c2acd76fe2dcc19&sc=documents
附件的PPT有更多的樣本.裡面提到了一些使用文檔型資料庫物件設計的準則
- 你的對象的模型即是你的資料模型
- 不要怕你的對象資料冗餘
- 但也不要把所有的資料塞一個文檔裡
- 不要怕在文檔裡儲存彙總統計資訊