NoSql精粹:一本关于NoSql的综述

NoSql

“与其考虑如何权衡“一致性”与“可用性”,不如思考怎么样在“一致性”与“延迟”之间取舍。”这是我对书中印象最深刻的一句话。

概述

按照惯例,相对书的内容进行简要的概述,从内容上分为两个部分:第一部分针对NoSql的基本概念进行阐述,第二部分专注于实现NoSql数据库。从第一部分的针对NoSql的概念讲解,是对得起书名叫NoSql精粹的。另外,书中插图也是很给力的。从为什么使用NoSql问题出发,首先分析传统的关系型数据优势,与在解决目前问题上的短板,引入NoSql的概念,接着,从数据模型、分布式模型、一致性、版本戳、映射-简化操作等方面论述与关系数据库的异同。第二部分针对上面介绍的概念,从市面上开源的NoSql产品中演示是如何实现上述所讲的概念的。对于书中的内容就做以上简单的介绍,重点在我的观感上。

我的观感

在读这本书之前,可能是受了关系型数据库一些概念的太久的荼毒,以致于刚开始对一些概念容易跳到关系型数据的角度去理解。本书刷新我的认识的是第五章对于一致性的论述。虽然说并非所有的NoSql数据库都是为了运行在集群上而设计,但是我们看到的绝大多数NoSql数据库,都是运行在集群上的,HBase、redis、Cassandra等。自然,对于分布式数据库而言,数据一致性是必须要考虑的,作者讨论了更新一致性、读取一致性,然后讨论我们有哪些理由可以放开对于“一致性”的约束,如果说CAP定理出发,因为这些年我们看到了太多的文章说最终一致性之类,对于放开“一致性”的约束,似乎不是很难理解。但是对于放开对于“持久性”的约束的呢?这些作者都有论述,比我写的精彩多了。这些说下我感受:不管是对于NoSql数据库来说,还是我们做应用开发,在开发系统的过程中,难免会有这些思考和权衡,那这本书所提供的思考方式和思路值得你借鉴。在“仲裁”章节中,对与“一致性”与“持久性”之间的取舍的论述,可谓精彩,从“复制因子”、“执行读取操作时所需联系的节点数”、“参与写入操作的节点数”三者的关系,把复杂的事情分解的简单,容易理解,又不失深刻,强烈推荐。 没有理论指导的实践是盲目的,没有实践的理论是空洞。所以对于这本书的阅读不仅仅只限于了解下NoSql,最好的方式是:比如你正在学习HBase的基本用法,了解了掌握之后,想进一步理解,可以针对书中的基本概念,探究下Hbase是怎么实现这些思想,做了哪些取舍。相信这样操作之后,无论在技术上还是面试过程中的你,谈笑间、羽扇纶巾。