1. 程式人生 > >MongoDB ----基於分散式檔案儲存的資料庫

MongoDB ----基於分散式檔案儲存的資料庫

參考: http://www.cnblogs.com/huangxincheng/category/355399.html

http://www.cnblogs.com/daizhj/category/260889.html

MongDB是一個高效能,開源,無模式的文件型NosQL資料庫。

主要功能特性:

1.檔案儲存格式BSON(一種json的擴充套件) 
2.模式自由 
資料格式不受限了表的結構 
3.支援動態查詢 
4.支援完全索引 
5.支援複製(其主從複製)和故障恢復 
6.使用高效的二進位制資料儲存,包括大型物件 
7.自動處理碎片,以支援雲端計算層次的擴充套件。 
8.支援Java、Ruby、Python、C++、PHP等多種語言 
9.內部支援Javascript

MongoDB的優勢

1.查詢速度快 
2.高併發。可以達到2萬個併發。 
3.高容量。支援10TB意思的資料量 
MongoDB使用場景 
1.網站資料 
2.快取 
3.大尺寸、低價值的資料 
4.高伸縮的場景 
5.用於物件以及Json資料儲存

MongoDB限制

1.在32位作業系統上,不支援大於2.5G的資料 
2.單個檔案大小限制16M 
3.高度事務的系統 
4.傳統商業智慧應用

MongoDB與其他資料庫區別

這裡寫圖片描述

MongoDB安裝

