搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
NoSQL实践指南:基本原则、设计准则及实用技巧
0.00    
图书来源:
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787111531173
  • 作      者:
    (美)丹·苏利文(Dan Sullivan)著
  • 出 版 社 :
    机械工业出版社
  • 出版日期:
    2016
收藏
内容介绍
  本书作者DanSullivan使用过位于行业前沿的各种数据库产品,在本书中,他利用20多年的工作经验,讲解了键值数据库、文档数据库、列族数据库及图数据库这四类NoSQL数据库的优点、用例及术语。对于每一种数据库,他都给出了务实的开发技巧,以帮助大家构建高价值的应用程序。通过分步讲解的范例,读者能够学到如何为每项任务选择合适的数据库,以及怎样用正确的方式来使用该数据库。
展开
目录
译者序
前 言
致 谢
引 言
第一部分 入  门
第1章 用不同的数据库应对不同的需求 2
1.1 关系型数据库的设计 3
1.2 早期的数据管理系统 4
1.2.1 平面文件数据管理系统 4
1.2.2 分层数据模型系统 7
1.2.3 网络数据管理系统 9
1.2.4 早期数据管理系统小结 11
1.3 引发变革的关系型数据库 11
1.4 催生NoSQL数据库(非单纯的SQL数据库/非SQL数据库)的动因 18
1.4.1 可伸缩性 18
1.4.2 成本开销 19
1.4.3 灵活性 19
1.4.4 可用性 20
1.5 小结 20
1.6 案例研究 21
1.7 复习题 21
1.8 引用资料 22
1.9 参考书目 22
第2章 NoSQL数据库的种类 23
2.1 分布式数据库的数据管理 24
2.1.1 持久地存储数据 25
2.1.2 维护数据的一致性 25
2.1.3 确保数据的可用性 26
2.1.4 在响应时间、一致性与持久性之间寻求平衡 29
2.1.5 CAP定理:一致性、可用性及分区保护性 31
2.2 ACID与BASE 32
2.2.1 ACID:原子性、一致性、隔离性、持久性 33
2.2.2 BASE:基本可用、软状态、最终一致 33
2.2.3 最终一致性的类型 34
2.3 四种NoSQL数据库类型 35
2.3.1 键值对数据库 36
2.3.2 文档数据库 40
2.3.3 列族数据库 42
2.3.4 图数据库 43
2.4 小结 45
2.5 复习题 46
2.6 引用资料 47
2.7 参考书目 47
第二部分 键值数据库
第3章 键值数据库简介 50
3.1 从数组到键值数据库的演变 51
3.1.1 数组(带着辅助轮的键值数据存储机制) 51
3.1.2 关联数组(拿掉辅助轮的键值数据存储机制) 52
3.1.3 缓存(加装了齿轮的自行车) 53
3.1.4 内存和磁盘中的键值数据库(从自行车到机动车) 55
3.2 键值数据库的重要特性 56
3.2.1 简洁:开发者不需要设计复杂的数据模型 56
3.2.2 速度:越快越好 57
3.2.3 易于缩放:随时应对访问量的变化 59
3.3 键:不只是无意义的标识符 63
3.3.1 如何构造键名 63
3.3.2 通过键来定位相关的值 65
3.4 值:存放任意数据 68
3.4.1 值不一定要有明确的类型 68
3.4.2 对值进行搜索时的一些限制 69
3.5 小结 70
3.6 复习题 71
3.7 引用资料 71
3.8 参考书目 72
第4章 键值数据库的术语 73
4.1 与键值数据库的数据建模有关的术语 74
4.1.1 键 75
4.1.2 值 77
4.1.3 命名空间 77
4.1.4 分区 78
4.1.5 分区键 80
4.1.6 无纲要的模型 80
4.2 与键值数据库的架构有关的术语 81
4.2.1 集群 81
4.2.2 环 82
4.2.3 复制 84
4.3 与键值数据库的实现有关的术语 84
4.3.1 哈希函数 84
4.3.2 碰撞 86
4.3.3 压缩 86
4.4 小结 87
4.5 复习题 87
4.6 引用资料 88
第5章 键值数据库的设计 89
5.1 键的设计与分区 90
5.1.1 键名应该遵循命名约定 90
5.1.2 设计良好的键名,以简化程序的代码 91
5.1.3 处理位于某个范围内的值 92
5.1.4 设计键名时必须考虑实现层面的限制 93
5.1.5 如何根据键名来分区 94
5.2 设计结构化的值 95
5.2.1 结构化的数据类型有助于降低延迟 95
5.2.2 过于庞大的值可能会降低读取操作和写入操作的性能 97
5.3 键值数据库的局限 99
5.3.1 只能通过键来查询数据 100
5.3.2 键值数据库不支持查询位于某个范围内的值 100
5.3.3 不支持像关系型数据库所使用的那种SQL式标准查询语言 101
5.4 适用于键值数据库的设计模式 101
5.4.1 TTL键 102
5.4.2 模拟关系型数据库的表格 103
5.4.3 聚合 104
5.4.4 原子聚合 105
5.4.5 可枚举的键 106
5.4.6 索引 107
5.5 小结 108
5.6 案例研究:用键值数据库管理移动应用程序的配置 108
5.7 复习题 110
5.8 引用资料 111
第三部分 文档数据库
第6章 文档数据库简介 114
6.1 何谓文档 115
6.1.1 文档没有那么简单 115
6.1.2 文档与键值对 118
6.1.3 以集合的形式来管理多份文档 118
6.2 文档数据库无需定义显式纲要 125
6.3 文档数据库的基本操作 127
6.3.1 向集合中插入文档 128
6.3.2 从集合中删除文档 129
6.3.3 更新集合中的文档 130
6.3.4 从集合中获取文档 131
6.4 小结 132
6.5 复习题 132
6.6 引用资料 133
第7章 文档数据库的术语 134
7.1 与文档和集合有关的术语 135
7.1.1 文档 135
7.1.2 集合 137
7.1.3 嵌入式文档 137
7.1.4 无纲要的数据库 138
7.1.5 多形的纲要 141
7.2 与分区类型有关的术语 141
7.2.1 垂直分区 142
7.2.2 水平分区或分片 143
7.3 与数据建模及查询处理有关的术语 146
7.3.1 规范化 146
7.3.2 去规范化 148
7.3.3 查询处理器 148
7.4 小结 149
7.5 复习题 149
7.6 引用资料 150
第8章 文档数据库的设计 151
8.1 在规范化与去规范化之间求得平衡 152
8.1.1 一对多关系 153
8.1.2 多对多关系 153
8.1.3 有时需要对多张表格执行join操作 154
8.1.4 在关系型数据库中执行join操作的开销可能会比较大 155
8.1.5 文档数据库的建模者应该怎样做 157
8.2 应对可变的文档 161
8.3 编制数量适中的索引 164
8.3.1 读取操作相对较多的应用程序 164
8.3.2 写入操作相对较多的应用程序 164
8.4 为常见的关系建模 166
8.4.1 文档数据库的一对多关系 166
8.4.2 文档数据库的多对多关系 166
8.4.3 为文档数据库中的层级关系建模 168
8.5 小结 169
8.6 案例研究:客户的货物清单 170
8.6.1 是否使用嵌入式文档 171
8.6.2 选定所要编制的索引 172
8.6.3 是否需要把各类清单分别放在不同的集合中 172
8.7 复习题 172
8.8 引用资料 173
第四部分 列族数据库
第9章 列族数据库简介 176
9.1 较早出现的列族数据库:Google BigTable 177
9.1.1 动态地控制列族中的列 178
9.1.2 根据行ID、列名及时间戳来确定数据值 179
9.1.3 控制数据的存储位置 179
9.1.4 同一行内的读取和写入行为都是原子操作 180
9.1.5 数据行之间按顺序排列 180
9.2 列族数据库与键值数据库及文档数据库的异同 181
9.2.1 列族数据库与键值数据库的异同 182
9.2.2 列族数据库与文档数据库的异同 182
9.2.3 列族数据库与关系型数据库的对比 183
9.3 列族数据库所使用的架构 186
9.3.1 HBase数据库采用由多种节点所组成的架构 186
9.3.2 Cassandra数据库采用由对等节点所组成的架构 187
9.3.3 依照Gossip协议来传播各服务器的状态 188
9.3.4 用热力学术语来谈分布式数据库为什么需要反熵 189
9.3.5 通过提示移交机制,替发生故障的节点保留与写入请求有关的信息 190
9.4 列族数据库的适用场合 192
9.5 小结 192
9.6 复习题 193
9.7 引用资料 193
第10章 列族数据库的术语 194
10.1 列族数据库的基本组件 195
10.1.1 键空间 195
10.1.2 行键 195
10.1.3 列 196
10.1.4 列族 196
10.2 实现列族数据库所用的结构及相关流程 197
10.2.1 列族数据库的内部结构及配置参数 198
10.2.2 分布式数据库常用的术语:集群与分区 198
10.2.3 列族数据库的其他底层组件 199
10.3 处理流程及协议 203
10.3.1 复制 203
10.3.2 反熵 203
10.3.3 Gossip协议 204
10.3.4 提示移交 205
10.4 小结 205
10.5 复习题 206
10.6 引用资料 206
第11章 列族数据库的设计 207
11.1 与设计数据表格有关的建议 209
11.1.1 用去规范化来代替连接 209
11.1.2 善用无值的列 210
11.1.3 同时在列名和列值之中存储数据 211
11.1.4 用一个数据行来为一个实体建模 211
11.1.5 设计行键时不要将大量操作分配给少数服务器 212
11.1.6 维护适当数量的列值版本 213
11.1.7 不要在列值中使用复杂的数据结构 213
11.2 与编制索引有关的建议 214
11.2.1 何时应该使用由列族数据库系统自动管理的辅助索引 215
11.2.2 何时应该用表格来创建并管理辅助索引 217
11.3 应对大数据的工具 220
11.3.1 萃取、转置并加载数据 220
11.3.2 分析大数据 221
11.3.3 监控大数据所用的工具 224
11.4 小结 224
11.5 案例研究:客户数据分析 225
11.6 复习题 226
11.7 引用资料 227
第五部分 图 数 据 库
第12章 图数据库简介 230
12.1 什么是图 230
12.2 用图对网络关系进行建模 231
12.2.1 对地理位置进行建模 231
12.2.2 对传染病进行建模 232
12.2.3 对抽象和具体的实体进行建模 233
12.2.4 对社交媒体进行建模 234
12.3 图数据库的优势 235
12.3.1 图数据库不需要执行连接操作,因而可以更快地进行查询 235
12.3.2 建模过程较为简单 237
12.3.3 可以为实体之间的多种关系进行建模 237
12.4 小结 238
12.5 复习题 238
12.6 引用资料 238
第13章 图数据库的术语 239
13.1 图的元素 240
13.1.1 顶点 240
13.1.2 边 240
13.1.3 路径 242
13.1.4 自环 242
13.2 图的操作 242
13.2.1 图的并集 243
13.2.2 图的交集 243
13.2.3 图的遍历 243
13.3 图和节点的属性 244
13.3.1 同构性 244
13.3.2 阶与尺寸 245
13.3.3 度数 245
13.3.4 接近中心性 245
13.3.5 中介性 246
13.4 图的类型 246
13.4.1 无向图和有向图 247
13.4.2 流动网络 247
13.4.3 二分图 248
13.4.4 多重图 248
13.4.5 加权图 248
13.5 小结 249
13.6 复习题 249
13.7 引用资料 249
第14章 图数据库的设计 250
14.1 开始设计图模型 250
14.1.1 设计一个描述社交网络的图数据库 251
14.1.2 再次用查询请求来引领模型设计 254
14.2 对图进行查询 255
14.2.1 Cypher:声明式的查询 256
14.2.2 Gremlin:通过遍历图模型来进行查询 257
14.3 图数据库的设计技巧及注意事项 260
14.3.1 用索引来缩短获取数据的时间 260
14.3.2 使用类型适当的边 260
14.3.3 遍历图模型时要注意循环路径 261
14.3.4 考虑图数据库的扩展问题 262
14.4 小结 263
14.5 案例研究:优化运输路线 263
14.5.1 掌握用户的需求 263
14.5.2 设计一套图模型分析方案 263
14.6 复习题 264
14.7 引用资料 265
第六部分 选择适合应用程序的数据库
第15章 如何选择数据库 268
15.1 选择NoSQL数据库 269
15.1.1 何时应该使用键值数据库 270
15.1.2 文档数据库的用例及适用场合 270
15.1.3 列族数据库的用例及适用场合 271
15.1.4 图数据库的用例及适用场合 272
15.2 将NoSQL数据库与关系型数据库结合起来使用 273
15.3 小结 274
15.4 复习题 274
15.5 引用资料 274
第七部分 附  录
附录A 各章复习题的参考答案 278
附录B NoSQL数据库列表 298
术语表 303
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证