MongoDB是一個基於分佈式文件存儲的數據庫,由C++語言編寫,旨在爲WEB應用提供可擴展的高性能數據存儲解決方案。其名字來自humongous這個單詞的中間部分,從名字可見其野心所在就是海量數據的處理。本文是一個MongoDB的入門級教程,手把手的教會讀者使用MongoDB,並將學習過程當中可能遇到的問題一一列舉。本文不是用長篇的文字來理論性描述MongoDB的各方面知識,而是用圖文並茂的方法來討論MongoDB,但願用最短的時間使開發人員熟悉MongoDB。 數據庫
1、MongoDB簡介 數組
2011年將被記住,由於這一年SQL將死;這一年,關係數據庫從一線退下;這一年開發人員發現他們不必爲了持久化數據,而將每一個對象轉化爲表格結構。 服務器
2011年是文檔數據庫的一年,儘管一直在穩步發展勢頭,經過過去八年多的發展,如今有各類穩定的文檔數據庫——從基於亞馬遜和谷歌的雲,到各類開放源碼工具,尤爲是MongoDB。 分佈式
那麼,MongoDB是什麼?這裏的五件事是每一個開發人員應該知道的: 工具
一、MongoDB 是一個獨立的服務器 性能
如MySQL或PostgreSQL同樣,MongoDB提供偵聽端口以便接入。它提供了用於查詢,建立,更新和刪除的工具。從理論上講,你使用它的工做方式與你使用MySQL或PostgreSQL的工做方式相同:鏈接,執行任務,並關閉鏈接。 學習
二、MongoDB是非結構化的 spa
MongoDB 沒有結構化語言。若是你想建立一個新的文檔類型,你不用作任何事來告訴數據庫關於這些數據的結構,而僅僅是存到數據庫中便可。 對象
簡單的說,MongoDB使用相似JavaScript或PHP的類型處理方式。也就是說,數據庫是靈活的弱類型。 教程
雖然有一些數據是有限制條件的(大塊的數據可能須要一些明確的處理),但在大多數狀況下,你能夠像寫PHP代碼同樣編寫你的MongoDB代碼。
三、沒必要去學習另外一種查詢語言
還記得這些你寫的數據庫抽象層嗎?還記得那些你處理過的ORM層嗎?如今,你能夠將它們所有丟棄。在MongoDB中你不須要他們。MongoDB沒有不少查詢語句。在大多數狀況下,只需給它一個數組指定你想要的信息,而後它會給你返回文檔的數組。若是你想運行一些很是複雜的查詢(如Map-Reduce操做),能夠向MongoDB傳遞JavaScript,其內部的JavaScript引擎能夠解析這個腳本。
四、MongoDB是神速的
開發時間也短,由於沒有結構須要管理和不多(若是有的話)的數據映射。
學習曲線很平滑,由於沒有新的查詢語言學習。代碼是簡潔的。畢竟,無須任何其餘ORM,封裝能夠很是簡單。你的代碼是將來的保證。向你的對象增長更多的字段是很輕鬆的。所以,需求變化了,你能夠很快修改代碼以便適應。
MongoDB足以讓我意識到它有改變遊戲規則的潛力。這也是讓你們主張使用新一代的文檔數據庫代替基於SQL的關係數據庫的緣由。將關係數據庫留在塵土裏,更可能的是讓它們作它們能作好的事情:存儲屬於行和表的數據。