深入NoSQL:全面展示NoSQL基础概念和实践方案

深入NoSQL:全面展示NoSQL基础概念和实践方案
作 者: Shashank Tiwari 巨成
出版社: 人民邮电出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: Oracle
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  Shashank Tiwari创业者、开发者、技术作家、演讲者和导师,技术型创业公司Treasury ofIdeas(www.treasuryofideas.com)的创始人。他是一位经验丰富的软件开发者和企业家,长期关注高性能应用、分析、Web应用以及移动平台,对数据可视化和统计机器学习有着浓厚的兴趣,喜欢喝咖啡、吃甜点、骑自行车。他撰写了许多技术文章和著作,并且应邀在全球各地的技术会议上进行演讲。

内容简介

NoSQL数据库是非常高效、强大的海量数据存储与处理工具。大部分NoSQL数据库都能很好地适应数据增长,并且能灵活适应半结构化数据和稀疏数据集。这本上手指南全面展示了NoSQL数据库的基础概念和实践方案。《深入NoSQL》作者、专家Shashank Tiwari首先介绍NoSQL的特点和典型用例,再分析NoSQL适用于应用程序栈的什么位置。他独到的见解能帮助你针对特定的数据存储需求选择最适合的NoSQL方案。 《深入NoSQL》主要内容包括: 揭示NoSQL数据库的关键概念,包括列族存储、键/值存储以及文档数据库; 深入介绍NoSQL产品及Hadoop产品族的安装与配置; 解释存储、访问和查询NoSQL数据的方法,使用到的产品包括MongoDB、HBase、Cassandra、Redis、CouchDB、Google App Engine等; 检视架构和内部结构; 提供最佳实践以及性能调优和扩展配置方面的指导; 展示一系列与NoSQL、分布式平台及大规模处理相关的工具,包括Hive、Pig、RRDtool、Nagios等。

图书目录

目    录

第一部分  NoSQL入门

第1章  NoSQL的概念及适用范围  2

1.1  定义和介绍  3

1.1.1  背景与历史  3

1.1.2  大数据  5

1.1.3  可扩展性  7

1.1.4  MapReduce  8

1.2  面向列的有序存储  9

1.3  键/值存储  11

1.4  文档数据库  14

1.5  图形数据库  15

1.6  小结  16

第2章  NoSQL上手初体验  17

2.1  第一印象——两个简单的例子  17

2.1.1  简单的位置偏好数据集  17

2.1.2  存储汽车品牌和型号数据  22

2.2  使用多种语言  30

2.2.1  MongoDB驱动  30

2.2.2  初识Thrift  33

2.3  小结  34

第3章  NoSQL接口与交互  36

3.1  没了SQL还剩什么  36

3.1.1  存储和访问数据  37

3.1.2  MongoDB数据存储与访问  37

3.1.3  MongoDB数据查询  41

3.1.4  Redis数据存储与访问  43

3.1.5  Redis数据查询  47

3.1.6  HBase数据存储与访问  50

3.1.7  HBase数据查询  52

3.1.8  Apache Cassandra数据存储与访问  54

3.1.9  Apache Cassandra数据查询  55

3.2  NoSQL数据存储的语言绑定  56

3.2.1  Thrift  56

3.2.2  Java  56

3.2.3  Python  58

3.2.4  Ruby  59

3.2.5  PHP  59

3.3  小结  60

第二部分  NoSQL基础

第4章  理解存储架构  62

4.1  使用面向列的数据库  63

4.1.1  使用关系型数据库中的表格和列  63

4.1.2  列数据库对比RDBMS  65

4.1.3  列数据库当做键/值对的嵌套映射表  67

4.1.4  Webtable布局  70

4.2  HBase分布式存储架构  71

4.3  文档存储内部机制  73

4.3.1  用内存映射文件存储数据  74

4.3.2  MongoDB集合和索引使用指南  75

4.3.3  MongoDB的可靠性和耐久性  75

4.3.4  水平扩展  76

4.4  键/值存储Memcached和Redis  78

4.4.1  Memcached的内部结构  78

4.4.2  Redis的内部结构  79

4.5  最终一致性非关系型数据库  80

4.5.1  一致性哈希  81

4.5.2  对象版本  82

4.5.3  闲话协议和提示移交  83

4.6  小结  83

第5章  执行CRUD操作  84

5.1  创建记录  84

5.1.1  在以文档为中心的数据库中创建记录  85

5.1.2  面向列数据库的创建操作  91

5.1.3  键/值映射表的创建操作  93

5.2  访问数据  96

5.2.1  用MongoDB访问文档  96

5.2.2  用HBase访问数据  97

5.2.3  查询Redis  98

5.3  更新和删除数据  98

5.3.1  使用MongoDB、HBase和Redis更新及修改数据  98

5.3.2  有限原子性和事务完整性  99

5.4  小结  100

第6章  查询NoSQL存储  101

6.1  SQL与MongoDB查询功能的相似点  101

6.1.1  加载MovieLens数据  103

6.1.2  MongoDB中的MapReduce  108

6.2  访问HBase等面向列数据库中的数据  111

6.3  查询Redis数据存储  113

6.4  小结  116

第7章  修改数据存储及管理演进  117

7.1  修改文档数据库  117

7.1.1  弱schema的灵活性  120

7.1.2  MongoDB的数据导入与导出  121

