《奠定大数据的基石 NoSQL数据库技术》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:皮雄军编著
  • 出 版 社:佳魁信息
  • 出版年份:2015
  • ISBN:9789863791621
  • 页数:502 页
图书介绍:

Part1 NoSQL的兴起与理论基础 2

Chapter 01 NoSQL与大数据简介 2

1.1引子——NoSQL在中国大陆使用的案例 2

1.1.1新浪微博 2

1.1.2淘宝资料平台 3

1.1.3视觉中国网站 4

1.1.4优酷营运资料分析 5

1.1.5飞信空间 6

1.1.6豆瓣社区 7

1.2大数据 9

1.2.1大数据的度量单位 9

1.2.2大数据的特点 10

1.3大数据相关技术 12

1.3.1大数据撷取技术 12

1.3.2大数据前置处理技术 12

1.3.3大数据储存及管理技术 13

1.3.4大数据分析及采撷技术 13

1.3.5大数据展现与应用技术 14

1.4 NoSQL简介 15

1.4.1什么是NoSQL 15

1.4.2关联式资料库简史 15

1.4.3资料库分类 15

1.4.4关联式资料库的优势 17

1.4.5不擅长的处理 18

1.4.6 NoSQL资料库 21

1.5 NoSQL资料库的类型 23

1.5.1键值(Key/Value)储存 23

1.5.2针对文件的资料库 25

1.5.3针对列的资料库 25

1.6如何使用和学习NoSQL资料库 26

1.6.1始终只是一种选择 26

1.6.2在何种程度上信赖它 27

1.7云端资料管理 27

Chapter 02 NOSQL的资料一致性 29

2.1传统关联式资料库中的ACID 30

2.1.1最小性 30

2.1.2一致性 30

2.1.3隔离性 31

2.1.4持久性 31

2.1.5举例 31

2.2 CAP理论 32

2.2.1 NoSQL系统是分散式系统 32

2.2.2 CAP理论说明 33

2.3 AP的实例——DNS系统 35

2.3.1 DNS系统 35

2.3.2 DNS域名解析过程 35

2.3.3 DNS系统是最后一致性的 38

2.4资料一致性模型与BASE 38

2.4.1资料一致性模型 38

2.4.2 BASE(Basically Available,Soft-state,Eventual consistency) 40

2.5资料一致性实现方法 40

2.5.1 Quorum系统NRW策略 41

2.5.2时间戳记策略 42

2.5.3向量时钟 46

Chapter 03 NOSQL的水平扩充与其他基础知识 51

3.1所有资料储存在一个伺服器上 52

3.2分片(Sharding) 53

3.3主从复制 55

3.4对等(PeerTo Peer)复制 56

3.5复制和分片的同时使用 57

3.6资料水平扩充的方法归纳 58

3.7分片对资料的划分方式 58

3.7.1 Range-Based Partitioning 59

3.7.2 Round-Robin 62

3.8一致性hash演算法(Consistent Hashing) 63

3.8.1基本场景 63

3.8.2 hash演算法和单调性 64

3.8.3 Consistent Hashing演算法的原理 64

3.8.4虚拟节点 67

3.9磁碟的读写特点及五分钟法则 68

3.9.1磁轨、磁区、磁柱和磁头数 69

3.9.2固态硬碟(SSD)随机读写速度快 70

3.9.3记忆体:读写速度极快 70

3.9.4五分钟法则 71

3.10不要删除资料 71

Part2 列式NoSQL系统 73

Chapter 04 BigTable与Google云端运算原理 73

4.1云端运算 74

4.1.1云端运算的概念 74

4.1.2云端运算发展现状 78

4.1.3云端运算实现机制 79

4.1.4网格计算与云端运算 81

4.2 Google档案系统GFS 85

4.2.1系统架构 86

4.2.2容错机制 89

4.2.3系统管理技术 90

4.3平行资料处理MapReduce 91

