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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!