上次的博文深刻淺出MongoDB(一)NoSQL中咱們已經簡單介紹了一下NoSQL的基本概念,此次咱們來了解一下MongoDB的相關概念。 程序員
MongoDB是一款由C++編寫的高性能、開源、無模式的經常使用非關係型數據庫產品,是非關係數據庫當中功能最豐富、最像關係數據庫的數據庫。它擴展了關係型數據庫的衆多功能,例如:輔助索引、範圍查詢、排序等。 數據庫
MongoDB主要解決的是海量數據的訪問效率問題,它做爲分佈式數據崛起後,使用較多的一款非結構數據庫,必然有其值得稱道之處,它的主要功能特性以下:數組
面向集合的存儲,適合存儲對象及JSON形式的數據。
動態查詢,MongoDB支持豐富的查詢表達式。查詢指令使用JSON形式的標記,可輕易查詢文檔中內嵌的對象及數組。
完整的索引支持,包括文檔內嵌對象及數組。MongoDB的查詢優化器會分析查詢表達式,並生成一個高效的查詢計劃。
查詢監視,MongoDB包含一個監視工具用於分析數據庫操做的性能。
複製及自動故障轉移,MongoDB數據庫支持服務器之間的數據複製,支持主-從模式及服務器之間的相互複製。複製的主要目標是提供冗餘及自動故障轉移。
高效的傳統存儲方式,支持二進制數據及大型對象(如圖片或視頻)。
自動分片以支持雲級別的伸縮性,自動分片功能支持水平的數據庫集羣,可動態添加額外的機器。 緩存
對於MongoDB實際應用來說,是否使用MongoDB須要根據項目的特定特色進行一一甄別,這就要求咱們對MongoDB適用和不適用的場景有必定的瞭解。服務器
根據MongoDB官網的說明,MongoDB的適用場景以下:分佈式
網站實時數據:MongoDB很是適合實時的插入,更新與查詢,並具有網站實時數據存儲所需的複製及高度伸縮性。
數據緩存:因爲性能很高,MongoDB也適合做爲信息基礎設施的緩存層。在系統重啓以後,由MongoDB搭建的持久化緩存層能夠避免下層的數據源過載。
大尺寸、低價值數據存儲:使用傳統的關係型數據庫存儲一些數據時可能會比較昂貴,在此以前,不少時候程序員每每會選擇傳統的文件進行存儲。
高伸縮性場景:MongoDB很是適合由數十或數百臺服務器組成的數據庫。MongoDB的路線圖中已經包含對MapReduce引擎的內置支持。
對象或JSON數據存儲:MongoDB的BSON數據格式很是適合文檔化格式的存儲及查詢。工具
瞭解了MongoDB適用場景以後,還須要瞭解哪些場景下不適合使用MongoDB,具體以下:性能
高度事務性系統:例如銀行或會計系統。傳統的關係型數據庫目前仍是更適用於須要大量原子性復瑣事務的應用程序。
傳統的商業智能應用:針對特定問題的BI數據庫會對產生高度優化的查詢方式。對於此類應用,數據倉庫多是更合適的選擇。
須要複雜SQL查詢的問題。 學習
相信經過上面的說明,你已經大體瞭解了MongoDB的使用規則,須要說明一點的是,MongoDB不單單是數據庫,更多的使用是將MongoDB做爲一個數據庫中間件在實際應用中合理劃分使用細節,這一點對於MongoDB應用來說相當重要!優化
到此爲止,對MongoDB總體概念的解釋就結束了,關於MongoDB更多的學習須要讀者進行相關的實踐,接下來文章我會對MongoDB的常規操做和一些細節性說明進行講解,敬請期待!