MongoDB 安裝及C#開發測試
MongoDB安裝及C#開發測試
(一) MongoDB簡介
MongoDB是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。他支持的數據結構非常松散,是類似json的bjson格式,因此可以存儲比較復雜的數據類型。 Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。
它的特點是高性能、易部署、易使用,存儲數據非常方便。主要功能特性有:
- 面向集合存儲,易存儲對象類型的數據。
- 模式自由。
- 支持動態查詢。
- 支持完全索引,包含內部對象。
- 支持查詢。
- 支持復制和故障恢復。
- 使用高效的二進制數據存儲,包括大型對象(如視頻等)。
- 自動處理碎片,以支持云計算層次的擴展性
- 支持RUBY,PYTHON,JAVA,C++,PHP等多種語言。
- 文件存儲格式為BSON(一種JSON的擴展)
- 可通過網絡訪問
所謂“面向集合”(Collenction-Orented),意思是數據被分組存儲在數據集中,被稱為一個集合(Collenction)。每個 集合在數據庫中都有一個唯一的標識名,并且可以包含無限數目的文檔。集合的概念類似關系型數據庫(RDBMS)里的表(table),不同的是它不需要定 義任何模式(schema)。
模式自由(schema-free),意味著對于存儲在mongodb數據庫中的文件,我們不需要知道它的任何結構定義。如果需要的話,你完全可以把不同結構的文件存儲在同一個數據庫里。
存儲在集合中的文檔,被存儲為鍵-值對的形式。鍵用于唯一標識一個文檔,為字符串類型,而值則可以是各中復雜的文件類型。我們稱這種存儲形式為BSON(Binary Serialized dOcument Format)。
MongoDB服務端可運行在Linux、Windows或OS X平臺,支持32位和64位應用,默認端口為27017。推薦運行在64位平臺,因為MongoDB
在32位模式運行時支持的最大文件尺寸為2GB。
MongoDB把數據存儲在文件中(默認路徑為:/data/db),為提高效率使用內存映射文件進行管理。
(二) MongoDB下載
下載地址為:
可選擇window 32位mongodb,
也可以選擇window 64位mongodb,
32-bit mongodb window 下載地址:
http://downloads.mongodb.org/win32/mongodb-win32-i386-2.0.2.zip
64-bit mongodb window 下載地址:
http://downloads.mongodb.org/win32/mongodb-win32-x86_64-2.0.2.zip
其它:Linux 32-bit,Linux 64-bit,etc...
本文主要針對window操作系統上安裝mongodb分布式文檔數據庫系統,
下載后為zip壓縮文件,然后解壓后,在里面有一個bin目錄,里面就是運行的系統文件
注意:32位的mongodb數據庫最多只能為2G的限制,這是由32位操作系統的內存尋址空間能力確定的,
所在要存儲海量數據庫數據必須選擇64位操作系統安裝64位mongodb數據庫
建立啟動的批處理文件:
1.命令行方式啟動服務器端
echo "bat_setupService.bat"
mongod.exe -dbpath D:\Mongo_Service\db\
2 命令行方式啟動客戶端
echo "bat_setupClient.bat"
mongo.exe cclove
3安裝為window服務方式
echo "bat_installService.bat "
mongod --install --serviceName MongoDB --logpath D:\MongoDB_Service\MongoDB.Log --dbpath D:\MongoDB_Service\db --directoryperdb
然后啟動window服務MongoDB就開始運行了
(四)MongoDB C#測試代碼
public class TestClass:IDisposable { private string connectionstring = ""; private MongoServer mserver = null; public TestClass() { string host = ""; host = "192.168.1.221"; //64位mongodb //host = "192.168.1.232"; //32位mongodb int port = 27017; //connectionstring="Servers=IP:27017;ConnectTimeout=30000;ConnectionLifetime=300000;MinimumPoolSize=8;MaximumPoolSize=2000"; MongoConnectionStringBuilder mcsb = new MongoConnectionStringBuilder(); mcsb.Server = new MongoServerAddress(host, port); mcsb.ConnectTimeout =new TimeSpan(30000); mcsb.MaxConnectionLifeTime = new TimeSpan(300000); mcsb.MinConnectionPoolSize = 8; mcsb.MaxConnectionPoolSize = 2000; //connectionstring="mongodb://192.168.3.10"; //64位mongodb //connectionstring = "mongodb://192.168.1.221"; // //32位mongodb //connectionstring = "mongodb://192.168.1.232:27017"; //創建一個Mongo服務對象mserver this.mserver = MongoServer.Create(mcsb);//this.connectionstring); } //測試代碼: //插入測試函數: public int mongodbconn(int couts)// test insert { try { //獲取一個Mongo數據庫對象db MongoDatabase db = this.mserver.GetDatabase("test"); //從Mongo數據庫對象從獲取Mongo集合(即表)名稱為Test的集合(或叫表) MongoCollection<BsonDocument> mc = db.GetCollection<BsonDocument>("test"); //刪除原有數據 mc.RemoveAll(); //記錄開始寫入時間 DateTime begintime = DateTime.Now; writefile("bgn: "+begintime.ToString()); int i; for ( i = 1; i <= couts; i++) { BsonDocument bd = new BsonDocument { {"_id",i}, {"id",i}, { "name", "c#" }, { "title", "testing inert data "+i } }; mc.Insert(bd); DateTime midtime = DateTime.Now; if((i%10)==0) { writefile("row: "+i+" value="+bd.ToString()); TimeSpan tso = midtime.Subtract(begintime); string stimeo = tso.TotalMilliseconds.ToString(); writefile("mid: " + stimeo+" ms"); } } //記錄結束寫入時間及用時多少ms DateTime endtime = DateTime.Now; writefile("end: "+endtime.ToString()); TimeSpan ts = endtime.Subtract(begintime); string stime=ts.TotalMilliseconds.ToString(); writefile("use " + stime + " ms to insert "+i+" rows"); return 1; } catch(Exception ex) { MessageBox.Show(ex.Message); return 0; } } //日志函數: public static bool writefile(string str) //logifile { string startpath = Application.StartupPath; string logpath=startpath+"\\mongodb.log"; StreamWriter sw = new StreamWriter(logpath, true); sw.WriteLine(str); sw.Close(); return true; } //查詢測試函數: public bool query(int type,string type1value,string typeothervalue) { try { string sql; long counts=0; MongoDatabase db = mserver.GetDatabase("test"); MongoCollection<BsonDocument> mc = db.GetCollection<BsonDocument>("test"); if (type == 1) { sql = type1value; } else { sql = typeothervalue; } DateTime qtime = DateTime.Now; var query = new QueryDocument("_id",Convert.ToInt32(sql)); writefile("begin: " + qtime.ToString()); foreach (BsonDocument emp in mc.Find(query).SetLimit(100)) { counts = counts + 1; string rename = emp["name"].AsString; string revalue = emp["title"].AsString; writefile(rename + " "+revalue+" value="+emp.ToString()); } DateTime etime = DateTime.Now; TimeSpan ts = etime.Subtract(qtime); string stime = ts.TotalMilliseconds.ToString(); writefile("use " + stime + " ms to query "+counts+"data rows"); return true; } catch (Exception ex) { MessageBox.Show(ex.Message); return false; } } #region IDisposable 成員 public void Dispose() { if (this.mserver != null) { this.mserver.Disconnect(); this.mserver = null; } } #endregion }調用引類的方法
public partial class Form1 : Form { public Form1() { InitializeComponent(); } //連接mongoDb 服務器 事件 private void btn_ConnMongoDb_Click(object sender, EventArgs e) { TestClass test = new TestClass(); test.mongodbconn(50); test.query(1, "1", "2"); test.Dispose(); MessageBox.Show("連接,插入,查詢操作完畢!", "提示"); } }
需要在C#開發的項目工程中添加兩個.Net的組件dll
MongoDB.Bson
MongoDB.Driver
這個需要安裝MongoDB的C#驅動程序
需到下面的網址去下載:
我下載的是這個版本:CSharpDriver-1.3.1.4349.msi
下載下來安裝后,就可以通過C#工程中的引用/Net組件
引用這兩個組件了
MongoDB.Bson
MongoDB.Driver
------the----end-------create date:2012-02-22
creater:hsg
本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!