下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922
读书 > 数据库 >MySQL > NoSQL数据库技术实战

NoSQL数据库技术实战

综合评级:★★★★★

定价:69.00

作者:皮雄军

出版社:清华大学出版社

出版日期:2015年1月

页数:398

字数:637

ISBN:9787302380399

书籍介绍
本书由浅入深,全面系统地介绍了NoSQL系统。本书既对NoSQL系统的理论进行了深入浅出的分析,又介绍了每一种NoSQL数据库在业界广泛应用的一个具体系统,理论与实战并重。

  本书共分5篇,12章。涵盖的内容有:NoSQL与大数据简介、NoSQL的数据一致性、NoSQL的水平扩展与其他基础知识、BigTable与Google云计算原理、Google云计算的开源版本——Hadoop、Dynamo:Amazon的高可用键值对存储、LevelDb——出自Google的Key-Value数据库、Redis实战、面向文档的数据库CouchDB、MongoDB实战、MySQL基础、MySQL高级特性与性能优化。

  本书涉及面广,从基本操作到高级技术和核心原理,再到项目开发,几乎涉及NoSQL系统的所有重要知识。本书适合所有想全面学习NoSQL的人员阅读,也适合各种使用NoSQL进行开发的工程技术人员使用。

本书精华内容

NoSQL与大数据简介

NoSQL的数据一致性

NoSQL的水平扩展

其他NoSQL的基础知识

BigTable与Google云计算原理

Google云计算的开源版本——Hadoop

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

LevelDb——出自Google的Key-Value数据库

Redis实战

面向文档的数据库CouchDB

MongoDB实战

MySQL基础

MySQL高级特性与性能优化

相关课程
目录
第1篇NoSQL的兴起与理论基础

第1章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.4NoSQL简介

1.4.1什么是NoSQL

1.4.2关系型数据库简史

1.4.3数据库分类

1.4.4关系型数据库的优势

1.4.5不擅长的处理

1.4.6NoSQL数据库

1.5NoSQL数据库的类型

1.5.1键值(Key/Value)存储

1.5.2面向文档的数据库

1.5.3面向列的数据库

1.6如何使用和学习NoSQL数据库

1.6.1始终只是一种选择

1.6.2在何种程度上信赖它

1.7云数据管理

第2章NoSQL的数据一致性

2.1传统关系数据库中的ACID

2.1.1原子性

2.1.2一致性

2.1.3隔离性

2.1.4持久性

2.1.5举例

2.2CAP理论

2.2.1NoSQL系统是分布式系统

2.2.2CAP理论阐述

2.3AP的例子--DNS系统

2.3.1DNS系统

2.3.2DNS域名解析过程

2.3.3DNS系统是最终一致性的

2.4数据一致性模型与BASE

2.4.1数据一致性模型

2.4.2BASE(BasicallyAvailable,Soft-state,Eventualconsistency)

2.5数据一致性实现方法

2.5.1Quorum系统NRW策略

2.5.2时间戳策略

2.5.3向量时钟

第3章NoSQL的水平扩展与其他基础知识

3.1所有数据存放在一个服务器上

3.2分片(Sharding)

3.3主从复制

3.4对等(PeerToPeer)复制

3.5复制和分片的同时使用

3.6数据水平扩展的方法总结

3.7分片对数据的划分方式

3.7.1Range-BasedPartitioning

3.7.2Round-Robin

3.8一致性hash算法(ConsistentHashing)

3.8.1基本场景

3.8.2hash算法和单调性

3.8.3ConsistentHashing算法的原理

3.8.4虚拟节点

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

3.9.1磁道、扇区、柱面和磁头数

3.9.2固态硬盘(SSD):随机读写速度快

3.9.3内存:读写速度极快

3.9.4五分钟法则

3.10不要删除数据

第2篇列式NoSQL系统

第4章BigTable与Google云计算原理

4.1云计算

4.1.1云计算的概念

4.1.2云计算发展现状

4.1.3云计算实现机制

4.1.4网格计算与云计算

