天天看點

《大資料系統建構:可擴充實時資料系統建構原理與最佳實踐 》一 第1章 大資料的新範式

本章内容

擴充傳統資料庫時遇到的典型問題

為什麼nosql不是萬能的

從基本原理思考大資料系統

大資料工具的情形

superwebanalytics.com的介紹

在過去的十年裡,人們創造的資料量一路飙升—每秒産生超過30 000gb的資料,并且資料創造的速度仍在加快。

我們處理的資料是多樣化的。使用者建立的内容有部落格文章、微網誌、社交網絡的互動和照片等。伺服器不斷地記錄使用者正在做什麼的消息。科學家們創造了精确“測量”世界的标尺—周圍世界的詳細測量結果。網際網路,這使得資料的最終來源是浩瀚無垠的。

資料的驚人增長已經深刻地影響了商業。傳統的資料庫系統,比如關系型資料庫,已經被發展到極限。在越來越多的情況下,這些系統已經承受不住“大資料”的壓力了。傳統系統以及與它們相關的資料管理技術未能成功擴充到大資料的範疇。

為了應對大資料的挑戰,新一代的技術出現了。其中許多新技術被分類到nosql術語下。在某些方面,這些新技術比傳統資料庫更複雜,而在另外一些方面,它們更簡單一些。這些系統可以擴充到非常大的資料集,但要想有效地使用這些技術,需要一套全新的技巧—然而并沒有放之四海而皆準的解決方案。

這些大資料系統中有許多是由google所開創的,包括分布式檔案系統、mapreduce計算架構和分布式鎖服務。該領域中的另一個先驅是amazon,它創造了一個革新性的分布式鍵/值存儲系統,稱為“dynamo”。這些年,開源社群開發出了如下的hadoop、hbase、mongodb、cassandra、rabbitmq和無數其他項目。

本書是關于複雜性和可擴充性的。為了應對大資料的挑戰,我們将從頭開始重新考慮資料系統。你會發現在例如關系型資料庫管理系統(relational database management systems, rdbms)這樣的傳統系統中,人們管理資料的一些最基本方法對于大資料系統來說過于複雜。為簡單起見,替代方法就是你即将探索的大資料新範式。我們把這種方法稱為“lambda架構”。

在第1章中,你将探索“大資料問題”以及為什麼需要大資料的新範式。你會看到一些傳統技術擴充的風險,并發現用傳統方式建構資料系統的缺陷。以資料系統基本原理為出發點,我們将制訂一種不同的方式來建構資料系統,以避免傳統技術的複雜性。你會看到技術的最近趨勢是如何促進新系統的使用的,最後你還會看到一個大資料系統的例子,我們将在整本書中貫穿建構這個大資料系統,以此示範關鍵概念。

1.1 本書是如何組織的

你可以認為本書主要是一本理論性的書籍,專注于如何建構适用于任何大資料問題的解決方案。無論目前情形下的工具怎樣,你将學習的原則都是有效的,你可以據此來嚴格選擇适合你的應用程式的工具。

本書不是對資料庫、計算和其他相關技術的調研。盡管在本書中,你将學習如何使用諸如hadoop、cassandra、storm和thrift等工具,但是本書的目的不是學會使用這些工具。相反,這些工具是學習建構具備魯棒性和可擴充性的資料系統的一種手段。在這些工具之間進行相關的比較和對比,對你來說是不公平的,這樣就會偏離學習底層原理的道路。換句話說,你将學習如何釣魚,而不僅僅是如何使用特定的魚竿。

通過這種方式,我們将本書劃分為理論章節和例證章節。你可以隻閱讀理論章節,以全面了解建構大資料系統的方法—但我們認為,将理論映射到例證章節中的特定工具這一過程,将會使你對這些資料有更豐富、更細緻的了解。

但是不要被本書的名字所欺騙—理論章節也有很多示例。本書中的首要案例是superwebanalytics.com,這一案例在理論和例證章節都有用到。在理論章節,你可以看到superwebanalytics.com的算法、索引設計和架構。例證章節利用具體的工具将這些設計映射為功能代碼。