NoSQL精粹 pdf

NoSQL精粹

内容简介

塞得拉吉、福勒编著的《NoSQL精粹》言简意赅 地介绍了这项新技术。书中解释了NoSQL数据库的工 作原理,以及NoSQL可能优于传统关系 型数据库之处。作者讲解了有关概念,以指导读者评 估NoSQL数据库是否有利于解决当前项目需求,并介 绍了 采用NoSQL数据库后还需深入研究的其他技术。

《NoSQL精粹》第一部分专注于讲解无模式数据 模型、聚合、新的分布式模型、CAP定理、映射一化 简等核心概念, 第二部分研究实现NoSQL时的架构与设计问题。作者 以实际用例演示了如何在工作中运用NoSQL数据库, 并以 Riak、MongoDB、Cassandra和Ne04j为例,着重讲解 了每一科NoSQL数据库的典型用法。

此外,本书利用Pramod Sadalage先生的开拓性 研究成果,展示了怎样在模式迁移问题上实现演进式 设计: 这是运用NoSQL数据库时必备的技巧。本书结尾描绘 了NoSQL如何引领即将到来的混合持久化新时代,那 将是 多种数据库并存的世界,架构师可针对每种数据访问 类型选择最优技术。

作者简介

Pramod J.Sadalage先生是ThoughtWorks公司首席顾问,致力于消弭数据库专业人员与应用程序开发者之间的鸿沟,他在这一鲜有人问津的领域中独享其乐。Sadalage先生经常接受客户咨询,为他们所面临的那些依赖新工艺、新科技,且极有挑战性的数据需求出谋划策。他研发出一项前沿技术,以受版本控制的数据迁移操作渐进地设计关系型数据库。Sadalage先生与Scott Ambler先生合著的《数据库重构》一书荣获2007年Jolt生产效率大奖。 Martin Fowler,顶级软件开发大师,软件开发“教父”,敏捷开发方法的创始人之一,在面向对象分析与设计、UML、模式、极限编程、重构和DSL等领域都有非常深入的研究,并为软件开发行业做出了卓越贡献。他乐于分享,撰写了《企业应用架构模式》(荣获2003年Jolt生产效率大奖)、《重构:改善既有代码的设计》、《分析模式:可复用的对象模型》、《UML精粹:标准对象建模语言简明指南》、《领域特定语言》等在软件开发领域颇负盛名的著作。

目录

译者序
前言
第一部分 概念
第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

感悟与笔记

1、为什么使用NoSQL

  • 阻抗失谐:关系数据库的关系模型和内存中的数据结构之间存在的差异。
  • 集成数据库:通常由不同团队所开发 的多个应用程序,将其数据存储在一个公用的数据库中。
  • 应用程序数据库:其内容只能有一个应用程序的代码库直接访问,而这份代码库是由一个团队来维护的。
  • 选用NoSQL原因:一是待处理数据量很大,或对数据访问的效率要求很高,从而必须将数据放在集群上;二是想采用一种更为方便的数据交互方式来提高应用程序开发效率。
  • NoSQL数据库共同特性:
    • 不使用关系模型
    • 在集群中运行良好
    • 开源
    • 适用于21世纪的互联网公司
    • 无模式

2、聚合数据类型

  • 聚合:把一组相互关联的对象视为一个整体单元来操作,该单元为聚合。
  • 面向聚合数据库:键值数据库、文档数据库、列族数据库。
  • 聚合无知:关系型数据库的数据模型中没有“聚合”概念,因此称之为“聚合无知”。
  • 数据交互大多在同意聚合内执行,则使用面向聚合的数据库;若交互操作需要使用多种不同格式的数据,则用“聚合无知式数据库”。

3、数据模型详解

  • 图数据库:将数据组织成一张由节点和变所组成的图,适合处理关系复杂的数据结构。
  • 隐含模式:指在编写数据操作代码时,对数据结构所做的一系列假设。
  • 物化视图:面向聚合数据库用不同的方式重组聚合的数据得出。(通常以映射化简来计算)

4、分布式模型

  • 数据分布方式:
    • 分片:将不同的数据分片存放在多个服务器中,每一个数据子集都专门由一台服务器负责。
    • 复制:将数据复制到多个服务器上,每份数据都能在多个节点中找到。
  • 复制方式:
    • 主从复制:将其中一个节点当做权威数据源,并负责写入操作;其他从节点都要和主节点保持同步,他们可以负责读取操作。
    • 对等复制:任何节点均可写入,节点间互相协调以同步其数据。
  • 主从复制减少更新数据时的冲突几率,但它却会让主节点成为写入操作的瓶颈,对等复制则避免了这一点。

5、一致性

  • 写入冲突与读写冲突: 当两个客户端试图修改同一份数据时会发生“写入冲突”;当某客户端在另一客户的执行写入操作的过程中读取数据时,会发生“读写冲突”。
  • 更新一致性:悲观方式以锁定数据记录来避免冲突,乐观方式则在事后检测冲突并将其修复。
  • 最终一致性:写入操作已经传播至所有节点。
  • CAP定理:一致性、可用性、分区耐受性这三个属性只能同时满足两个。当有可能发生“网络分区”现象时,必须在数据的“可用性”和“一致性”间权衡。
  • 仲裁:在采用“复制”技术的分布式模型中执行数据库操作时,无需联系所有副本,只要足够多的副本所认可,就能保持“强一致性”了。

6、版本戳

  • 版本戳:用来检测并发冲突。读取并更新某份数据后,可检测其版本戳,以确保在读取和写入操作之间,没有其他人更新过此数据。
  • 版本戳实现方式:计数器、UUID、内容哈希码、时间戳等。
  • 数组式版本戳:检测不同节点之间是否发生了“相互冲突的更新操作”。

7、映射-化简

  • 映射-化简模式:一种安排数据处理流程的手段,可以利用及集群中的多台计算机,同时又能将某台计算机所需的数据及处理工作尽量放在本机执行。一种在集群上执行并发计算所用的模式。
  • 映射:从聚合中读出数据,将之缩减为相关键值对。映射操作每次只能读取一条记录,所以可以在存放记录的节点上并发执行。
  • 映射和化简:映射任务会生成许多具备同一关键字的值,而化简任务则将他们简化为单一的输出值。每个化简函数只操作单个键相关的映射结果,所以多个化简函数可以依据关键字执行并发化简。
  • ”管道”:输入数据与输出数据形式相同的多个化简函数可归并为管道,以提高并发执行能力,减少所需传输的数据量。
  • 如要广泛使用映射-化简计算的结果,可将其存储为物化视图。可用增量式映射-化简操作更新物化视图。

会员免费下载

链接:https://pan.baidu.com/s/1u4UHKsdsnMQxvL_8oS22lg

提取码: ****** 查看

¥69/年 开通VIP会员

成为本站VIP会员即可无限下载。 请先点击百度网盘,看资源是否还在,不在请点击链接通知站长补资源。

资源标签点击标签可查看对应分类的资源

NoSQL

资源推荐

Oracle数据库性能优化方法论和最佳实践

Oracle数据库管理从入门到精通

Oracle PL/SQL DBA编程入门

高性能MySQL(第3版)

Oracle PLSQL性能调优诀窍与方法

MySQL王者晋级之路

数据库系统导论(原书第8版)

PostgreSQL实战

Copyright © 2021-2022 知识猫. All Rights Reserved.