大資料時代,野心勃勃的MongDB為你處理海量資料!

紫鳳發表於2012-10-30
MongoDB是一個基於分散式檔案儲存的資料庫,由C++語言編寫,旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。其名字來自humongous這個單詞的中間部分,從名字可見其野心所在就是海量資料的處理。

一、MongoDB簡介

  2011年將被記住,因為這一年SQL將死;這一年,關聯式資料庫從一線退下;這一年開發人員發現他們沒必要為了持久化資料,而將每個物件轉化為表格結構。

  2011年是文件資料庫的一年,儘管一直在穩步發展勢頭,通過過去八年多的發展,現在有各種穩定的文件資料庫——從基於亞馬遜和谷歌的雲,到各種開放原始碼工具,尤其是MongoDB。

  那麼,MongoDB是什麼?這裡的五件事是每個開發人員應該知道的:

    • MongoDB是一個獨立的伺服器;

    • 它是基於文件的,而不是基於表格的;

    • 它是非結構化的;

    • 不必去學習另一種查詢語言;

    • 它具有強大的主流開發語言支援,如 C#、C++、Java、PHP、Perl、Python、Ruby。

  1、MongoDB 是一個獨立的伺服器

  如MySQL或PostgreSQL一樣,MongoDB提供偵聽埠以便接入。它提供了用於查詢,建立,更新和刪除的工具。從理論上講,你使用它的工作方式與你使用MySQL或PostgreSQL的工作方式相同:連線,執行任務,並關閉連線。

  2、MongoDB是非結構化的

  MongoDB 沒有結構化語言。如果你想建立一個新的文件型別,你不用做任何事來告訴資料庫關於這些資料的結構,而僅僅是存到資料庫中即可。

  簡單的說,MongoDB使用類似JavaScript或PHP的型別處理方式。也就是說,資料庫是靈活的弱型別。

  雖然有一些資料是有限制條件的(大塊的資料可能需要一些明確的處理),但在大多數情況下,你可以像寫PHP程式碼一樣編寫你的MongoDB程式碼。

  3、不必去學習另一種查詢語言

  還記得這些你寫的資料庫抽象層嗎?還記得那些你處理過的ORM層嗎?現在,你可以將它們全部丟棄。在MongoDB中你不需要他們。MongoDB沒有很多查詢語句。在大多數情況下,只需給它一個陣列指定你想要的資訊,然後它會給你返回文件的陣列。如果你想執行一些非常複雜的查詢(如Map-Reduce操作),可以向MongoDB傳遞JavaScript,其內部的JavaScript引擎可以解析這個指令碼。

  4、MongoDB是神速的

  開發時間也短,因為沒有結構需要管理和很少(如果有的話)的資料對映。

  學習曲線很平滑,因為沒有新的查詢語言學習。程式碼是簡潔的。畢竟,無須任何其他ORM,封裝可以非常簡單。你的程式碼是未來的保證。向你的物件增加更多的欄位是很輕鬆的。因此,需求變化了,你可以很快修改程式碼以便適應。

  MongoDB足以讓我意識到它有改變遊戲規則的潛力。這也是讓大家主張使用新一代的文件資料庫代替基於SQL的關聯式資料庫的原因。將關聯式資料庫留在塵土裡,更可能的是讓它們做它們能做好的事情:儲存屬於行和表的資料。


圖靈關於MongoDB的圖書:

enter image description hereenter image description hereenter image description here

一、《MongoDB實戰》

如上文所述MongoDB是為處理大資料而生的一款面向文件的資料庫,而且MongoDB由10gen公司開發和維護。《MongoDB實戰》作者Kyle Banker曾在該公司負責MongoDB驅動程式的維護,對各方面技術細節都瞭如指掌,本書也是在大量第一手資料的基礎上形成的,其權威性毋庸置疑。

作者介紹:Kyle Banker  軟體工程師,曾工作於10gen公司,負責維護Ruby及C語言的官方MongoDB驅動、領導MongoDB文件專案並開發培訓課程,且為客戶提供諮詢、商業支援和培訓;現任職於Snapjoy(為使用者提供預設私有的線上照片備份和自動管理服務)。個人網站http://kylebanker.com/blog。

