1. 程式人生 > >mongoDB學習筆記(一)

mongoDB學習筆記(一)

介紹 tle 狀態 負載 tutorial dir 基於 管理 集合

說明:  MongoDB由databases組成,database由collections組成,collection由documents組成,document由fileds組成。MongoDB是異步寫數據。

第一章 環境配置


一、Mongodb簡介

  • 功能特點
  • 適用範圍

功能特點

官方網址:http://www.mongodb.org/   
MongoDB是一個基於分布式文件存儲的數據庫開源項目。由C++語言編寫,旨在為WEB應用提供可護展的高性能數據存儲解決方案。  
它的特點是可擴展,高性能,易使用,模式自由,存儲數據非常方便等,主要功能特性有:  
面向文檔存儲:(類JSON數據模式簡單而強大)。 
  1. 高效的傳統存儲方式:支持二進制數據及大型對象(如照片和視頻)。
  2. 復制及自動故障轉移:Mongo數據庫支持服務器之間的數據復制,支持主-從模式及服務器之間的相互復制。
  3. Auto-Sharding自動分片支持雲級擴展性(處於早期alpha階段):自動分片功能支持水平的數據庫集群,可動態添加額外的機器。
  4. 動態查詢:它支持豐富的查詢表達式。查詢指令使用JSON形式的標記,可輕易查詢文檔中內嵌的對象及數組。
  5. 全索引支持:包括文檔內嵌對象及數組。Mongo的查詢優化器會分析查詢表達式,並生成一個高效的查詢計劃。
  6. 支持RUBY,PYTHON,JAVA,C++,PHP等多種語言。

優缺點:

mongodb作為一個很熱門的nosql數據庫有著比較多的優點,大概歸納為以下五點。

(1)、無模式

mongodb是一個文檔型存儲的數據庫,每一行數據都是一個文檔,每一個文檔中的字段可以不一致,個數也可以不相同,而且是一個以bson方式存儲的文檔。bson: short for Bin-ary JSON

(2)、高性能

mongodb的高性能是怎麽實現的呢?

這個主要依靠2點來解決(當然還有很多其它的)。第一點是mongodb的存儲空間是預先分配的。以64位機器為例,首先分配64m,以0填充,然後每次文件空間大小翻倍,直到2G,然後每次分配2G。預先分配的好處是不需要每次存儲的時候都分配空間,加快了存儲的效率。第二點是mongodb的內存映射機制。mongodb首先將數據寫到內存,然後異步寫道硬盤上(如果是非安全模式的話)。mongodb是不管理內存的,它將這份工作交給了操作系統。

(3)、易擴展

mongodb集群是很容易擴展的(添加刪除節點簡單),而且可以支持數據的分片。(後面的章節會詳細的介紹怎麽分片以及怎麽擴展)

(4)、易管理

mongodb的管理幾乎都是自動的。自動故障轉移:當一個分片中的primary機器down後,其它機器會自動選舉,選出一臺機器當primary。自動負載均衡:當兩個分片的數據相差很大時,集群會自動將一部分數據轉移到數據少的分片上。

(5)、多功能

mongodb的功能很多,例如:索引,聚合,分布式的文件存儲,js存儲過程,GridFS文件存儲,定容集合等。

優點說到這,mongodb同樣也有著它的限制或缺點,主要是下面兩點。

(1)、mongodb占用存儲空間大。

這主要是由三個因素決定的。第一,mongodb的空間預分配方式,這樣會讓mongodb最多浪費不超過2G+2G文件大小的空間。第二,mongodb的字段名占用,即使是相同的字段,mongodb也會在每一個文檔中都存儲,這裏會浪費極大的空間。第三,mongodb刪除數據並不會釋放空間,而只是將空間記錄為刪除狀態以便重用。

(2)、mongodb沒有事務模式,所以事務要求嚴格的系統慎用。

適用範圍

適用場景:

  1. 適合實時的插入,更新與查詢,並具備應用程序實時數據存儲所需的復制及高度伸縮性。
  2. 適合作為信息基礎設施的持久化緩存層。
  3. 適合由數十或數百臺服務器組成的數據庫。因為Mongo已經包含對MapReduce引擎的內置支持。
  4. Mongo的BSON數據格式非常適合文檔化格式的存儲及查詢。

不適用場景:

  1. 高度事務性的系統。
  2. 傳統的商業智能應用。
  3. 復雜的SQL查詢。

二、Mongodb下載與安裝

  • 下載地址
  • 安裝步驟

下載地址

http://www.mongodb.org/downloads,選擇相應的版本下載

安裝步驟

  1. 在(C/D/E/F)盤新建文件夾MongoDB。
  2. 解壓下載的文件,將bin目錄拷貝到文件夾MongoDB。
  3. 在文件夾MongoDB下新建文件夾data,在文件夾data下新建文件夾db和log(db下放的是數據庫文件,log下方的是windows日誌,後面將講解)。
  4. 執行命令:【mongod -auth --dbpath "E:\mongodb\data\db"】將mongodb的數據庫文件創建到E:\mongodb\data\db 目錄下,此時數據庫就已啟動。如圖:

三、Mongodb服務管理

  • window服務註冊
  • 服務開閉

window服務註冊

註意:一定要以管理員的身份打開cmd。具體請參考官網說明http://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/

使用命令【mongod --install --serviceName MongoDB --serviceDisplayName MongoDB --logpath E:\mongodb\data\log\mongodb.log --dbpath E:\MongoDB --directoryperdb】註冊window服務。

服務開閉

使用命令【net stop mongodb】關閉mongodb服務。
使用命令【net start mongodb】啟動mongodb服務。

mongoDB學習筆記(一)