前言
「資料是21 世紀最有價值的資產,它比黃金和石油更有價值」。隨著大數據時代的來臨,傳統的關聯式資料庫在可擴充性、資料模型和可用性方面遇到了難以克服的障礙。此時各種NoSQL 系統出現了。它們的特點各不相同,分別應用於不同的場景並迅速獲得了極大的成功。作為一名從事後台開發多年的工作者,我對每一種新技術的出現與應用都充滿了渴望與期待,其中NoSQL
解決了我實際工作中遇到的許多問題。NoSQL 具有下面幾方面的優點:
1. 靈活的可擴充性
多年以來,資料庫管理員們都是透過「垂直擴充」的方式(當資料庫的負載增加的時候,購買更大型的伺服器來承載增加的負載)來進行擴充的,而非透過「水平擴充」的方式(當資料庫負載增加的時候,在多台主機上分配增加的負載)來進行擴充。但是,隨著請求量和可用性需求的增加,資料庫也正在移轉到雲端或虛擬化環境中,「水平擴充」的經濟優勢變得更加明顯了,對各大企業來說,這種「誘惑」是無法抗拒的。
要對RDBMS(關聯式資料庫,例如Oracle)做「水平擴充」,並不是很容易。但是各種新類型的NoSQL 資料庫主要是為了進行透明的擴充,來利用新節點而設計的,而且,它們通常都是為了低成本的commodity hardware 而設計的。
2. 輕鬆應對大數據
在過去的十年裡,正如請求量發生了天翻地覆的增長一樣,需要儲存的資料量也發生了急劇的膨脹。為了滿足資料量增長的需要,RDBMS 的容量也在日益增加,但是,對一些企業來說,隨著請求量的增加,單一資料庫能夠管理的資料量也變得越來越讓人無法忍受了。現在,大量的「大數據」可以透過NoSQL 系統(如MongoDB)來處理,它們能夠處理的資料量遠遠超出了最大型的RDBMS
所能處理的極限。
3. 維護簡單
在過去的幾年裡,雖然一些RDBMS 供應商們聲稱在可管理性方面做出了很多的改進,但是高階的RDBMS 系統維護起來十分昂貴,而且還需要訓練有素的DBA 們的協助。DBA 們需要親自參與高階的RDBMS 系統的設計、安裝和最佳化。
NoSQL 資料庫從一開始就是為了降低管理方面的要求而設計的:從理論上來說,自動修復,資料分配和簡單的資料模型的確可以讓管理和最佳化方面的要求降低很多。
4. 經濟
NoSQL 資料庫通常使用廉價的Commodity Servers 叢集來管理膨脹的資料和請求量,而RDBMS 通常需要依靠昂貴的專有伺服器和儲存系統來做到這一點。使用NoSQL,每GB 的成本或每秒處理的請求的成本都比使用RDBMS 的成本少很多,這可以讓企業花費更低的成本儲存和處理更多的資料。
5. 靈活的資料模型
對大型的生產性RDBMS 來說,變更管理是一件很令人頭痛的事情。即使只對一個RDBMS 的資料模型做出很小的改動,也必須要十分小心的管理,也許還需要停機或降低服務水準。NoSQL 資料庫在資料模型約束方面是更加寬鬆的,甚至可以說並不存在資料模型的約束。
NoSQL 的Key/Value 資料庫和文件類型資料庫可以讓應用程式在一個資料元素裡儲存任何結構的資料。即使是規定更加嚴格的以「大表」為基礎的NoSQL 資料庫(如HBase)通常也允許建立新列,這並不會造成什麼麻煩。
應用程式變更和資料庫綱要的變更並不需要作為一個複雜的變更單元來管理。從理論上來說,這可以讓應用程式反覆運算的更快,但是,很明顯,如果應用程式無法維護資料的完整性,那麼這也會帶來一些不良的副作用。
本書特色
1. 內容全面、新穎
本書內容全面而新穎,既對NoSQL 系統的理論進行深入淺出的分析,又深入說明了列式的、Key/Value 的和文件類型這三種NoSQL 系統,最後還說明了MySQL 的效能最佳化。
2. 說明由淺入深,循序漸進
如果你從來沒有用過NoSQL 系統,本書正適合你。並且由淺入深將各種NoSQL系統聯繫起來,並分析各自的相同點和不同點,讀完之後你一定會對NoSQL 系統有更多的認識。
3. 理論與實作並重
對NoSQL 系統的產生原因和理論基礎做了廣泛而深入的分析,讓讀者知其然,更知其所以然。書中儘量消除初學者學習NoSQL 系統時容易遇到的障礙,變抽象為實際,變複雜為簡單。而且重點對Hadoop/HBase、MongoDB 和Redis 這三種NoSQL 系統都列出了實際實作。
4. 圖文並茂,容易了解
針對NoSQL 系統中的一些架構和較難了解的概念,提供了大量的插圖,並結合實際文字來說明,非常直觀,更有利於讀者的學習與了解。
5. 語言通俗容易
不使用讓人難以了解的語言分析問題,而是採用通俗易懂的敘述說明NoSQL 系統的相關知識,讓讀者能夠真正了解NoSQL 技術,繼而在開發中使用這些技術。
本書原始程式碼取得方式
本書有關的原始程式碼,請讀者自行到www.topteam.cc 上資源下載區下載。
本書作者
雖然筆者花費了大量精力寫作,並力圖將疏漏減少到最少,但仍恐百密一疏。如果您在閱讀本書的過程中發現有任何疏漏,或對本書的說明有任何疑問,請發送電子郵件到
[email protected]。