第1章 概述
1.1 从一个问题开始
1.2 风格
1.2.1 关系数据库
1.2.2 键-值数据库
1.2.3 列型数据库
1.2.4 文档型数据库
1.2.5 图数据库
1.2.6 混合使用多种数据库
1.3 前进和提升
第2章 PostgreSQL
2.1 这就是Post-greS-Q-L
2.2 第1天:关系、CRUD和联接
2.2.1 从SQL开始
2.2.2 使用表
2.2.3 使用联接的查询
2.2.4 外联接
2.2.5 使用索引快速查找
2.2.6 第1天总结
2.2.7 第1天作业
2.3 第2天:高级查询、代码和
规则
2.3.1 聚合函数
2.3.2 分组
2.3.3 窗口函数
2.3.4 事务
2.3.5 存储过程
2.3.6 触发器
2.3.7 视图
2.3.8 规则是什么
2.3.9 联表分析
2.3.10 第2天总结
2.4 第3天:全文检索和多维查询
2.4.1 模糊搜索
2.4.2 SQL标准的字符串匹配
2.4.3 字符串相似比较算法
levenshtein
2.4.4 三连词
2.4.5 全文检索
2.4.6 组合使用字符串匹配方法
2.4.7 把电影风格表示成多维超立
方体
2.4.8 第3天总结
2.5 总结
2.5.1 PostgreSQL的优点
2.5.2 PostgreSQL的缺点
2.5.3 结束语
第3章 Riak
3.1 Riak喜欢Web
3.2 第1天:CRUD、链接和MIME
3.2.1 REST是最棒的
(或用cURL时)
3.2.2 将值放于桶中
3.2.3 链接
3.2.4 Riak的MIME类型
3.2.5 第1天总结
3.3 第2天:Mapreduce和服务器
集群
3.3.1 填充脚本
3.3.2 mapreduce介绍
3.3.3 Riak中的mapreduce
3.3.4 关于一致性和持久性
3.3.5 第2天总结
3.4 第3天:解决冲突和扩展Riak
3.4.1 以向量时钟解决冲突
3.4.2 扩展Riak
3.4.3 第3天总结
3.5 总结
3.5.1 Riak的优点
3.5.2 Riak的缺点
3.5.3 Riak之于CAP
3.5.4 结束语
第4章 HBase
4.1 介绍HBase
4.2 第1天:CRUD和表管理
4.2.1 配置HBase
4.2.2 HBase的shell
4.2.3 创建表
4.2.4 插入、更新和读取数据
4.2.5 修改表
4.2.6 通过编程方式添加数据
4.2.7 第1天总结
4.3 第2天:处理大数据
4.3.1 导入数据,调用脚本
4.3.2 流式XML
4.3.3 流式维基百科
4.3.4 压缩和Bloom过滤器
4.3.5 开始
4.3.6 区域和监控磁盘使用简介
4.3.7 区域的问讯
4.3.8 扫描一个表来建立另一个表
4.3.9 构建扫描程序
4.3.10 运行脚本
4.3.11 检查输出
4.3.12 第2天总结
4.4 第3天:放入云端
4.4.1 开发Thrift协议的HBase
应用
4.4.2 Whirr简介
4.4.3 设置EC2
4.4.4 准备Whirr
4.4.5 配置集群
4.4.6 启动集群
4.4.7 连接集群
4.4.8 销毁集群
4.4.9 第3天总结
4.5 总结
4.5.1 HBase的优点
4.5.2 HBase的缺点
4.5.3 HBase on CAP
4.5.4 结束语
第5章 MongoDB
5.1 其大无比
5.2 第1天:CRUD和嵌套
5.2.1 命令行的乐趣
5.2.2 Mongo的更多有趣内容
5.2.3 深入挖掘
5.2.4 更新
5.2.5 引用
5.2.6 删除
5.2.7 用代码来读取
5.2.8 第1天总结
5.3 第2天:索引、分组和
mapreduce
5.3.1 索引:如果还不够快
5.3.2 聚合查询
5.3.3 服务器端命令
5.3.4 mapreduce(以及Finalize)
5.3.5 第2天总结
5.4 第3天:副本集、分片、地理
空间和GridFS
5.4.1 副本集
5.4.2 偶数节点的问题
5.4.3 分片
5.4.4 地理空间查询
5.4.5 GridFS
5.4.6 第3天总结
5.5 总结
5.5.1 Mongo的优点
5.5.2 Mongo的缺点
5.5.3 结束语
第6章 CouchDB
6.1 在沙发上放松
6.2 第1天:CRUD、Futon与
cURL Redux
6.2.1 享受Futon
6.2.2 用cURL执行基于REST的
CRUD操作
6.2.3 用GET读取文档
6.2.4 用POST新建文档
6.2.5 用PUT更新文档
6.2.6 用DELETE移除文档
6.2.7 第1天总结
6.3 第2天:创建/查询视图
6.3.1 通过视图访问文档
6.3.2 编写你的第一个视图
6.3.3 将视图另存为"设计文档"
6.3.4 由Name查找Artists
6.3.5 由name查找albums
6.3.6 查询自定义的Artist与
Album视图
6.3.7 使用Ruby将数据导入
CouchDB
6.3.8 第2天总结
6.4 第3天:进阶视图、Changes API
以及复制数据
6.4.1 用规约器创建进阶视图
6.4.2 规约器调用详解
6.4.3 监控CouchDB的变化
6.4.4 连续监控变化
6.4.5 在CouchDB中复制数据
6.4.6 第3天总结
6.5 总结
6.5.1 CouchDB的优点
6.5.2 CouchDB的缺点
6.5.3 结束语
第7章 Neo4j
7.1 Neo4j,白板友好的数据库
7.2 第1天:图、Groovy和
CRUD
7.2.1 Neo4j之Web接口
7.2.2 通过Gremlin操作Neo4j
7.2.3 pipe的威力
7.2.4 Pipeline与顶点
7.2.5 无模式的社会性数据
7.2.6 垫脚石
7.2.7 引入Groovy
7.2.8 特定领域的步骤
7.2.9 更新、删除与完成
7.2.10 第1天总结
7.3 第2天:REST、索引与算法
7.3.1 引入REST
7.3.2 用REST新建节点与关系
7.3.3 查找路径
7.3.4 索引
7.3.5 REST与Gremlin
7.3.6 大数据
7.3.7 功能全面的算法
7.3.8 第2天总结
7.4 第3天:分布式高可用性
7.4.1 事务
7.4.2 高可用性
7.4.3 HA集群
7.4.4 备份
7.4.5 第3天总结
7.5 总结
7.5.1 Neo4j的优点
7.5.2 Neo4j的缺点
7.5.3 Neo4j之于CAP
7.5.4 结束语
第8章 Redis
8.1 数据结构服务器存储库
8.2 第1天:CRUD与数据类型
8.2.1 入门指南
8.2.2 事务
8.2.3 复杂数据类型
8.2.4 到期
8.2.5 数据库命名空间
8.2.6 更多命令
8.3 第2天:高级用法、分布
8.3.1 一个简单的接口
8.3.2 服务器信息
8.3.3 Redis配置
8.3.4 AOF(append only file)
8.3.5 主从复制
8.3.6 数据转储
8.3.7 Redis集群
8.3.8 Bloom过滤器
8.3.9 SETBIT和GETBIT
8.3.10 第2天总结
8.4 第3天:与其他数据库合作
8.4.1 多持久并存服务
8.4.2 数据填充
8.4.3 关系存储
8.4.4 服务
8.4.5 第3天总结
8.5 总结
8.5.1 Redis的优点
8.5.2 Redis的缺点
8.5.3 结束语
第9章 结束语
9.1 类型终极版
9.1.1 关系型
9.1.2 键-值存储库
9.1.3 列型
9.1.4 文档型
9.1.5 图
9.2 选择
9.3 我们将走向哪里
附录A 数据库概述表
附录B CAP定理
展开
—— Help Net Security
如果你需要使用或考虑使用任何一种与传统关系型数据库有所不同的数据库技术,而且你不知道应该如何从为数众多的选项中做出选择,那么,本书将帮助你了解这一领域,并且帮助你根据当前的需求更好地做出选择。郑重推荐这本书!
—— Matthew Helmke.net
阅读这本书,就像去迪斯尼乐园的荒野地带。有转弯,有曲折,你永远不知道下一个拐角是什么,但是非常有趣。
—— Jeffrey Newman
如下的故事是完美的。周五,你会安装并运行一种新的数据库。周六,你会看到在日常使用中它是什么样子。到了周日,你已经学到了一些技巧,甚至可能让专家感到惊讶!而下一周,你会跳到另一个数据库,并且又是另一番乐趣。
—— Ian Dees 《Using JRuby》作者
这本书针对几种关键数据库给出了很好的概览。它将大幅度地提升你对数据建模的选择能力和实践技能。如果你希望别人对你在数据库方面的能力抱以七倍的羡慕,那么,请阅读这本书。
——Sean Copenhaver,backgroundchecks.com 首席程序员
本书是迄今为止对现代数据库最好的实质性概述。它不同于我读过的大量教程、博客文章和文档,它教给我:为什么我要使用每种类型的数据库,以及应该以何种方式使用它们,从而更容易理解和保留信息。阅读这本书是一种乐趣。
—— Loren Sands-Ramshaw,美国国防部软件工程师
这是我所见到的介绍CouchDB最好的书籍之一。
—— Jan Lehnardt Apache CouchDB的开发者和作者
如果更理想的话,在这本书的封面上可以印上:“包含你想知道的关于数据库的一切知识,而且你离不开这些知识”。说实话,这本书会卖的很好。
—— Nic Williams博士,Engine Yard的技术副总裁
本书很好地介绍了现代数据库设计和实施的各个方面。无论你是新手还是专家,即便是只花一天的时间阅读一章,你也会拓展技能,受益匪浅。
—— Jerry Sievert,Daily Insight Group工程总监