MongoDB的適用場景


每個技術或者產品的出現,都有其背景,並不是臆造或者憑空出現的,都是為特定的歷史發展時期解決特定的問題而生。我們來看看橫空出世的MongoDB具體能解決什么問題。

先回顧下NoSQL的概念,NoSQL的常見的解釋一般有兩種,一是不僅僅是SQL(Not Only SQL),二是非關系型(Non-relatonal)。在這里我們理解為非關系型數據庫。非關系型數據庫的種類比較多,主要有MongoDB為代表的文檔存儲型(Document store),Cassandra為代表的列存儲型(Wide column store),Redis為代表的鍵值型(Key-Value store)等,更詳細的信息可以從DB-Engine網站了解。

現在說說MongoDB的情況,MongoDB的名字由來,Humongous Database=MongoDB,中文意思就是巨大無比的數據庫,顧名思義,MongoDB就是為處理大數據而生,以解決海量數據的存儲和高效查詢使用為使命。可以看出,它的使命不是為替代關系型數據庫為目的,而是為對關系型數據庫的補充。

MongoDB的特點:

1、非關系型

既然是非關系型,那就肯定不適用復雜的多文檔(多表)的級聯查詢,如果有這樣的需求,我們還是用關系型數據庫吧,MongoDB不適合。

2、模型自由(Schema-Free)

MongoDB一個數據庫實例可以有多個Collection(集合)(對應關系型數據庫的表Table),一個Collection里有多個Document(對應關系型數據庫的行Row),所謂模型自由,用關系型數據庫的話說,就是表Table的列Column的數量和類型不確定。是不是很意外?確實是這樣的,也就是說在一個Collection里的多個Document,每個Document都可以有任意個屬性,並且每個屬性的類型都可以不一樣。如果我們的程序的數據校驗大部分都依賴於后台數據庫的校驗,用MongoDB肯定會獲得數據錯亂,反過來說,我們可以獲取到巨大的自由,隨時根據需要擴充屬性字段,同時有一個棒棒的后台。

3、副本集和分片集群(Replica Sets and Sharded Clusters)

MongoDB提供副本集和分片集群技術,從先天上支持數據庫的高擴展性和高伸縮性,可以簡單的是使用基於X86的小服務器集群,提供強大的處理能力,而且很容易擴展,目前3.0版本已經支持高達50個副本集。分片集群會讓不停增長的數據始終如一的提供初始的訪問性能,而不會隨着數據的增長,系統的訪問速度越來越慢。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM