内容简介
Part1 NoSQL的兴起与理论基础
Chapter 01 NoSQL与大数据简介
1.1引子——NoSQL在中国大陆使用的案例
1.1.1新浪微博
1.1.2淘宝资料平台
1.1.3视觉中国网站
1.1.4优酷营运资料分析
1.1.5飞信空间
1.1.6豆瓣社区
1.2大数据
1.2.1大数据的度量单位
1.2.2大数据的特点
1.3大数据相关技术
1.3.1大数据撷取技术
1.3.2大数据前置处理技术
1.3.3大数据储存及管理技术
1.3.4大数据分析及采撷技术
1.3.5大数据展现与应用技术
1.4 NoSQL简介
1.4.1什么是NoSQL
1.4.2关联式资料库简史
1.4.3资料库分类
1.4.4关联式资料库的优势
1.4.5不擅长的处理
1.4.6 NoSQL资料库
1.5 NoSQL资料库的类型
1.5.1键值(Key/Value)储存
1.5.2针对文件的资料库
1.5.3针对列的资料库
1.6如何使用和学习NoSQL资料库
1.6.1始终只是一种选择
1.6.2在何种程度上信赖它
1.7云端资料管理
Chapter 02 NOSQL的资料一致性
2.1传统关联式资料库中的ACID
2.1.1最小性
2.1.2一致性
2.1.3隔离性
2.1.4持久性
2.1.5举例
2.2 CAP理论
2.2.1 NoSQL系统是分散式系统
2.2.2 CAP理论说明
2.3 AP的实例——DNS系统
2.3.1 DNS系统
2.3.2 DNS域名解析过程
2.3.3 DNS系统是最后一致性的
2.4资料一致性模型与BASE
2.4.1资料一致性模型
2.4.2 BASE(Basically Available,Soft-state,Eventual consistency)
2.5资料一致性实现方法
2.5.1 Quorum系统NRW策略
2.5.2时间戳记策略
2.5.3向量时钟
Chapter 03 NOSQL的水平扩充与其他基础知识
3.1所有资料储存在一个伺服器上
3.2分片(Sharding)
3.3主从复制
3.4对等(PeerTo Peer)复制
3.5复制和分片的同时使用
3.6资料水平扩充的方法归纳
3.7分片对资料的划分方式
3.7.1 Range-Based Partitioning
3.7.2 Round-Robin
3.8一致性hash演算法(Consistent Hashing)
3.8.1基本场景
3.8.2 hash演算法和单调性
3.8.3 Consistent Hashing演算法的原理
3.8.4虚拟节点
3.9磁碟的读写特点及五分钟法则
3.9.1磁轨、磁区、磁柱和磁头数
3.9.2固态硬碟(SSD)随机读写速度快
3.9.3记忆体:读写速度极快
3.9.4五分钟法则
3.10不要删除资料
Part2 列式NoSQL系统
Chapter 04 BigTable与Google云端运算原理
4.1云端运算
4.1.1云端运算的概念
4.1.2云端运算发展现状
4.1.3云端运算实现机制
4.1.4网格计算与云端运算
4.2 Google档案系统GFS
4.2.1系统架构
4.2.2容错机制
4.2.3系统管理技术
4.3平行资料处理MapReduce
4.3.1产生背景
4.3.2程式设计模型
4.3.3实现机制
4.4分散式锁服务Chubby
4.4.1 Paxos演算法
4.4.2 Chubby系统设计
4.4.3 Chubby档案系统
4.4.4通讯协定
4.4.5正确性与效能
4.5分散式结构化资料表BigTable
4.5.1设计动机与目标
4.5.2资料模型
4.5.3系统架构
4.5.4主要伺服器
4.5.5子表伺服器
4.5.6效能最佳化
Chapter 05 Google云端运算的开放原始码版本——Hadoop
5.1 Hadoop简介
5.1.1 Hadoop发展史
5.1.2 Apache Hadoop专案及系统结构
5.2 Hadoop产生的原因
5.2.1巨量的资料
5.2.2资料的储存和分析
5.3 Hadoop和其他系统的比较
5.3.1和关联式资料库管理系统(RDBMS)的比较
5.3.2和网格计算的比较
5.4 HDFS的架构设计
5.4.1前提和设计目标
5.4.2 Namenode和Datanode
5.4.3档案系统的Namespace
5.4.4资料复制
5.4.5档案系统中继资料的持久化
5.4.6通讯协定
5.4.7稳固性
5.4.8资料组织
5.4.9可存取性
5.4.10空间的回收
5.5安装Hadoop
5.5.1安装JDK 1.7
5.5.2安装Hadoop
5.6 HDFS操作
5.6.1使用FS Shell指令操作H DFS
5.6.2程式设计读写HDFS
5.7 Hadoop中的MapReduce模型
5.7.1 MapReduce计算模型
5.7.2 Hadoop中的 Hello World程式
5.7.3执行MapReduce程式
5.7.4 Hadoop中的Hello World程式——新的API
5.7.5 MapReduce的资料流程和控制流
5.8 Zookeeper
5.8.1 Zookeeper设定安装
5.8.2 Zookeeper的资料模型
5.8.3 Zookeeper的基本使用
5.8.4 ZooKeeper典型的应用场景
5.8.5统一命名服务(Name Service)
5.8.6共用锁(Locks )
5.8.7佇列管理
5.8.8 Zookeeper归纳
5.9 HBase
5.9.1简介
5.9.2逻辑视图
5.9.3实体储存
5.9.4系统架构
5.9.5关键演算法/流程
5.10 HBase的安装和设定
5.11 HBase使用实例
Part3 Key/Value NoSQL系统
Chapter 06 Dynamo:Amazon的高可用键值对储存
6.1简介
6.2背景
6.2.1系统假设和要求
6.2.2服务水准协定(SLA)
6.2.3设计考虑
6.3系统架构
6.3.1系统介面
6.3.2划分演算法
6.3.3复制
6.3.4版本的资料
6.3.5执行get()和put()操作
6.3.6故障处理:暗示移交(Hinted Handoff)
6.3.7处理永久性故障:备份同步
6.3.8会员和故障检测
6.3.9增加/删除储存节点
6.4实现
6.5 Amazon使用的经验与教训
6.5.1平衡效能和耐久性
6.5.2确保均匀的负载分布
6.5.3不同版本:何时以及有多少
6.5.4用户端驱动或伺服器驱动协调
6.5.5权衡后台和前台工作
6.5.6讨论
6.6结论
Chapter07 LevelDb——出自Google的Key-Value资料库
7.1 LevelD b简介
7.2 LevelDb的静态部分
7.2.1整体架构
7.2.2 log档案
7.2.3 SSTable档案
7.2.4 MemTable详解
7.3 LevelDb的动态部分
7.3.1写入与删除记录
7.3.2读取记录
7.3.3 Compaction操作
7.3.4 LevelDb中的Cache
7.3.5 Version、VersionEdit和VersionSet
Chapter 08 RediS实战
8.1 Redis安装与准备
8.1.1下载与安装
8.1.2设定档修改
8.1.3启动Red is
8.1.4停止Redis
8.2 Redis所支援的资料结构
8.2.1 String
8.2.2 List
8.2.3 Set
8.2.4 Hash/杂凑/杂凑
8.2.5有序集合/Zset
8.3 Key操作指令
8.3.1概述
8.3.2指令范例
8.4事物
8.4.1事物概述
8.4.2相关指令
8.4.3指令范例
8.4.4 WATCH指令和以CAS为基础的乐观锁
8.5 Redis的主从复制
8.5.1 Redis的Replication
8.5.2 Replication的工作原理
8.5.3如何设定Replication
8.5.4应用范例
8.6 Redis的持久化
8.6.1持久化机制
8.6.2 RDB机制的优势和劣势
8.6.3 AOF机制的优势和劣势
8.6.4其他
8.7 Redis的虚拟记忆体
8.7.1简介
8.7.2应用场景
8.7.3设定
8.8 pipeline/管线
8.8.1请求回应协定和RTT
8.8.2管线(pipelining)
8.8.3 Benchmark
8.9实例
Part4 文件型NoSQL系统
Chapter 09针对文件的资料库CouchDB
9.1 CouchDB介绍
9.1.1基本概念
9.1.2扩充概念
9.2 CouchDB安装与设定
9.3 RESTAPI
9.3.1资料库REST API
9.3.2文件REST API
9.3.3视图REST API
9.3.4附件REST API
9.4为应用建模
9.4.1描述实体
9.4.2描述一对一和一对多关联性
9.4.3描述多对多关系
9.5实战开发
9.5.1开发Web应用
9.5.2使用CouchDB jQuery外挂程式
9.5.3范例应用建模
9.5.4管理文件
9.5.5视图
9.6进阶内容
9.6.1许可权控制与安全
9.6.2文件更新验证
9.6.3分组
9.6.4键的排序
Chapter10 MongoDB实战
10.1为什么要使用MongoDB
10.1.1不能确定的表结构资讯
10.1.2序列化可以解决一切问题吗
10.1.3无需定义表结构的资料库
10.2 MongoDB的优势和不足
10.2.1无表结构
10.2.2容易扩充
10.2.3丰富的功能
10.2.4效能卓越
10.2.5简便的管理
10.2.6 MongoDB的不足
10.3基本概念
10.4 Linux下MongoDB的安装和设定、启动和停止
10.4.1下载
10.4.2安装
10.4.3启动资料库
10.4.4停止资料库
10.5建立、更新及删除文件
10.5.1连接资料库
10.5.2插入记录
10.5.3_ id key
10.5.4修改记录
10.5.5删除记录
10.6查询记录
10.6.1普通查询
10.6.2条件查询
10.6.3 findOne()语法
10.6.4透过limit限制结果集数量
10.7高级查询
10.7.1条件运算符号
10.7.2 $all比对所有
10.7.3 $exists判断栏位是否存在
10.7.4 Null值处理
10.7.5 $mod取模运算
10.7.6 $ne不等於
10.7.7 $in包含
10.7.8 $nin不包含
10.7.9 $size阵列元素个数
10.7.10正规表示法比对
10.7.11 JavaScript查询和$where查询
10.7.12 count查询记录笔数
10.7.13 skip限制传回记录的起点
10.7.14 sort排序
10.7.15游标
10.8 MapReduce
10.8.1 Map
10.8.2 Reduce
10.8.3 Result
10.8.4 Finalize
10.8.5 Options
10.9索引
10.9.1基础索引
10.9.2文件索引
10.9.3组合索引
10.9.4唯一索引
10.9.5强制使用索引
10.9.6删除索引
10.10性能优化
10.10.1 explain执行计画
10.10.2最佳化器Profile
10.10.3效能最佳化举例
10.11性能监控
10.11.1 mongosniff
10.11.2 Mongostat
10.11.3 db.serverStatus
10.11.4 db.stats
10.11.5协力厂商工具
10.12 Replica Sets复制集
10.12.1部署Replica Sets
10.12.2主从操作记录档oplog
10.12.3主从设定资讯
10.12.4管理维护Replica Sets
10.12.5增减节点
10.13 Sharding分片
10.13.1建立Sharding Cluster
10.13.2管理维护Sharding
10.14 Replica Sets和Sharding的结合
10.14.1建立资料目录
10.14.2设定Replica-Sets
10.14.3设定3台Route Process
10.14.4设定Shard Cluster
10.14.5验证Sharding正常执行
Part5 MySQL基础与效能最佳化
Chapter11 MySQL基础
11.1 CentOS 6.5下MySQL的安装
11.2 MySQL基本指令
11.3 MySQ L资料类型
11.3.1整数
11.3.2浮点数
11.3.3定点数
11.3.4字串(char,varchar,xxxtext )
11.3.5二进位资料
11.3.6日期时间类型
11.3.7资料类型的属性
11.4建立资料库和表
11.5检索表中的资料
11.6多个表的操作
Chapter 12 MySQL进阶特性与效能最佳化
12.1 MySQL Server系统架构
12.1.1逻辑模组成
12.1.2各模组工作配合
12.2储存引擎
12.2.1 MySQL储存引擎概述
12.2.2 MyISAM储存引擎简介
12.2.3 Innodb储存引擎简介
12.3 MySQL中的锁定机制
12.3.1 MySQL中锁定机制概述
12.3.2合理利用锁机制最佳化MySQL
12.4索引与最佳化
12.4.1选择索引的资料类型
12.4.2索引入门
12.4.3索引的类型
12.4.4高性能的索引策略
12.4.5索引与加锁
12.5 MySQL的MyISAM和Innodb的Cache最佳化
12.5.1 MyISAM储存引擎的Cache最佳化
12.5.2 Innodb快取相关最佳化
12.6 MySQL的复制
12.6.1复制对於可扩充性的意义
12.6.2复制的原理
12.6.3体验MySQL复制
12.6.4复制的常用拓扑结构
12.7可扩充性设计之资料切分
12.7.1何谓资料切分
12.7.2资料的垂直切分
12.7.3资料的水平切分
12.7.4垂直与水平联合切分的使用
12.7.5资料切分及整合方案
12.7.6资料切分与整合中可能存在的问题
12.8小结