第一部分 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.
1