淺談大數據原理 (Designing Data-Intensive Applications 書評)

大數據生態的系統和技術層出不窮,我想簡單羅列幾個都有一種不知從何列起的感覺。最開始我們可能會先去看看hadoop,了解一套成熟的分布式數據存儲和計算框架,了解數據怎么分割、怎么分布、怎么容錯,任務失敗了怎么恢復。我們會知道hadoop的不足之處,為了支持CRUD,我們會去看看cassandra、habase、kudu如何存取、更新數據;為了提高計算效率,我們會去了解tez、spark如何基于DAG做內存計算;為了數據實時性,我們會看看kafka如何傳遞消息、flink如何計算實時數據;為了支持SQL查詢,我們會看看hive、spark sql如何生成執行計劃;為了提高查詢效率,我們會試試presto、impala,了解它們為了查詢效率做了哪些優化,又犧牲了什么;為了支持OLAP,我們會比較一下kylin和druid,知道它們如何預處理數據,如何支持實時數據······
  上面的話只是為了引入,一不小心就寫的有點長了,然而事實是相關的技術和應用遠遠更多。如果我們見一個去學習一個,恐怕學不完,效果也不好。只有理清它們背后的原理和聯系,知其然更知其所以然,才能舉一反三,心中有數。《Desiging Data-Intensive Applications》就是這樣一本書,或者說至少抱著這樣的目的。不關注某個技術或應用,而是要把這些應用解構,探究它們背后的原理和動機,帶我們建立一幅完整的數據密集型應用設計地圖。
  我是沖著這本書的好評而去看的,斷斷續續看了幾個月才看完。由于一些網友給的評價極好,看之前我是懷著比較大的期待的。看的過程中有過小失望也有驚喜,總體符合期望,是經的起回味的好書。其實初看這本書的時候,并不覺得那么吸引人,尤其是第一部分,也就是前四章。看下來,對于我本來就了解的技術,沒有講出新花樣,而對于我原來沒接觸過的技術,講得又不夠深入,總體感覺就是收獲不大。看到第二部分倒是有些驚喜的地方,第5章講Replication面臨的各種難點和相應技術,可以說非常全面和透徹了,而且講述方式又是以各種case舉例,通俗易懂。還有就是第7章講Transaction的Isolation levels道出了其中的各種因素的權衡,哪種機制能提供什么保證,要關注哪些corner case。不足的是第9章Consensus講得不像Transaction那么深入,有點意猶未盡的感覺。之后就是最后一部分了,第10章和第11章介紹了批處理和流式計算,其中有一些觀點還是挺有意思的,比如把批處理統一到Unix哲學;流式處理和event sourcing的比較等。但是看下來還是覺得其中有些技術可以分析的再深入一點。
  看完這本書的前11章,還剩最后一章的時候,有個比較資深的同事問我關于這本書的評價,我的回答是這本書一般,是一本綜述型的書,關于數據應用設計的各方面都有涉及,但是深度不足,需要順著引用到的資料自己再去探索。我給出這樣的評價是因為他已經深耕數據領域多年,對各種技術都很熟悉,對他來說這本書只能是一般了。但那是因為那時我還沒看最后一章,不得不承認,直到看到最后一章,我才慢慢體會到這本書真正想表達什么。最后一章探討了前11章提到的這方方面面,是如何共同作用,決定著我們在設計數據應用時需要作出的各種取舍和選擇。同時作者終于開始以第一人稱訴述,向我們表達了一些有意思的觀點,是非常值得我們思考的。最后一章是本書的升華點,使本書形成了閉環,再完整回味這本書,其實它是在幫助我們構建完整的知識體系。
  所以即使是我那比較資深的同事,我仍然會推薦這本書,前11章如果是自己比較熟的地方可以略讀或跳過,不太熟的地方可以適當了解,最后聽聽作者的一些觀點,結合自己的知識體系去思考,一定還是能有收獲的。而對于技術還不成熟的同學,那就更是五星推薦了。這本書有個很好的點是引用文獻列的很全,不懂的地方順著深入就可以了。
  既然說這本書是幫助我們建立知識體系的,那我也來試著分析一下各種數據應用和技術之間的邏輯好了。
  應用是為了滿足某一類需求,適用于某一種場景,同時可靠、可擴展、易維護是所有應用程序的非功能性追求。所以要理解應用背后的原理和動機,最重要的就是理解其場景和面臨的挑戰。回到本文第一段,我提到的各種應用就是隨著場景的不斷變化,而不斷發展出來的。其中既有各異的功能性需求,又有相同的非功能性需求。既然都是數據應用,功能性需求自然都與數據的處理、存取相關,但是又會根據各自的場景,有不同的側重,因此衍生出了不同的技術。同時,不同的場景下對非功能性需求的嚴格程度又是不同的,因此又衍生出了不同的處理技術。這個話題太大了,這里我不繼續展開了。我打算把這個分析寫成一個系列。第一篇我會把各種場景和面臨挑戰總結一下。之后會根據不同的場景和挑戰,分析各種應用和其中的技術。
淺談大數據原理(一)場景與挑戰

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容