4.2Google文件系统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.1Paxos算法

4.4.2Chubby系统设计

4.4.3Chubby文件系统

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性能优化

第5章Google云计算的开源版本--Hadoop

5.1Hadoop简介

5.1.1Hadoop发展史

5.1.2ApacheHadoop项目及体系结构

5.2Hadoop产生的原因

5.2.1海量的数据

5.2.2数据的存储和分析

5.3Hadoop和其他系统的比较

5.3.1和关系型数据库管理系统(RDBMS)的比较

5.3.2和网格计算的比较

5.4HDFS的架构设计

5.4.1前提和设计目标

5.4.2Namenode和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安装JDK1.

5.5.2安装Hadoop

5.6HDFS操作

5.6.1使用FSShell命令操作HDFS

5.6.2编程读写HDFS

5.7Hadoop中的MapReduce模型

5.7.1MapReduce计算模型

5.7.2Hadoop中的HelloWorld程序

5.7.3运行MapReduce程序1

5.7.4Hadoop中的HelloWorld程序--新的API

5.7.5MapReduce的数据流和控制流

5.8Zookeeper

5.8.1Zookeeper配置安装

5.8.2Zookeeper的数据模型

5.8.3Zookeeper的基本使用

5.8.4ZooKeeper典型的应用场景

5.8.5统一命名服务(NameService)

5.8.6共享锁(Locks)

5.8.7队列管理

5.8.8Zookeeper总结

5.9HBase

5.9.1简介

5.9.2逻辑视图

5.9.3物理存储

5.9.4系统架构1

5.9.5关键算法/流程

5.10HBase的安装和配置

5.11HBase使用例子

第3篇Key/ValueNoSQL系统

第6章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故障处理:暗示移交(HintedHandoff)

6.3.7处理永久性故障:副本同步

6.3.8会员和故障检测

6.3.9添加/删除存储节点

6.4实现

6.5Amazon使用的经验与教训

6.5.1平衡性能和耐久性

6.5.2确保均匀的负载分布

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

6.5.4客户端驱动或服务器驱动协调

6.5.5权衡后台和前台任务

6.5.6讨论

6.6结论

第7章LevelDb--出自Google的Key-Value数据库

7.1LevelDb简介

7.2LevelDb的静态部分

7.2.1整体架构

7.2.2log文件

7.2.3SSTable文件

7.2.4MemTable详解

7.3LevelDb的动态部分

7.3.1写入与删除记录

7.3.2读取记录

7.3.3Compaction操作

7.3.4LevelDb中的Cache

7.3.5Version、VersionEdit和VersionSet

第8章Redis实战

8.1Redis安装与准备

8.1.1下载与安装

8.1.2配置文件修改

8.1.3启动Redis

8.1.4停止Redis

8.2Redis所支持的数据结构

8.2.1String

8.2.2List

8.2.3Set

8.2.4Hash/哈希/散列

8.2.5有序集合/Zset

8.3Key操作命令

8.3.1概述

8.3.2命令示例

8.4事物

8.4.1事物概述

8.4.2相关命令

8.4.3命令示例2

8.4.4WATCH命令和基于CAS的乐观锁

8.5Redis的主从复制

8.5.1Redis的Replication

8.5.2Replication的工作原理

8.5.3如何配置Replication

8.5.4应用示例

8.6Redis的持久化

8.6.1持久化机制

8.6.2RDB机制的优势和劣势

8.6.3AOF机制的优势和劣势

8.6.4其他

8.7Redis的虚拟内存

8.7.1简介

8.7.2应用场景

8.7.3配置

8.8pipeline/管线

8.8.1请求应答协议和RTT

8.8.2管线(pipelining)

8.8.3Benchmark2

8.9实例2

第4篇文档型NoSQL系统

第9章面向文档的数据库CouchDB

9.1CouchDB介绍

9.1.1基本概念

9.1.2扩展概念

9.2CouchDB安装与配置

9.3RESTAPI

9.3.1数据库RESTAPI