7.2  面向列数据库中数据schema的演进  124

7.3  HBase数据导入与导出  125

7.4  键/值存储中的数据演变  126

7.5  小结  126

第8章  数据索引与排序  127

8.1  数据库索引的基本概念  127

8.2  MongoDB的索引与排序  128

8.3  MongoDB里创建和使用索引  131

8.3.1  组合与嵌套键  136

8.3.2  创建唯一索引和稀疏索引  138

8.3.3  基于关键字的搜索和多重键  139

8.4  CouchDB的索引与排序  140

8.5  Apache Cassandra的索引与排序  141

8.6  小结  143

第9章  事务和数据完整性的管理  144

9.1  RDBMS和ACID  144

9.2  分布式ACID系统  147

9.2.1  一致性  149

9.2.2  可用性  149

9.2.3  分区容忍性  149

9.3  维持CAP  151

9.3.1  妥协可用性  153

9.3.2  妥协分区容忍性  153

9.3.3  妥协一致性  154

9.4  NoSQL产品的一致性实现  155

9.4.1  MongoDB的分布一致性  155

9.4.2  CouchDB的最终一致性  155

9.4.3  Apache Cassandra的最终一致性  156

9.4.4  Membase的一致性  157

9.5  小结  157

第三部分  熟悉NoSQL

第10章  使用云中的NoSQL  160

10.1  Google App Engine  161

10.1.1  GAE Python SDK:安装、设置和起步  161

10.1.2  使用Python进行基本的GAE数据建模  165

10.1.3  查询与索引  168

10.1.4  过滤和结果排序  170

10.1.5  Java App Engine SDK  172

10.2  Amazon SimpleDB  175

10.2.1  SimpleDB入门  176

10.2.2  使用REST API  178

10.2.3  使用Java访问SimpleDB  181

10.2.4  通过Ruby和Python使用SimpleDB  182

10.3  小结  183

第11章  MapReduce可扩展并行处理  185

11.1  理解MapReduce  186

11.1.1  找出每股最高价  188

11.1.2  加载历史NYSE市场数据到CouchDB  189

11.2  MapReduce和HBase  192

11.3  MapReduce和Apache Mahout  196

11.4  小结  197

第12章  使用Hive分析大数据  199

12.1  Hive基础  199

12.2  回到电影评分  203

12.3  亲切的SQL  209

12.4  HiveQL连接  211

12.4.1  计划解释  213

12.4.2  分区表  215

12.5  小结  215

第13章  综览数据库内部  216

13.1  MongoDB内部  217

13.1.1  MongoDB传输协议  218

13.1.2  插入文档  219

13.1.3  查询集合  219

13.1.4  MongoDB数据库文件  220

13.2  Membase架构  222

13.3  Hypertable底层  224

13.3.1  正则表达式支持  224

13.3.2  布隆过滤器  224

13.4  Apache Cassandra  225

13.4.1  点对点模型  225

13.4.2  基于Gossip和Antientropy  225

13.4.3  快速写  226

13.4.4  提示移交  226

13.5  Berkeley DB  226

13.6  小结  228

第四部分  掌握NoSQL

第14章  选择NoSQL  230

14.1  比较NoSQL产品  230

14.1.1  可扩展性  230

14.1.2  事务完整性和一致性  233

14.1.3  数据模型  233

14.1.4  查询支持  235

14.1.5  接口可用性  236

14.2  性能测试  237

14.2.1  50/50的读和更新  237

14.2.2  95/5的读和更新  237

14.2.3  扫描  238

14.2.4  可扩展性测试  238

14.2.5  Hypertable测试  238

14.3  背景比较  239

14.4  小结  240

第15章  共存  241

15.1  MySQL用作NoSQL  241

15.2  静态数据存储  244

15.2.1  存储多元化在Facebook中的应用  245

15.2.2  数据仓库和商业智能  246

15.3  Web框架和NoSQL  247

15.3.1  Rails和NoSQL  247

15.3.2  Django和NoSQL  248

15.3.3  使用Spring Data  250

15.4  从RDBMS迁移到NoSQL  254

15.5  小结  254

第16章  性能调校  256

16.1  并行算法的目标  256

16.1.1  减少延迟的含义  256

16.1.2  如何增加吞吐  257

16.1.3  线性扩展  257

16.2  公式与模型  257

16.2.1  Amdahl法则  257

16.2.2  Little法则  258

16.2.3  消息成本模型  259

16.3  分区  259

16.4  规划异构环境  260

16.5  其他MapReduce调校  261

16.5.1  通信成本  261

16.5.2  压缩  261

16.5.3  文件块大小  261

16.5.4  并行复制  262

16.6  HBase Coprocessor  262

16.7  布隆过滤器  262

16.8  小结  262

第17章  工具和实用程序  263

17.1  RRDTool  263

17.2  Nagios  265

17.3  Scribe  266

17.4  Flume  267

17.5  Chukwa  267

17.6  Pig  268

17.6.1  使用Pig  269

17.6.2  Pig Latin基础  269

17.7  Nodetool  271

17.8  OpenTSDB  272

17.9  SOLANDRA  273

17.10  Hummingbird和C5T  274

17.11  GeoCouch  275

17.12  Alchemy Database  276

17.13  Webdis  276

17.14  小结  276

附录A  安装与配置  278