NoSql精粹:一本關於NoSql的綜述

NoSql

「與其考慮如何權衡「一致性」與「可用性」,不如思考怎麼樣在「一致性」與「延遲」之間取捨。」這是我對書中印象最深刻的一句話。

概述

按照慣例,相對書的內容進行簡要的概述,從內容上分爲兩個部分:第一部分針對NoSql的基本概念進行闡述,第二部分專注於實現NoSql數據庫。從第一部分的針對NoSql的概念講解,是對得起書名叫NoSql精粹的。另外,書中插圖也是很給力的。從爲什麼使用NoSql問題出發,首先分析傳統的關係型數據優勢,與在解決目前問題上的短板,引入NoSql的概念,接着,從數據模型、分佈式模型、一致性、版本戳、映射-簡化操作等方面論述與關係數據庫的異同。第二部分針對上面介紹的概念,從市面上開源的NoSql產品中演示是如何實現上述所講的概念的。對於書中的內容就做以上簡單的介紹,重點在我的觀感上。

我的觀感

在讀這本書之前,可能是受了關係型數據庫一些概念的太久的荼毒,以致於剛開始對一些概念容易跳到關係型數據的角度去理解。本書刷新我的認識的是第五章對於一致性的論述。雖然說並非所有的NoSql數據庫都是爲了運行在集羣上而設計,但是我們看到的絕大多數NoSql數據庫,都是運行在集羣上的,HBase、redis、Cassandra等。自然,對於分佈式數據庫而言,數據一致性是必須要考慮的,作者討論了更新一致性、讀取一致性,然後討論我們有哪些理由可以放開對於「一致性」的約束,如果說CAP定理出發,因爲這些年我們看到了太多的文章說最終一致性之類,對於放開「一致性」的約束,似乎不是很難理解。但是對於放開對於「持久性」的約束的呢?這些作者都有論述,比我寫的精彩多了。這些說下我感受:不管是對於NoSql數據庫來說,還是我們做應用開發,在開發系統的過程中,難免會有這些思考和權衡,那這本書所提供的思考方式和思路值得你借鑑。在「仲裁」章節中,對與「一致性」與「持久性」之間的取捨的論述,可謂精彩,從「複製因子」、「執行讀取操作時所需聯繫的節點數」、「參與寫入操作的節點數」三者的關係,把複雜的事情分解的簡單,容易理解,又不失深刻,強烈推薦。 沒有理論指導的實踐是盲目的,沒有實踐的理論是空洞。所以對於這本書的閱讀不僅僅只限於瞭解下NoSql,最好的方式是:比如你正在學習HBase的基本用法,瞭解了掌握之後,想進一步理解,可以針對書中的基本概念,探究下Hbase是怎麼實現這些思想,做了哪些取捨。相信這樣操作之後,無論在技術上還是面試過程中的你,談笑間、羽扇綸巾。