4.3.1产生背景 91

4.3.2程式设计模型 92

4.3.3实现机制 93

4.4分散式锁服务Chubby 97

4.4.1 Paxos演算法 97

4.4.2 Chubby系统设计 98

4.4.3 Chubby档案系统 101

4.4.4通讯协定 102

4.4.5正确性与效能 105

4.5分散式结构化资料表BigTable 106

4.5.1设计动机与目标 107

4.5.2资料模型 109

4.5.3系统架构 109

4.5.4主要伺服器 110

4.5.5子表伺服器 111

4.5.6效能最佳化 115

Chapter 05 Google云端运算的开放原始码版本——Hadoop 117

5.1 Hadoop简介 118

5.1.1 Hadoop发展史 118

5.1.2 Apache Hadoop专案及系统结构 120

5.2 Hadoop产生的原因 121

5.2.1巨量的资料 121

5.2.2资料的储存和分析 123

5.3 Hadoop和其他系统的比较 124

5.3.1和关联式资料库管理系统(RDBMS)的比较 125

5.3.2和网格计算的比较 126

5.4 HDFS的架构设计 128

5.4.1前提和设计目标 128

5.4.2 Namenode和Datanode 129

5.4.3档案系统的Namespace 129

5.4.4资料复制 130

5.4.5档案系统中继资料的持久化 131

5.4.6通讯协定 132

5.4.7稳固性 133

5.4.8资料组织 134

5.4.9可存取性 135

5.4.10空间的回收 135

5.5安装Hadoop 136

5.5.1安装JDK 1.7 136

5.5.2安装Hadoop 138

5.6 HDFS操作 144

5.6.1使用FS Shell指令操作H DFS 144

5.6.2程式设计读写HDFS 149

5.7 Hadoop中的MapReduce模型 151

5.7.1 MapReduce计算模型 151

5.7.2 Hadoop中的 Hello World程式 152

5.7.3执行MapReduce程式 158

5.7.4 Hadoop中的Hello World程式——新的API 160

5.7.5 MapReduce的资料流程和控制流 162

5.8 Zookeeper 164

5.8.1 Zookeeper设定安装 164

5.8.2 Zookeeper的资料模型 166

5.8.3 Zookeeper的基本使用 167

5.8.4 ZooKeeper典型的应用场景 170

5.8.5统一命名服务(Name Service) 170

5.8.6共用锁(Locks ) 173

5.8.7佇列管理 174

5.8.8 Zookeeper归纳 177

5.9 HBase 177

5.9.1简介 177

5.9.2逻辑视图 178

5.9.3实体储存 179

5.9.4系统架构 183

5.9.5关键演算法/流程 185

5.10 HBase的安装和设定 190

5.11 HBase使用实例 192

Part3 Key/Value NoSQL系统 195

Chapter 06 Dynamo:Amazon的高可用键值对储存 195

6.1简介 196

6.2背景 197

6.2.1系统假设和要求 198

6.2.2服务水准协定(SLA) 199

6.2.3设计考虑 201

6.3系统架构 203

6.3.1系统介面 203

6.3.2划分演算法 204

6.3.3复制 205

6.3.4版本的资料 205

6.3.5执行get()和put()操作 208

6.3.6故障处理:暗示移交(Hinted Handoff) 210

6.3.7处理永久性故障:备份同步 210

6.3.8会员和故障检测 211

6.3.9增加/删除储存节点 213

6.4实现 213

6.5 Amazon使用的经验与教训 215

6.5.1平衡效能和耐久性 216

6.5.2确保均匀的负载分布 218

6.5.3不同版本:何时以及有多少 222

6.5.4用户端驱动或伺服器驱动协调 223

6.5.5权衡后台和前台工作 224

6.5.6讨论 225

6.6结论 225

Chapter07 LevelDb——出自Google的Key-Value资料库 227

7.1 LevelD b简介 228

7.2 LevelDb的静态部分 229

