分布式檔案儲存體的資料庫開源項目MongoDB

來源:互聯網
上載者:User

MongoDB是一個基於分布式檔案儲存體的資料庫開源項目。由C++語言編寫。旨在為WEB應用提供可護展的高效能資料儲存解決方案。

它的特點是高效能、易部署、易使用,儲存資料非常方便。主要功能特性有:

  • 面向集合儲存,易儲存物件類型的資料。
  • 模式自由。
  • 支援動態查詢。
  • 支援完全索引,包含內部對象。
  • 支援查詢。
  • 支援複製和故障恢複。
  • 使用高效的位元據儲存,包括大型物件(如視頻等)。
  • 自動處理片段,以支援雲端運算層次的擴充性
  • 支援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),為提高效率使用記憶體對應檔進行管理。

在Windows下安裝:

1、 到http://www.mongodb.org/display/DOCS/Downloads 下載32位或者64位版本檔案

2、 解壓縮檔案,例如我解壓到E:\Workshop\No SQL\mongodb-win32-i386-1.4.2\

3、 WINDOWS會存放在C:\data\db下。可以在啟動時使用--dbpath參數指定儲存目錄並啟動。建立資料目錄E:\Workshop\No SQL\mongodb-win32-i386-1.4.2\bin\data\db 如:E:\Workshop\NoSQL\mongodb-win32-i386-1.4.2\bin>"E:\Workshop\No SQL\mongodb-win32-i386-1.4.2\bin\mongod.exe" --dbpath .\data\db

啟動資料庫

現在我們就可以使用內建的shell工具來操作資料庫了. (我們也可以使用各種程式設計語言的驅動來使用MongoDB, 內建的shell工具可以方便我們管理資料庫)

“connecting to:” 這個會顯示你正在使用的資料庫的名稱. 想換資料庫的話可以: use mydb

使用.NET操作MongoDB非常簡單,從github.com/samus/mongodb-csharp下載.NET的驅動,在項目中引用驅動的程式集就可以了。

要建立MongoDB的串連,你只要指定要串連到的資料庫就可以。這個資料庫不一定存在,如果不存在,MongoDB會先為你建立這個庫。同時,在串連時你也可以具體指定要串連到的網路地址和連接埠。

string connstr = ConfigurationManager.AppSettings["simple"];

if (String.IsNullOrEmpty(connstr)) throw new ArgumentNullException("Connection string not found.");

Mongo mongo = new Mongo(connstr);

mongo.Connect();

配置

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<appSettings>

<add key="simple" value="Server=localhost:27017"/>

</appSettings>

</configuration>

每個資料庫都存在零個或多個集合,需要時你可以獲得他們的列表:

Database simple = mongo["simple"];

List<string> collectionNames = simple.GetCollectionNames();

要獲得某個特定集合,你可以指定集合的名字,並使用GetCollection()方法或者使Index:

IMongoCollection categories = simple.GetCollection("categories");

IMongoCollection categories = simple["categories"];

當你擷取了這個集合對象,你就可以對資料進行增刪查改之類的操作。

當你獲得了一個集合對象,你就可以把文檔插入到這個對象中。

var names = new string[] { "Bluez", "Jazz", "Classical", "Rock", "Oldies", "Heavy Metal" };

foreach (string name in names)

{

categories.Insert(new Document() { { "name", name } });

}

要尋找我們上一步插入的那個文檔,可以簡單地使用findOne()操作來擷取集合中第一個文檔。這個方法返回一個單一文檔.

var category = categories.FindOne(new Document { { "name", "Bluez" } });

Console.WriteLine("The id findOne" + category["_id"]);

 

為了平時使用方便,把mongod註冊為系統服務 "D:\Workshop\Mongo\mongodb-win32-x86_64-2.0.3\bin\mongod" --dbpath  "D:\Workshop\Mongo\mongodb-win32-x86_64-2.0.3\data"  --logpath  "D:\Workshop\Mongo\mongodb-win32-x86_64-2.0.3\log\mongodblog.log"  --service  --serviceName MongoDB 

#註冊為系統服務修改服務的連接埠 D:\mongodb\bin\mongod –-dbpath “D:\data” –-port 10001

修改註冊表,把—install 改成—service

MongoDB : Windows Service

mongodb小結

Going NoSQL with MongoDB

http://cookbook.mongodb.org/

關於MongoDB在64位伺服器上依然報 mmap failed with out of memory 錯誤的解決方案(附Mysql效能對比測試)

通過 MongoDB 使用 NoSQL

http://msdn.microsoft.com/zh-cn/magazine/ee310029.aspx

http://msdn.microsoft.com/zh-cn/magazine/ff714592.aspx

http://msdn.microsoft.com/zh-cn/magazine/ff798277.aspx

http://www.ibm.com/developerworks/cn/opensource/os-mongodb4/index.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.