在這裡,主要講解的是win下安裝,關於Linux下安裝,隨後會新增上。 
下載網址:官方網站(

https://www.mongodb.org/downloads/#production) 
在這裡使用的是win32

資料模型

一個MongoDB 例項可以包含一組資料庫,一個DataBase 可以包含一組Collection(集合),一個集合可以包含一組Document(文件)。一個Document包含一組field(欄位),每一個欄位都是一個key/value pair。

key: 必須為字串型別。

value:可以包含如下型別。

● 基本型別,例如,string,int,float,timestamp,binary 等型別。

● 一個document。

● 陣列型別。

摺疊編輯本段適用場景

MongoDB 的主要目標是在鍵/值儲存方式(提供了高效能和高度伸縮性)和傳統的RDBMS 系統(具有豐富的功能)之間架起一座橋樑,它集兩者的優勢於一身。根據官方網站的描述,Mongo 適用於以下場景。

● 網站資料:Mongo 非常適合實時的插入,更新與查詢,並具備網站實時資料儲存所需的複製及高度伸縮性。

● 快取:由於效能很高,Mongo 也適合作為資訊基礎設施的快取層。在系統重啟之後,由Mongo 搭建的持久化快取層可以避免下層的資料來源過載。

● 大尺寸、低價值的資料:使用傳統的關係型資料庫儲存一些資料時可能會比較昂貴,在此之前,很多時候程式設計師往往會選擇傳統的檔案進行儲存。

● 高伸縮性的場景:Mongo 非常適合由數十或數百臺伺服器組成的資料庫,Mongo 的路線圖中已經包含對MapReduce 引擎的內建支援。

● 用於物件及JSON 資料的儲存:Mongo 的BSON 資料格式非常適合文件化格式的儲存及查詢。

MongoDB 的使用也會有一些限制,例如,它不適合於以下幾個地方。

● 高度事務性的系統:例如,銀行或會計系統。傳統的關係型資料庫目前還是更適用於需要大量原子性複雜事務的應用程式。

● 傳統的商業智慧應用:針對特定問題的BI 資料庫會產生高度優化的查詢方式。對於此類應用,資料倉庫可能是更合適的選擇。

● 需要SQL 的問題。

 

建立資料目錄

MongoDB將資料目錄儲存在 db 目錄下。但是這個資料目錄不會主動建立,我們在安裝完成後需要建立它。請注意,資料目錄應該放在根目錄下((如: C:\ 或者 D:\ 等 )。

在本教程中,我們已經在 C 盤安裝了 mongodb,現在讓我們建立一個 data 的目錄然後在 data 目錄裡建立 db 目錄。

c:\>cd c:\

c:\>mkdir data c:\>cd data c:\data>mkdir db c:\data>cd db c:\data\db>

你也可以通過 window 的資源管理器中建立這些目錄,而不一定通過命令列。

 


命令列下執行 MongoDB 伺服器

為了從命令提示符下執行 MongoDB 伺服器,你必須從 MongoDB 目錄的 bin 目錄中執行 mongod.exe 檔案。

C:\mongodb\bin\mongod --dbpath c:\data\db

如果執行成功,會輸出如下資訊:

2015-09-25T15:54:09.212+0800 I CONTROL Hotfix KB2731284 or later update is not installed, will zero-out data files 2015-09-25T15:54:09.229+0800 I JOURNAL [initandlisten] journal dir=c:\data\db\j ournal 2015-09-25T15:54:09.237+0800 I JOURNAL [initandlisten] recover : no journal fil es present, no recovery needed 2015-09-25T15:54:09.290+0800 I JOURNAL [durability] Durability thread started 2015-09-25T15:54:09.294+0800 I CONTROL [initandlisten] MongoDB starting : pid=2 488 port=27017 dbpath=c:\data\db 64-bit host=WIN-1VONBJOCE88 2015-09-25T15:54:09.296+0800 I CONTROL [initandlisten] targetMinOS: Windows 7/W indows Server 2008 R2 2015-09-25T15:54:09.298+0800 I CONTROL [initandlisten] db version v3.0.6 ……

連線MongoDB

我們可以在命令視窗中執行 mongo.exe 命令即可連線上 MongoDB,執行如下命令:

C:\mongodb\bin\mongo.exe

配置 MongoDB 服務

管理員模式開啟命令列視窗

建立目錄,執行下面的語句來建立資料庫和日誌檔案的目錄

mkdir c:\data\db
mkdir c:\data\log

建立配置檔案

建立一個配置檔案。該檔案必須設定 systemLog.path 引數,包括一些附加的配置選項更好。

例如,建立一個配置檔案位於 C:\mongodb\mongod.cfg,其中指定 systemLog.path 和 storage.dbPath。具體配置內容如下:

systemLog:
    destination: file
    path: c:\data\log\mongod.log storage: dbPath: c:\data\db

安裝 MongoDB服務

通過執行mongod.exe,使用--install選項來安裝服務,使用--config選項來指定之前建立的配置檔案。

C:\mongodb\bin\mongod.exe --config "C:\mongodb\mongod.cfg" --install

要使用備用 dbpath,可以在配置檔案(例如:C:\mongodb\mongod.cfg)或命令列中通過 --dbpath 選項指定。

如果需要,您可以安裝 mongod.exe 或 mongos.exe 的多個例項的服務。只需要通過使用 --serviceName 和 --serviceDisplayName 指定不同的例項名。只有當存在足夠的系統資源和系統的設計需要這麼做。

啟動MongoDB服務

net start MongoDB

關閉MongoDB服務

net stop MongoDB

移除 MongoDB 服務

C:\mongodb\bin\mongod.exe --remove

命令列下執行 MongoDB 伺服器 和 配置 MongoDB 服務 任選一個方式啟動就可以。

任選一個操作就好


MongoDB 後臺管理 Shell

如果你需要進入MongoDB後臺管理,你需要先開啟mongodb裝目錄的下的bin目錄,然後執行mongo.exe檔案,MongoDB Shell是MongoDB自帶的互動式Javascript shell,用來對MongoDB進行操作和管理的互動式環境。

當你進入mongoDB後臺後,它預設會連結到 test 文件(資料庫):

> mongo
MongoDB shell version: 3.0.6 connecting to: test ……

由於它是一個JavaScript shell,您可以執行一些簡單的算術運算:

> 2 + 2 4 >

db 命令用於檢視當前操作的文件(資料庫):

> db
test
>

插入一些簡單的記錄並查詢它:

> db.runoob.insert({x:10}) WriteResult({ "nInserted" : 1 }) > db.runoob.find() { "_id" : ObjectId("5604ff74a274a611b0c990aa"), "x" : 10 } >

第一個命令將數字 10 插入到 runoob 集合的 x 欄位中。