塞得拉吉、福勒编著的《NoSQL精粹》全方位比较了关系型数据库与NoSQL数据库的异同;分别以Riak、MongoDB、Cassandra和Neo4J为代表,详细讲解了键值数据库、文档数据库、列族数据库和图数据库这4大类NoSQL数据库的优劣势、用法和适用场合;深入探讨了实现NoSQL数据库系统的各种细节,以及与关系型数据库的混用。
全书分为两部分,共15章:第一部分(第1~7章)主要讲述NoSQL的核心概念。其中第1章解释了NoSQL发展迅速的原因;第2章描述了在NoSQL领域的三种主要的数据模型中如何体现“聚合”这一概念;第3章介绍了聚合的缺点;第4章描述了数据库如何在集群中分布数据;第5章论及了更新与读取操作对一致性的影响;第6章讨论了版本戳;第7章描述了适合用在NoSQL系统中的“映射-化简”操作。第二部分(第8~15章)讲述了如何实现NoSQL数据库系统。其中第8章~第11章每章各以一种NoSQL数据库为例,演示了如何实现第一部分介绍的概念;第12章解释了数据如何在强模式系统与无模式系统之间迁移;第13章着眼于混合持久化领域的趋势;第14章探讨了在混合持久化领域中会考虑到的其他一些技术;第15章提供了选择数据库时可以参考的一些建议。
持续增长的海量数据,催生了一种名为NoSQL的非关系型数据库。其倡导者宣称,该技术可构建出更高效、更易扩展且更易编码的系统。
塞得拉吉、福勒编著的《NoSQL精粹》言简意赅地介绍了这项新技术。书中解释了NoSQL数据库的工作原理,以及NoSQL可能优于传统关系型数据库之处。作者讲解了有关概念,以指导读者评估NoSQL数据库是否有利于解决当前项目需求,并介绍了采用NoSQL数据库后还需深入研究的其他技术。
《NoSQL精粹》第一部分专注于讲解无模式数据模型、聚合、新的分布式模型、CAP定理、映射一化简等核心概念,第二部分研究实现NoSQL时的架构与设计问题。作者以实际用例演示了如何在工作中运用NoSQL数据库,并以Riak、MongoDB、Cassandra和Ne04j为例,着重讲解了每一科NoSQL数据库的典型用法。
此外,本书利用Pramod Sadalage先生的开拓性研究成果,展示了怎样在模式迁移问题上实现演进式设计:这是运用NoSQL数据库时必备的技巧。本书结尾描绘了NoSQL如何引领即将到来的混合持久化新时代,那将是多种数据库并存的世界,架构师可针对每种数据访问类型选择最优技术。
本书内容包括:
评估企业级应用程序是否应使用NoSQL技术
理解部署NoSQL时的架构权衡
用NoSQL简化开发工作,避免因为在内存数据结构与关系型数据库数据结构之间映射而引发的问题
对比时下几项领先的NoSQL数据库产品
研究CQL与Cypher查询语言
管理数据库的性能、可靠程度、可用性及故障恢复能力。
在敏捷开发环境中使用NoSQL
在元数据搜寻/检索管理、文本分析、社交网络、商务智能、金融服务等领域运用NoSQL
用运行于集群中的NoSQL数据库降低“大数据”问题的解决成本
如何以CAP定理为思路,考量一致性、可用性与延迟问题
怎样用映射一化简模式在集群中并行计算
NoSQL这一术语为何没有严格的定义
译者序
前言
第一部分 概念
第1章 为什么使用NoSQL 2
1.1 关系型数据库的价值 3
1.1.1 获取持久化数据 3
1.1.2 并发 3
1.1.3 集成 4
1.1.4 近乎标准的模型 4
1.2 阻抗失谐 4
1.3 “应用程序数据库”与“集成数据库” 6
1.4 蜂拥而来的集群 8
1.5 NoSQL登场 9
1.6 要点 13
第2章 聚合数据模型 15
2.1 聚合 16
2.1.1 关系模型与聚合模型示例 16
2.1.2 面向聚合的影响 20
2.2 键值数据模型与文档数据模型 22
2.3 列族存储 23
2.4 面向聚合数据库总结 25
2.5 延伸阅读 26
2.6 要点 26
第3章 数据模型详解 27
3.1 关系 28
3.2 图数据库 29
3.3 无模式数据库 31
3.4 物化视图 33
3.5 构建数据存取模型 34
3.6 要点 39
第4章 分布式模型 40
4.1 单一服务器 41
4.2 分片 41
4.3 主从复制 43
4.4 对等复制 45
4.5 结合“分片”与“复制”技术 47
4.6 要点 48
第5章 一致性 49
5.1 更新一致性 50
5.2 读取一致性 51
5.3 放宽“一致性”约束 55
5.4 放宽“持久性”约束 60
5.5 仲裁 62
5.6 延伸阅读 63
5.7 要点 64
第6章 版本戳 65
6.1 “商业事务”与“系统事务” 66
6.2 在多节点环境中生成版本戳 68
6.3 要点 70
第7章 映射-化简 71
7.1 基本“映射-化简” 72
7.2 分区与归并 73
7.3 组合“映射-化简”计算 76
7.3.1 举例说明两阶段“映射-化简” 77
7.3.2 增量式“映射-化简” 80
7.4 延伸阅读 81
7.5 要点 81
第二部分 实 现
第8章 键值数据库 84
8.1 何谓“键值数据库” 85
8.2 键值数据库特性 86
8.2.1 一致性 86
8.2.2 事务 87
8.2.3 查询功能 87
8.2.4 数据结构 89
8.2.5 可扩展性 89
8.3 适用案例 90
8.3.1 存放会话信息 90
8.3.2 用户配置信息 90
8.3.3 购物车数据 90
8.4 不适用场合 90
8.4.1 数据间关系 90
8.4.2 含有多项操作的事务 91
8.4.3 查询数据 91
8.4.4 操作关键字集合 91
第9章 文档数据库 92
9.1 何谓文档数据库 93
9.2 特性 94
9.2.1 一致性 94
9.2.2 事务 95
9.2.3 可用性 96
9.2.4 查询功能 97
9.2.5 可扩展性 99
9.3 适用案例 100
9.3.1 事件记录 100
9.3.2 内容管理系统及博客平台 101
9.3.3 网站分析与实时分析 101
9.3.4 电子商务应用程序 101
9.4 不适用场合 101
9.4.1 包含多项操作的复杂事务 101
9.4.2 查询持续变化的聚合结构 101
第10章 列族数据库 102
10.1 何谓列族数据库 103
10.2 特性 103
10.2.1 一致性 105
10.2.2 事务 107
10.2.3 可用性 107
10.2.4 查询功能 108
10.2.5 可扩展性 110
10.3 适用案例 110
10.3.1 事件记录 110
10.3.2 内容管理系统与博客平台 111
10.3.3 计数器 111
10.3.4 限期使用 111
10.4 不适用场合 112
第11章 图数据库 113
11.1 何谓图数据库 114
11.2 特性 115
11.2.1 一致性 116
11.2.2 事务 117
11.2.3 可用性 117
11.2.4 查询功能 118
11.2.5 可扩展性 121
11.3 适用案例 122
11.3.1 互联数据 122
11.3.2 安排运输路线、分派货物和基于位置的服务 123
11.3.3 推荐引擎 123
11.4 不适用场合 123
第12章 模式迁移 124
12.1 模式变更 125
12.2 变更关系型数据库的模式 125
12.2.1 迁移全新项目 126
12.2.2 迁移既有项目 127
12.3 变更NoSQL数据库的模式 129
12.3.1 增量迁移 131
12.3.2 迁移图数据库的模式 132
12.3.3 改变聚合结构 132
12.4 延伸阅读 133
12.5 要点 133
第13章 混合持久化 134
13.1 各异的数据存储需求 135
13.2 混用各类数据库 135
13.3 将直接数据库操作封装为服务 137
13.4 扩展数据库以增强其功能 138
13.5 选用合适的数据库技术 139
13.6 企业使用混合持久化技术时的考量 139
13.7 部署复杂度 140
13.8 要点 140
第14章 超越NoSQL 141
14.1 文件系统 142
14.2 事件溯源 142
14.3 内存映像 145
14.4 版本控制 146
14.5 XML数据库 146
14.6 对象数据库 147
14.7 要点 147
第15章 选择合适的数据库 148
15.1 程序员的工作效率 149
15.2 数据访问性能 150
15.3 继续沿用默认的关系型数据库 151
15.4 抽离数据库策略以降低风险 152
15.5 要点 153
15.6 结语 153
参考资料 154