MongoDB初體驗-C#
我覺得我們把關系型數據庫當作鐵榔頭一樣頻繁使用的工具了,在軟件開發過程中遇到的各種數據存儲幾乎都離不開關系型數據庫(譯者注:mysql,ms sql等).經過數年設計優化,性能、安全性以及可管理性的提升,現在的關系型數據庫顯然已是軟件工程進程中的非凡成就。然而關系型數據庫在某些數據存儲應用場景上卻并非最佳選擇。
之前的幾個月我一直在關注”no-sql”數據存儲(譯者注:大概指的就是非關系統數據庫)的發展。我想參加一個No-SQL的會議(nosqleast-他們的口號是:select fun,profit from real_world where relational=false),在此之前不得不等待Matt.P(譯者注:可能是會議的組織成員)的咨詢結果。如下是一些關于no-sql這個東東的不錯的文章:
- Dare Obasanjo: Building Scalable Databases: Denormalization, the NoSQL Movement and Digg
- Eric Florenzano: My Thoughts on NoSQL
我想親自體驗一下文檔型數據庫,于是選擇了MongoDB,從它的FAQ頁面上可窺其一斑:
MongoDB是一種文檔型的數據庫管理系統。你可以把它當作是持久對象的儲物所,它既不是關系型的,也不像“Amazon SimpleDB”或“Google BigTable”一樣是“面向數據表”的。如果此前你在你的程序中使用過ORM工具,你將會發現MongoDB提供的api很類似,容易上手但功能更強。
我選擇MongoDB是因為它看起來配置簡單易用..,如下:
1,從MongoDB上下載并解壓文件
2,建個文件:c:\data\db (默認數據存儲目錄–可以更改)
3,運行mongod.exe
至于在程序里面與mongoDB進行通訊,我使用mongodb-csharp。你可以直接下載源碼壓縮包,也可以使用git客戶端如Git On Windows(譯者注:git為一種流行的源碼管理方式)從github網站上拷貝源碼。使用git雖然聽起來有點麻煩,但上手后便會非常方便,而且通過git獲取最新源碼是非常快的。下載好源碼后用vs編譯一下得到一個叫MongoDB.Driver的程序集,有了這個程序集便可以在你的c#項目中使用MongoDB了:
在程序中鏈接到MongoDB如下:
var mongo = new Mongo(); mongo.Connect(); var db = mongo.getDB("movieReviews");
我在本地電腦上使用MongoDB,它監聽的是安裝時設定的默認端口,不需要特別的安全設置。所以鏈接MongoDB的代碼才如此簡單,上面的代碼中,我獲取一個叫“movieReviews”的數據庫,如果它不存在的話MongoDB會自動創建一個。我不需要建表,也不用設置主鍵什么的。使用文檔型數據庫和關系型數據庫的感覺就猶如使用動態語言和靜態語言一樣的感覺。(譯者注:可以把js當作是動態語言,c#當成是動態語言)。
下一步就是獲取或創建一個列表(collection),并且為這個列表添加文檔(document)啦:
var movies = db.GetCollection("movies");
var movie = new Document();
movie["title"] = "Star Wars";
movie["releaseDate"] = DateTime.Now;
movies.Insert(movie);
在mongoDB里面,列表類似關系型數據庫世界中的表,不同的是列表不是有行和列組成的,而是由二進制json文檔組成,所以這種文檔可以包含任何東西(譯者注:可以序列化成二進制Json)-它們是非表框架型的,至于如何查詢和索引數據,MongoDB知道該如何去做。
var spec = new Document(); spec["title"] = "Star Wars"; var starWars = movies.FindOne(spec);
數據存儲的適當抽象加上一點的LINQ特性,文檔型數據庫可能成為.NET應用的一大亮點。如果有.net的動態語言運行時內置支持那就更好了。
原文地址:http://odetocode.com/Blogs/scott/archive/2009/10/13/experimenting-with-mongodb-from-c.aspx

浙公網安備 33010602011771號