譯者介紹:丁雪豐  一線“攻城師”一枚,InfoQ中文站小編,滿江紅翻譯組核心成員,常年混跡於各種社群,業餘時間寫作、翻譯、漢化軟體,《RESTful Web Services Cookbook中文版》、《Spring攻略》等多部書的譯者。

enter image description here 內容簡介:

本書基於MongoDB 2.0+,全面系統地講解了設計、實現、安裝和維護MongoDB的各方面內容。全書分三部分,第一部分從基於文件的資料與傳統關係型資料庫的差別講起,介紹了MongoDB的基本概念及安裝使用。第二部分是一個實戰式教程,結合示例講解了MongoDB的CRUD操作,以及實現系統安全、靈活和高效的設計原則及模式。第三部分側重資料庫的維護和管理,深入到MongoDB背後的技術細節,給出了對管理員和開發者都極有價值的建議。

本書篇幅適中,內容深淺得當,文字通俗易懂,再配以直觀形象的插圖和貼近實戰的程式碼示例,非常適合MongoDB學習者、開發人員及管理員學習參考。

本書內容:

MongoDB介紹及其優劣勢

MongoDB的Shell介面

使用MongoDB的簡單應用

如何通過以文件為中心的方式看待資料

編寫查詢,以MapReduce方式聚合資料

更新和刪除資料及相關效能考量

尋找和改進慢查詢

MongoDB的複製與分片

MongoDB的監控、備份及恢復

二、《深入學習MongoDB》

內容簡介:

本書分兩部分,分別對應O’Reilly 公司出版的Scaling MongoDB 和50 Tips and Tricks forMongoDB Developers 兩本書的內容。第一部分全面講解了有關建立和使用叢集的內容,不僅從應用開發人員的角度講解了MongoDB 的使用,而且從運維方面介紹了叢集的管理。其中內容包括通過分片設定MongoDB 叢集,分片的工作原理,查詢和更新資料,操作、監控和備份叢集,錯誤處理。第二部分依次從應用設計、實現、優化、資料安全和管理方面介紹了使用MongoDB構建應用的技巧,內容包括正規化化與反正規化化的利弊權衡,複製組的故障恢復等。 本書適合所有MongoDB 使用者閱讀參考。

具體的主題有:

  通過分片設定MongoDB叢集;
  在叢集中查詢和更新資料;
  操作、監控和備份叢集;
  從程式設計角度,考慮如何應對分片、配置伺服器或者mongos程式停止執行的情況。

遵照其中建議,你很快就可通過MongoDB構建和執行一個高效的、可預測的分散式系統。 對 於使用者而言,MongoDB上手很容易,但是構建使用MongoDB的應用程式時,一些棘手的問題便會接踵而來。怎樣權衡正規化化與反正規化化?怎樣處理複製 組失效的情況並進行故障恢復?本書第二部分“MongoDB開發技巧50例”呈現了一系列的MongoDB提示和技巧,可幫助使用者解決與應用程式設計與實 現、資料安全和監控有關的各種問題。

作者簡介:
Kristina Chodorow  10gen公司的軟體工程師,MongoDB專案的核心成員,從事與資料庫伺服器、PHP驅動、Perl驅動等相關的工作。她常在世界級技術大會上作報告,包括OSCON、LinuxCon、FOSDEM和Latinoware。

三、《MongoDB權威指南》

內容簡介:

本書是一本廣受好評的MongoDB方面的圖書。與傳統的關係型資料庫不同,MongoDB是一種面向文件的資料庫。書中介紹了面向文件的儲存方式及利用MongoDB的無模式資料模型處理文件、集合和多個資料庫,講述瞭如何執行基本的寫操作以及如何執行各種複雜的條件查詢,還介紹了索引、聚合工具以及其他高階查詢技術,另外對監控、安全性和身份驗證、備份和修復、水平擴充套件MongoDB資料庫等內容也有所涉及。 本書適合資料庫開發人員閱讀。

相關文章