1. 程式人生 > >MongoDB ----基於分布式文件存儲的數據庫

MongoDB ----基於分布式文件存儲的數據庫

記錄 span 數據庫區別 指定 dai .net 註意 ability block

參考: 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 字段中。

MongoDB ----基於分布式文件存儲的數據庫