9.3.2文档RESTAPI

9.3.3视图RESTAPI

9.3.4附件RESTAPI2

9.4为应用建模2

9.4.1描述实体2

9.4.2描述一对一和一对多关系

9.4.3描述多对多关系

9.5实战开发

9.5.1开发Web应用

9.5.2使用CouchDBjQuery插件

9.5.3示例应用建模

9.5.4管理文档

9.5.5视图

9.6高级话题

9.6.1权限控制与安全

9.6.2文档更新校验

9.6.3分组

9.6.4键的排序

第10章MongoDB实战

10.1为什么要使用MongoDB

10.1.1不能确定的表结构信息

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

10.1.3无需定义表结构的数据库

10.2MongoDB的优势和不足

10.2.1无表结构

10.2.2容易扩展

10.2.3丰富的功能

10.2.4性能卓越

10.2.5简便的管理

10.2.6MongoDB的不足

10.3基本概念

10.4Linux下MongoDB的安装和配置、启动和停止

10.4.1下载

10.4.2安装

10.4.3启动数据库

10.4.4停止数据库

10.5创建、更新及删除文档

10.5.1连接数据库

10.5.2插入记录

10.5.3_idkey

10.5.4修改记录

10.5.5删除记录

10.6查询记录

10.6.1普通查询

10.6.2条件查询

10.6.3findOne()语法

10.6.4通过limit限制结果集数量

10.7高级查询

10.7.1条件操作符

10.7.2$all匹配所有

10.7.3$exists判断字段是否存在

10.7.4Null值处理

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.11javaScript查询和$where查询

10.7.12count查询记录条数

10.7.13skip限制返回记录的起点

10.7.14sort排序

10.7.15游标

10.8MapReduce

10.8.1Map

10.8.2Reduce

10.8.3Result

10.8.4Finalize

10.8.5Options

10.9索引

10.9.1基础索引

10.9.2文档索引

10.9.3组合索引

10.9.4唯一索引

10.9.5强制使用索引

10.9.6删除索引

10.10性能优化

10.10.1explain执行计划

10.10.2优化器Profile

10.10.3性能优化举例

10.11性能监控

10.11.1mongosniff

10.11.2Mongostat

10.11.3db.serverStatus

10.11.4db.stats

10.11.5第三方工具

10.12ReplicaSets复制集

10.12.1部署ReplicaSets

10.12.2主从操作日志oplog

10.12.3主从配置信息

10.12.4管理维护ReplicaSets

10.12.5增减节点

10.13Sharding分片

10.13.1建立ShardingCluster

10.13.2管理维护Sharding

10.14ReplicaSets和Sharding的结合

10.14.1创建数据目录

10.14.2配置ReplicaSets

10.14.3配置3台RouteProcess

10.14.4配置ShardCluster

10.14.5验证Sharding正常工作

第5篇MySQL基础与性能优化

第11章MySQL基础

11.1CentOS6.5下MySQL的安装

11.2MySQL基本命令

11.3MySQL数据类型

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多个表的操作3

第12章MySQL高级特性与性能优化

12.1MySQLServer系统架构

12.1.1逻辑模块组成

12.1.2各模块工作配合

12.2存储引擎

12.2.1MySQL存储引擎概述

12.2.2MyISAM存储引擎简介3

12.2.3Innodb存储引擎简介

12.3MySQL中的锁定机制

12.3.1MySQL中锁定机制概述

12.3.2合理利用锁机制优化MySQL

12.4索引与优化

12.4.1选择索引的数据类型

12.4.2索引入门

12.4.3索引的类型

12.4.4高性能的索引策略

12.4.5索引与加锁

12.5MySQL的MyISAM和Innodb的Cache优化

12.5.1MyISAM存储引擎的Cache优化

12.5.2Innodb缓存相关优化

12.6MySQL的复制

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小结

前言