7.2.1整体架构 229

7.2.2 log档案 232

7.2.3 SSTable档案 233

7.2.4 MemTable详解 237

7.3 LevelDb的动态部分 238

7.3.1写入与删除记录 238

7.3.2读取记录 239

7.3.3 Compaction操作 242

7.3.4 LevelDb中的Cache 245

7.3.5 Version、VersionEdit和VersionSet 247

Chapter 08 RediS实战 249

8.1 Redis安装与准备 250

8.1.1下载与安装 250

8.1.2设定档修改 251

8.1.3启动Red is 253

8.1.4停止Redis 254

8.2 Redis所支援的资料结构 255

8.2.1 String 256

8.2.2 List 260

8.2.3 Set 266

8.2.4 Hash/杂凑/杂凑 270

8.2.5有序集合/Zset 274

8.3 Key操作指令 281

8.3.1概述 281

8.3.2指令范例 282

8.4事物 286

8.4.1事物概述 286

8.4.2相关指令 287

8.4.3指令范例 288

8.4.4 WATCH指令和以CAS为基础的乐观锁 289

8.5 Redis的主从复制 290

8.5.1 Redis的Replication 290

8.5.2 Replication的工作原理 291

8.5.3如何设定Replication 291

8.5.4应用范例 292

8.6 Redis的持久化 293

8.6.1持久化机制 293

8.6.2 RDB机制的优势和劣势 293

8.6.3 AOF机制的优势和劣势 294

8.6.4其他 295

8.7 Redis的虚拟记忆体 296

8.7.1简介 296

8.7.2应用场景 297

8.7.3设定 297

8.8 pipeline/管线 299

8.8.1请求回应协定和RTT 299

8.8.2管线(pipelining) 299

8.8.3 Benchmark 300

8.9实例 301

Part4 文件型NoSQL系统 307

Chapter 09针对文件的资料库CouchDB 307

9.1 CouchDB介绍 308

9.1.1基本概念 308

9.1.2扩充概念 308

9.2 CouchDB安装与设定 309

9.3 RESTAPI 311

9.3.1资料库REST API 311

9.3.2文件REST API 311

9.3.3视图REST API 312

9.3.4附件REST API 312

9.4为应用建模 313

9.4.1描述实体 313

9.4.2描述一对一和一对多关联性 314

9.4.3描述多对多关系 315

9.5实战开发 317

9.5.1开发Web应用 317

9.5.2使用CouchDB jQuery外挂程式 319

9.5.3范例应用建模 320

9.5.4管理文件 321

9.5.5视图 325

9.6进阶内容 332

9.6.1许可权控制与安全 332

9.6.2文件更新验证 333

9.6.3分组 333

9.6.4键的排序 334

Chapter10 MongoDB实战 335

10.1为什么要使用MongoDB 336

10.1.1不能确定的表结构资讯 336

10.1.2序列化可以解决一切问题吗 336

10.1.3无需定义表结构的资料库 337

10.2 MongoDB的优势和不足 337

10.2.1无表结构 337

10.2.2容易扩充 338

10.2.3丰富的功能 339

10.2.4效能卓越 339

10.2.5简便的管理 339

10.2.6 MongoDB的不足 340

10.3基本概念 340

10.4 Linux下MongoDB的安装和设定、启动和停止 341

10.4.1下载 341

10.4.2安装 341

10.4.3启动资料库 343

10.4.4停止资料库 346

10.5建立、更新及删除文件 347

10.5.1连接资料库 347

10.5.2插入记录 348

10.5.3_ id key 349

10.5.4修改记录 350

10.5.5删除记录 350

10.6查询记录 351

10.6.1普通查询 351

10.6.2条件查询 352

10.6.3 findOne()语法 353

10.6.4透过limit限制结果集数量 353

10.7高级查询 353

10.7.1条件运算符号 354

10.7.2 $all比对所有 354

