免費電子書|MongoDB入門到實踐
都說技術在飛速發展,新技術也在不斷涌現,但我認為,其實程序員所用的基礎技術的發展是相對緩慢的,你可以好幾年不學習但還能混得下去。令人驚訝的其實是成熟技術的被替換速度。就像在一夜之間,那些長期穩定成熟的技術發現它們不再被開發者關注。
最好的例子就是 NoSQL 技術的發展,以及它對穩定的關系型數據庫市場的蠶食。那什么是NOSQL?其實它是一個很寬泛的概念,不同的人對它有不同的見解。就個人而言,我通常認為它是數據存儲系統的一部分。換而言之,NoSQL的好處是讓你的持久層不需要一個獨立的系統。
MongoDB是最受歡迎的NoSQL數據庫之一,你可能想知道MongoDB 是不是適用于這一切。作為一個面向文檔數據庫,MongoDB 是最通用的 NoSQL 解決方案之一。它可以看成是關系型數據庫的代替方案。和關系型數據庫一樣,它也可以和其他的 NoSQL 解決方案案搭配在一起。關于MongoDB的一切都會在這本書提及到:
本書大部分篇幅會用來關注的MongoDB的核心功能,從基礎概念到掌握查找、數據建模以及性能和工具等,而且這本書已經有中文、俄語、意大利語、西班牙語、日語和德語的翻譯。(中文GitHub地址:https://github.com/ilivebox/the-little-mongodb-book/blob/master/zh-cn/mongodb.markdown)
關于作者
Karl Seguin 在多領域有著豐富經驗,他是 .NET 和 Ruby 的開發專家。他也參與貢獻 OSS 項目, 還是技術文檔撰寫人而且偶爾做做演講。MongoDB 方面,他是 C# MongoDB 庫 NoRM 的核心開發者,寫有互動入門教程 mongly 和 Mongo Web Admin。他用 MongoDB,為休閑游戲開發者寫了一個免費服務, mogade.com。Karl 還編寫了 《The Little Redis Book 1》
下面我們詳細了解一下這本書都為讀者講解了哪些內容:
MongoDB安裝
MongoDB 很容易安裝和運行,只需要花幾分鐘把所有的東西運行起來。
先打開官方下載頁面 ,從你選擇的操作系統下面的第一行(推薦穩定版本)下載二進制文件。根據開發實際,你可以選擇 32位 或者 64位。
解壓縮文件 (隨便你放哪) 然后進入 bin 子目錄。現在還不要執行任何命令,只要記住 mongod 用來打開服務進程,mongo 打開客戶端 shell - 大部分時間我們將要使用這兩個命令。
在 bin 子目錄下創建一個文本文件,命名為 mongodb.config。
在 mongodb.config 中添加一行:dbpath=PATH_TO_WHERE_YOU_WANT_TO_STORE_YOUR_DATABASE_FILES。比如,在 Windows 你可以寫 dbpath=c:mongodbdata ,在 Linux 可能是dbpath=/var/lib/mongodb/data。
確保你指定的 dbpath 確實存在。
執行 mongod ,帶上參數 --config /path/to/your/mongodb.config 。
以 Windows 用戶為例,如果你解壓下載文檔到 c:mongodb ,并且你創建了c:mongodbdata ,那么在 c:mongodbinmongodb.config 你要指定dbpath=c:mongodbdata。 然后你可以在 CMD 執行 mongod 如下命令行c:mongodbinmongod --config c:mongodbinmongodb.config。
現在你的MongoDB應該已經安裝好并可以運行起來了,現在你可以執行 mongo (沒有 d) ,鏈接 shell 到你的服務器上了。嘗試輸入 db.version() 來確認所有都正確執行了。你應該能拿到一個已安裝的版本號。
閱讀路線
除了前面介紹的MongoDB安裝,還包括以下章節:
第一章:基礎知識
這一章能讓你掌握學習MongoDB所必須的基礎知識,介紹了 insert 和 remove 命令 (完整版也沒比我們介紹的多什么)。 我們還介紹了 find 以及了解了 MongoDB selectors 是怎么一回事。
第二章 - 更新
本章中我們介紹了集合的基本 CRUD 操作。我們詳細講解了 update 及它的三個有趣的行為。 首先,如果你傳 MongoDB 一個文檔但是不帶更新操作, MongoDB 的 update 會默認替換現有文檔。因此,你通常要用到 $set 操作 (或者其他各種可用的用于修改文檔的操作)。 其次, update 支持 upsert 操作,當你不知道文檔是否存在的時候,非常有用。 最后,默認情況下, update 只更新第一個匹配文檔,因此當你希望更新所有匹配文檔時,你要用 multi 。
第三章 - 掌握查詢
本章讓你更加熟練使用 mongo shell 以及理解 MongoDB 的基本原則,還講了一些我們后面章節會用到的或是非常特殊情況才用的命令。
第四章 - 數據建模
本章目標是提供一些對你在 MongoDB 中數據建模有幫助的指導,讓你體會在一個面向文檔系統中建模,和在面向關系世界中建模,是不一樣的,但也沒多少不同。
第五章 - MongoDB 適用場景
本章主要圍繞MongoDB適用的場景展開,大多數情況下,可以取代關系型數據庫。它更簡單更直接;更快速并且通常對應用開發者的約束更少。
第六章 - 數據聚合
在這章中我們介紹了 MongoDB 的 聚合功能(aggregation capabilities)。 一旦你理解了聚合管道(Aggregation Pipeline)的構造,它還是相對容易編寫的,并且它是一個聚合數據的強有力工具。 MapReduce 更難理解一點,不過它強力無邊,就像你用 JavaScript 寫的代碼一樣。
第七章 - 性能和工具
在這章中我們介紹了 MongoDB 的各種命令,工具和性能細節。我們沒有涉及所有的東西,不過我們已經把常用的都看了一遍。MongoDB 的索引和關系型數據庫中的索引非常類似,其他一些工具也一樣。不過,在 MongoDB 中,這些更易于使用。
寫在最后
本書被許多讀者作為MongoDB的入門書,通過本書,你可以掌握將MongoDB運用到實際項目的能力,當然,MongoDB的知識遠不止這些,如果可以,還應該配合MongoDB的官方文檔進行學習