“数据是21世纪最有价值的资产,它比黄金和石油更有价值”。随着大数据时代的来临,传统的关系型数据库在可扩展性、数据模型和可用性方面遇到了难以克服的障碍。此时各种NoSQL系统出现了。它们的特点各不相同,分别应用于不同的场景并迅速取得了巨大的成功。作为一名从事后台开发多年的工作者,我对每一种新技术的出现与应用都充满了渴望与期待,其中NoSQL解决了我实际工作中遇到的许多问题。NoSQL具有下面几方面的优点:

  1.灵活的可扩展性

  多年以来,数据库管理员们都是通过“垂直扩展”的方式(当数据库的负载增加的时候,购买更大型的服务器来承载增加的负载)来进行扩展的,而不是通过“水平扩展”的方式(当数据库负载增加的时候,在多台主机上分配增加的负载)来进行扩展。但是,随着请求量和可用性需求的增加,数据库也正在迁移到云端或虚拟化环境中,“水平扩展”的经济优势变得更加明显了,对各大企业来说,这种“诱惑”是无法抗拒的。

  要对RDBMS(关系型数据库,比如Oracle)做“水平扩展”,并不是很容易。但是各种新类型的NoSQL数据库主要是为了进行透明的扩展,来利用新节点而设计的,而且,它们通常都是为了低成本的commodity hardware而设计的。

  2. 轻松应对海量数据

  在过去的十年里,正如请求量发生了翻天覆地的增长一样,需要存储的数据量也发生了急剧的膨胀。为了满足数据量增长的需要,RDBMS的容量也在日益增加,但是,对一些企业来说,随着请求量的增加,单一数据库能够管理的数据量也变得越来越让人无法忍受了。现在,大量的“大数据”可以通过NoSQL系统(如MongoDB)来处理,它们能够处理的数据量远远超出了最大型的RDBMS所能处理的极限。

  3. 维护简单

  在过去的几年里,虽然一些RDBMS供应商们声称在可管理性方面做出了很多的改进,但是高端的RDBMS系统维护起来仍然十分昂贵,而且还需要训练有素的DBA们的协助。DBA们需要亲自参与高端的RDBMS系统的设计、安装和调优。

  NoSQL数据库从一开始就是为了降低管理方面的要求而设计的:从理论上来说,自动修复,数据分配和简单的数据模型的确可以让管理和调优方面的要求降低很多。

  4. 经济

  NoSQL数据库通常使用廉价的Commodity Servers集群来管理膨胀的数据和请求量,而RDBMS通常需要依靠昂贵的专有服务器和存储系统来做到这一点。使用NoSQL,每GB的成本或每秒处理的请求的成本都比使用RDBMS的成本少很多,这可以让企业花费更低的成本存储和处理更多的数据。

  5. 灵活的数据模型

  对于大型的生产性RDBMS来说,变更管理是一件很令人头痛的事情。即使只对一个RDBMS的数据模型做出很小的改动,也必须要十分小心的管理,也许还需要停机或降低服务水平。NoSQL数据库在数据模型约束方面是更加宽松的,甚至可以说并不存在数据模型的约束。NoSQL的Key/Value数据库和文档型数据库可以让应用程序在一个数据元素里存储任何结构的数据。即使是规定更加严格的基于“大表”的NoSQL数据库(如HBase)通常也允许创建新列,这并不会造成什么麻烦。

  应用程序变更和数据库模式的变更并不需要作为一个复杂的变更单元来管理。从理论上来说,这可以让应用程序迭代的更快,但是,很明显,如果应用程序无法维护数据的完整性,那么这也会带来一些不良的副作用。

  本书的诞生

  在当前的图书市场上,还没有一本全面而深入介绍NoSQL系统的图书。要么只有理论内容并且大部分并不全面,要么千篇一律把某个NoSQL系统的操作一一罗列。为了让众多的NoSQL学习人员能够更加全面和深入地学习NoSQL技术,笔者编写了本书。本书从系统的角度出发,既深入讲解NoSQL的产生原因与理论基础,又对三种典型NoSQL系统引入了丰富的实战,使读者可以全面而深入地了解各种NoSQL,知道各个NoSQL和MySQL系统的联系和不同,在实际中根据自己的情况进行正确的技术选型。

  本书特色

  1.内容全面、新颖

  本书内容全面而新颖,既对NoSQL系统的理论进行了深入浅出的分析,又深入讲解了列式的、Key/Value的和文档类型这三种NoSQL系统,最后还讲解了MySQL的性能 优化。

  2.讲解由浅入深,循序渐进

  本书是一本入门图书,如果你从来没有用过NoSQL系统,那么本书正好适合你。本书也是一本深入讲解NoSQL的图书,它将各种NoSQL系统联系起来并分析各自的相同点和不同点,读完之后你一定会对NoSQL系统有一个高屋建瓴的认识。

  3.理论与实践并重

  本书对NoSQL系统的产生原因和理论基础做了广泛而深入的分析,让读者知其然,更知其所以然。书中尽力消除初学者学习NoSQL系统时容易遇到的障碍,变抽象为具体,变复杂为简单。而且重点对Hadoop/HBase、MongoDB和Redis这三种NoSQL系统都给出了具体实践。

  4.图文并茂,容易理解

  本书针对NoSQL系统中的一些架构和较难理解的概念,提供了大量的插图,并结合具体文字来讲解,非常直观,更有利于读者的学习与理解。

  5.语言通俗易懂

  本书不使用那些让人难以理解的语言来分析问题,而是采用通俗易懂的语言去讲解NoSQL系统的相关知识,让读者能够真正了解NoSQL技术,继而在开发中使用这些技术。

  本书内容

  第1篇 NoSQL的兴起与理论基础(第1~3章)

  本篇介绍了大数据时代NoSQL的兴起原因及NoSQL的理论基础,包括NoSQL与大数据简介,NoSQL系统的分类和特点,各种数据一致性模型的定义、原理、实现、举例及适用场景,NoSQL系统水平扩展的方法,主要是复制和分区技术的难点、在实际系统中的运用及和数据一致性的关系,最后简单介绍了其他杂项知识比如五分钟法则等。这些内容都是学习后续章节所必须要掌握的基础知识,后续章节中的实际NoSQL系统如Redis可以看成是这些理论知识的运用。

  第2篇 列式NoSQL系统(第4、5章)

  本篇主要介绍了列式NoSQL系统。首先以Google的BigTable为例介绍了列式NoSQL系统的特点、原理和应用。然后实战演练开源的HBase系统。由于HBase与Hadoop、Zookeeper等有着十分密切的关系,因此对其一并进行了介绍。

  第3篇 Key/Value NoSQL系统(第6~8章)

  本篇主要介绍了Key/Value NoSQL系统。首先以Amazon的Dynamo为例介绍了Key/Value系统的特点、原理和应用场景,并详细描述了这个系统是如何运用本书第1篇中的理论知识而构建的。然后介绍了另一个来自Google的LevelDB系统,最后实战演练了被广泛使用的Redis系统。

  第4篇 文档型 NoSQL系统(第9、10章)

  本篇主要介绍了文档型NoSQL系统。首先以CouchDB为例介绍了文档型NoSQL的特点、原理和应用场景,然后实战演练了被广泛使用的MongoDB系统。

  第5篇 MySQL基础与性能优化(第11、12章)

  本篇主要介绍了目前在互联网公司被广泛使用的MySQL关系型数据库。虽然在大数据时代NoSQL将会占据数据处理技术的主流,但是传统的MySQL在一些应用场景仍有着自己的优势。所以本篇开始先介绍了一些MySQL的基础知识,然后详细描述了其高级特性,最后介绍了MySQL的性能优化、复制技术、垂直扩展、水平扩展和综合应用。

  本书读者对象

  * 没有基础的NoSQL初学者;

  * 互联网公司高并发系统的后台开发人员;

  * 大数据、NoSQL开发爱好者;

  * 刚入职的初中级程序员;

  * 高等院校师生;

  * 相关培训班的学员。

热门图书
推荐新闻
技术文库
论坛推荐