译者序
数据库技术是企业级应用程序经常会用到的,在习惯于传统的关系型数据库多 年之后,一群先驱开始探索新的解决方案。随着待处理的数据量逐渐增多,大家越 来越需要一种在集群环境中易于编程且执行效率高的大数据处理技术,在此情势下, NoSQL 数据库应运而生。
新技术诞生后,我们应该以既稳健又前瞻的心态看待它。一方面不宜在尚未充分 理解时就盲目跟风,另一方面却也要紧密关注业界动向,顺应发展趋势。本书正是这 样一本具有指导意义的手册,它虽篇幅短小,内涵却非常丰富。
书中首先分析了传统关系型数据库所要解决的问题,以及在解决手段方面存在的 待改进之处。然后引入 NoSQL 这一新概念,并从数据模型、分布模型、一致性、版本 戳、映射 - 化简操作等角度逐一详细比较了它与关系型数据库的异同。读者可以领略 到 NoSQL 传承并发展了关系型数据库的哪些优秀特性,放弃了哪些不适合的特性,又 新增了哪些内容,同时还将了解到产生这些异同的原因。
以上就是本书的第一部分。读者在理解了上述概念后,会在第二部分看到同为 NoSQL 数据库的四种子类型之间的关系。本书分别以 Riak、MongoDB、Cassandra 和 Neo4J 为代表,举例讲解了键值数据库、文档数据库、列族数据库和图数据库这四大类 NoSQL 数据库的用法,分别说明了其优势与劣势。
其后,书中又系统地讲解了关系型数据库与 NoSQL 数据库的数据模式迁移问题, 描述了混合持久化这一新兴领域的样貌,并简述了此领域还将用到的一系列新技术。 通过分析与对比,我们可以发现,关系型数据库与 NoSQL 数据库并不矛盾,它们 是从两个不同的角度来解决数据存储问题。在混合持久化的新环境下,二者互为补充, 相辅相成,若运用得当,其整体效果将好于单用一门技术。
本书最后得出结论 :鉴于 NoSQL 技术尚未成熟,所以大部分企业级应用程序开发 者目前还应以现有关系型数据库为主,但是在前瞻性项目中可以先试先行 ;与此同时,IV 不论是否打算开始运用 NoSQL 数据库,都应该将传统项目中与数据库相关的代码抽 离,便于将来 NoSQL 技术成熟后迅速切换。
通过阅读本书,我们可以掌握数据库技术的新动向,将现有的数据库技术细节从 应用程序业务中提取出来,把它按数据用法分别封装到各个模块里,然后,根据书中 所讲的知识,通过实践找出项目中适合改用 NoSQL 数据库的地方,并在 NoSQL 日臻 成熟的过程中逐渐迁移过去。
如果我们能在 NoSQL 技术发展之初就把握其脉动,积极尝试并及时总结经验,那 么待其成熟时,就能在混合持久化领域占得先机了,这也正是本书的一大意义。 由于本书作者乃业界巨擘,其观点影响颇广,为求谨慎,译文写出了很多中文术 语的英文原名,以便读者查对,个别容易引发误解的称谓,加引号以强调其特殊含义。 在翻译过程中,得到了机械工业出版社华章公司诸位编辑与工作人员的帮助,在 此深表谢意。同时还要感谢乔晓萌女士对我翻译工作的支持和鼓励。
本书由爱飞翔翻译,舒亚林与张军也参与了部分翻译工作。由于时间仓促,译者 水平有限,错误与疏漏之处敬请读者批评指正。若您对本书有意见和建议,请通过 电子邮件 eastarstormlee@gmail.com 联系译者,或访问网址 http://agilemobidev.com/ eastarlee/book/nosql_distilled/ 留言。
爱飞翔
免费下载阅读
欢迎您 [DOWNLOAD] ,并为我们提出宝贵的建议。本迷你书大小为:4.4M,您需要完整下载,方可正常阅读。
- 目 录
- 译者序
- 前言
- 第一部分 概 念
- 第 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
- XIII
- 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
- XIV
- 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
- XV
- 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
- XVI
- 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
- XVII
- 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
评论 (2 条评论)