MongoDB整理筆記の走進MongoDB世界

來源:互聯網
上載者:User

標籤:

    本人學習mongodb時間不長,但是鑒於工作的需要以及未來發展的趨勢,本人想更深層的認識mongodb底層的原理以及更靈活的應用mongodb,邊學邊工作實踐。

  mongodb屬於nosql中算是最熱門的資料庫,所以我們不妨對nosql有一個最基本的瞭解:

    

    NoSQL,全稱是”Not Only Sql”,指的是非關係型的資料庫。NoSQL 被我們用得最多的當數key-value 儲存,當然還有其他的文檔型的、列儲存、圖型資料庫、xml 資料庫等。與關係型資料庫相比,關係型資料庫給你強加了太多東西。它們要你強行修改對象資料,以滿足資料庫系統的需要,而非關係型資料“只是給你所需要的”!
    目前,大型互連網公司中,比較成功的案例有新浪微博的redis、google的bigtable以及amazon的simpleDB。
    為什麼選擇nosql?因為它適應時代發展的要求。
    隨著互連網web 2.0網站的興起,非關係型資料庫現在成為了一個極其熱門的新領域,非關係型資料庫產品發展非常迅速,而傳統關係型資料庫在應付 web 2.0網站,特別是超大規模和高並發的SNS類型的web 2.0純動態網站就顯得力不從心,暴露了很多難以克服的問題。
    以下幾個問題,比較突出: 

  • high performance 資料庫高並發讀寫,web2.0網站要根據使用者個人化資訊來即時產生動態網頁面和提供動態資訊,所以基本上無法使用動態網頁面的靜態化技術,因此資料庫並發負載非常高,往往要達到每秒上萬次讀寫請求。關係型資料庫應付上萬次SQL查詢還勉強頂得住,但是應付上萬次SQL寫資料,硬碟IO就已經無法忍受了。
  • huge storage 對海量資料的高效率儲存和訪問的需求
  • high scalability&&high availability 對資料庫的高可擴充性和高可用性的需求,在基於web 的架構當中,資料庫是最難進行橫向擴充的,當一個應用系統的使用者量和訪問量與日俱增的時候,你的資料庫卻沒有辦法像web server 和app server 那樣簡單的通過添加更多的硬體和服務節點來擴充性能和負載能力。對於很多需要提供24 小時不間斷服務的網站來說,對資料庫系統進行升級和擴充是非常痛苦的事情,往往需要停機維護和資料移轉,代價昂貴。

    對於web2.0 網站來說,關係型資料庫在這個舞台上無法施展它鋒利的一面,有點英雄無用武之地。

  • 資料庫事務一致性需求,很多web 即時系統並不要求嚴格的資料庫事務,對讀一致性的要求很低,有些場合對寫一致性要求也不高。因此資料庫交易管理成了資料庫高負載下一個沉重的負擔。
  • 資料庫的寫即時性和讀即時性需求,對關聯式資料庫來說,插入一條資料之後立刻查詢,是肯定可以讀出來這條資料的,但是對於很多web 應用來說,並不要求這麼高的即時性。
  • 對複雜的SQL查詢,特別是多表關聯查詢的需求,任何大資料量的web 系統,都非常忌諱多個大表的關聯查詢,以及複雜的資料分析類型的複雜SQL 報表查詢,特別是SNS 類型的網站,從需求以及產品設計角度,就避免了這種情況的產生。往往更多的只是單表的主鍵查詢,以及單表的簡單條件分頁查詢,SQL 的功能被極大的弱化了。

    下面開始,正式瞭解mongodb。

    

    mongodb是一種介於關係型資料庫和菲關聯式資料庫之間的產品,是非關係型資料當中功能最豐富,最像關聯式資料庫的。它支援的資料結構非常鬆散,是類似json的bson格式,因此可以儲存比較複雜的資料類型。mongodb最大的特點是支援的查詢語言非常強大,其文法有點類似物件導向的查詢語言,幾乎可以實作類別似關係型資料庫單表查詢絕大部分功能,而且還支援對資料建立索引。它是一個面向集合的,模式自由的文檔行資料庫。
    特徵:

  • 面向集合(Collenction-Orented),意思是資料被分組儲存在資料集中, 被稱為一個集合(Collenction)。每個集合在資料庫中都有一個唯一的標識名,並且可以包含無限數目的文檔。集合的概念類似關係
  • 型資料庫(RDBMS)裡的表(table),不同的是它不需要定義任何模式(schema)。
  • 模式自由(schema-free) ,意味著對於儲存在MongoDB 資料庫中的檔案,我們不需要知道它的任何結構定義。
  • 文檔型,意思是我們儲存的資料是鍵-值對的集合,鍵是字串,值可以是資料類型集合裡的任意類型,包括數組和文檔. 我們把這個資料格式稱作 “BSON” 即 “Binary Serialized dOcument Notation.”

    功能:

  • 面向集合的儲存:適合儲存物件及JSON形式的資料
  • 動態查詢:mongodb支援豐富的查詢運算式。查詢指令使用JSON形式的標記,可輕易地查詢文檔中內嵌的對象及數組
  • 完整的索引支援:包括文檔內嵌對象及數組。mongodb的查詢最佳化工具會分析查詢運算式,並產生一個高效的查詢計劃
  • 查詢監視:mongodb包含一系列監視工具用於分析資料庫操作的效能
  • 複製及自動容錯移轉:mongodb資料庫支援伺服器之間的資料複製,支援master-salve模式及伺服器之間的相互複製。複製主要目標是提供冗餘及自動容錯移轉
  • 高效的傳統儲存方式:支援位元據及大型物件(圖片)
  • 自動分區以支援雲層級的伸縮性:自動分區功能支援水平的資料庫叢集,可動態添加額外的機器

    適合情境:

  • 網站資料:MongoDB 非常適合即時的插入,更新與查詢,並具備網站即時資料儲存所需的複製及高度伸縮性
  • 緩衝:由於效能很高,MongoDB 也適合作為資訊基礎設施的緩衝層。在系統重啟之後,由MongoDB 搭建的持久化緩衝層可以避免下層的資料來源過載
  • 大尺寸,低價值的資料:使用傳統的關係型資料庫儲存一些資料時可能會比較昂貴,在此之前,很多時候程式員往往會選擇傳統的檔案進行儲存
  • 高伸縮性的情境:MongoDB 非常適合由數十或數百台伺服器組成的資料庫。MongoDB的路線圖中已經包含對MapReduce 引擎的內建支援
  • 用於對象及JSON 資料的儲存:MongoDB 的BSON 資料格式非常適合文檔化格式的儲存及查詢

 

MongoDB整理筆記の走進MongoDB世界

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.