10.7.3 $exists判断栏位是否存在 354

10.7.4 Null值处理 355

10.7.5 $mod取模运算 356

10.7.6 $ne不等於 356

10.7.7 $in包含 357

10.7.8 $nin不包含 357

10.7.9 $size阵列元素个数 358

10.7.10正规表示法比对 358

10.7.11 JavaScript查询和$where查询 358

10.7.12 count查询记录笔数 359

10.7.13 skip限制传回记录的起点 359

10.7.14 sort排序 360

10.7.15游标 360

10.8 MapReduce 361

10.8.1 Map 362

10.8.2 Reduce 363

10.8.3 Result 363

10.8.4 Finalize 364

10.8.5 Options 365

10.9索引 365

10.9.1基础索引 366

10.9.2文件索引 366

10.9.3组合索引 367

10.9.4唯一索引 367

10.9.5强制使用索引 367

10.9.6删除索引 369

10.10性能优化 369

10.10.1 explain执行计画 369

10.10.2最佳化器Profile 370

10.10.3效能最佳化举例 372

10.11性能监控 374

10.11.1 mongosniff 374

10.11.2 Mongostat 375

10.11.3 db.serverStatus 376

10.11.4 db.stats 378

10.11.5协力厂商工具 378

10.12 Replica Sets复制集 379

10.12.1部署Replica Sets 379

10.12.2主从操作记录档oplog 383

10.12.3主从设定资讯 384

10.12.4管理维护Replica Sets 385

10.12.5增减节点 388

10.13 Sharding分片 393

10.13.1建立Sharding Cluster 394

10.13.2管理维护Sharding 397

10.14 Replica Sets和Sharding的结合 404

10.14.1建立资料目录 405

10.14.2设定Replica-Sets 406

10.14.3设定3台Route Process 408

10.14.4设定Shard Cluster 409

10.14.5验证Sharding正常执行 409

Part5 MySQL基础与效能最佳化 411

Chapter11 MySQL基础 411

11.1 CentOS 6.5下MySQL的安装 412

11.2 MySQL基本指令 415

11.3 MySQ L资料类型 419

11.3.1整数 419

11.3.2浮点数 419

11.3.3定点数 420

11.3.4字串(char,varchar,xxxtext ) 420

11.3.5二进位资料 421

11.3.6日期时间类型 421

11.3.7资料类型的属性 421

11.4建立资料库和表 422

11.5检索表中的资料 426

11.6多个表的操作 430

Chapter 12 MySQL进阶特性与效能最佳化 435

12.1 MySQL Server系统架构 436

12.1.1逻辑模组成 436

12.1.2各模组工作配合 439

12.2储存引擎 443

12.2.1 MySQL储存引擎概述 443

12.2.2 MyISAM储存引擎简介 444

12.2.3 Innodb储存引擎简介 446

12.3 MySQL中的锁定机制 448

12.3.1 MySQL中锁定机制概述 448

12.3.2合理利用锁机制最佳化MySQL 450

12.4索引与最佳化 453

12.4.1选择索引的资料类型 453

12.4.2索引入门 454

12.4.3索引的类型 454

12.4.4高性能的索引策略 456

12.4.5索引与加锁 462

12.5 MySQL的MyISAM和Innodb的Cache最佳化 464

12.5.1 MyISAM储存引擎的Cache最佳化 464

12.5.2 Innodb快取相关最佳化 468

12.6 MySQL的复制 471

12.6.1复制对於可扩充性的意义 471

12.6.2复制的原理 472

12.6.3体验MySQL复制 473

12.6.4复制的常用拓扑结构 478

12.7可扩充性设计之资料切分 484

12.7.1何谓资料切分 485

12.7.2资料的垂直切分 485

12.7.3资料的水平切分 488

12.7.4垂直与水平联合切分的使用 490

12.7.5资料切分及整合方案 493

12.7.6资料切分与整合中可能存在的问题 500

12.8小结 502