首頁  >  文章  >  資料庫  >  詳解MongoDB之特性、原理、使用情境、應用案例

詳解MongoDB之特性、原理、使用情境、應用案例

藏色散人
藏色散人轉載
2020-08-19 11:06:267046瀏覽

詳解MongoDB之特性、原理、使用情境、應用案例

推薦:《MongoDB影片教學

#簡介

MongoDB是基於分散式文件儲存的資料庫。由C 語言編寫。旨在為WEB應用提供可擴展的高效能資料儲存解決方案。

MongoDB是一個介於關聯式資料庫和非關聯式資料庫之間的產品,是非關聯式資料庫當中功能最豐富,最像關聯式資料庫的。他支援的資料結構非常鬆散,是類似json的bson格式,因此可以儲存比較複雜的資料類型。 Mongo最大的特點是他支援的查詢語言非常強大,其語法有點類似於物件導向的查詢語言,幾乎可以實現類似關係型資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。

特點

它的特點是高效能、易於部署、易於使用,儲存資料非常方便。主要功能特性有:

*面向集合存儲,易存儲物件類型的資料。

*模式自由。

*支援動態查詢。

*支援完全索引,包含內部物件。

*支援查詢。

*支援複製和故障復原。

*使用高效的二進位資料存儲,包括大型物件(如視訊等)。

*自動處理碎片,以支援雲端運算層次的擴展性。

*支援RUBY,PYTHON,JAVA,C ,PHP,C#等多種語言。

*檔案儲存格式為BSON(一種JSON的擴充)。

*可透過網路存取。

使用原則

       所謂「面向集合」(Collection-Oriented),意思是資料被分組儲存在資料集中,稱為一個集合(Collection)。每個集合在資料庫中都有一個唯一的識別名,並且可以包含無限數目的文件。集合的概念類似關係型資料庫(RDBMS)裡的表格(table),不同的是它不需要定義任何模式(schema)。 Nytro MegaRAID技術中的快閃記憶體快取演算法,能夠快速辨識資料庫內大數據集中的熱數據,提供一致的效能改進。

       模式自由(schema-free),表示對於儲存在mongodb資料庫中的文件,我們不需要知道它的任何結構定義。如果需要的話,你完全可以把不同結構的檔案儲存在同一個資料庫裡。

       儲存在集合中的文檔,被儲存為鍵-值對的形式。鍵用於唯一標識一個文檔,為字串類型,而值則可以是各種複雜的文件類型。我們稱這種儲存形式為BSON(Binary Serialized Document Format)。

MongoDB已經在多個網站部署

主要場景:

1)網站即時資料處理。它非常適合即時的插入、更新與查詢,並具備網站即時資料儲存所需的複製及高度伸縮性。

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

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

不適用的場景如下: 

1)要求高度事務性的系統。

2)傳統的商業智慧應用。

3)複雜的跨文件(表)級聯查詢。

系統介紹

       分散式檔案系統(Distributed File System)是指檔案系統管理的實體儲存資源不一定直接連接在本機節點上,而是透過電腦網路與節點相連。分散式檔案系統的設計是基於客戶機/伺服器模式。一個典型的網路可能包括多個供多用戶存取的伺服器。另外,對等特性允許一些系統扮演客戶機和伺服器的雙重角色。

        HBase是一個分散式的、以列導向的開源資料庫,該技術來自Fay Chang 所撰寫的Google論文「Bigtable:一個結構化資料的分散式儲存系統。

   Data Mart是基於自有技術研發的一款資料儲存、資料處理的軟體。Yonghong Data Mart的分散式檔案儲存系統(ZDFS)是在Hadoop HDFS基礎上進行的改造和擴展,將伺服器叢集內所有節點上儲存的文件統一管理和儲存。

適用場景

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

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

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

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

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

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

不適場景

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

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

● 需要SQL 的問題。

應用案例

        在下列出一些公司MongoDB的實際應用:

    •        數十億筆記錄。
    • FourSquare,基於位置的社群網站,在Amazon EC2的伺服器上使用MongoDB分享資料。
      Shutterfly,以互聯網為基礎的社會和個人出版服務,使用MongoDB的各種持久性資料儲存的要求。
      bit.ly, 一個基於Web的網址縮短服務,使用MongoDB的儲存自己的資料。
      spike.com,一個MTV網路的聯營公司, spike.com使用MongoDB的。
      Intuit公司,一個為小型企業和個人的軟體和服務供應商,為小型企業使用MongoDB的追蹤使用者的資料。
      sourceforge.net,資源網站查找,創建和發布開源軟體免費,使用MongoDB的後端儲存。
      etsy.com ,一個購買和出售手工製作物品網站,使用MongoDB。
      紐約時報,領先的線上新聞入口網站之一,使用MongoDB。
      CERN,著名的粒子物理研究所,歐洲核子研究中心大型強子對撞機的資料使用MongoDB。

以上是詳解MongoDB之特性、原理、使用情境、應用案例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除