Eben Hewitt《Cassandra权威指南》

Eben Hewitt《Cassandra权威指南》

作者:Eben Hewitt

出版社:人民邮电出版社

出版年:2011-8

评分:7.1

ISBN:9787115258540

所属分类:网络科技

书刊介绍

内容简介

本书是一本广受好评的Cassandra 图书。与传统的关系型数据库不同,Cassandra 是一种开源的分布式存储系统。书中介绍了它无中心架构、高可用、无缝扩展等引人注目的特点,讲述了如何安装、配置Cassandra 及如何在其上运行实例,还介绍了对它的监控、维护和性能调优手段,同时还涉及了Cassandra 相关的集成工具Hadoop 及其类似的其他NoSQL 数据库。

本书适合数据库开发人员与网站开发者阅读。

作品目录

译者序XIII

序XV

前言XVII

第1 章 Cassandra 概况 1

1.1 关系型数据库有什么问题1

1.2 关系型数据库简单回顾5

1.2.1 RDBMS:出类拔萃与表现平平6

1.2.2 互联网的规模12

1.3 Cassandra 的电梯间演讲13

1.3.1 50 个字介绍Cassandra 13

1.3.2 分布式与无中心 13

1.3.3 弹性可扩展 14

1.3.4 高可用与容错15

1.3.5 可调节的一致性15

1.3.6 Brewer 的CAP 理论18

1.3.7 面向行 21

1.3.8 无schema 22

1.3.9 高性能 22

1.4 Cassandra 来自何方22

1.5 Cassandra 的应用场景23

1.5.1 大规模部署 23

1.5.2 写密集、统计和分析型工作24

1.5.3 地区分布 24

1.5.4 变化的应用 24

1.6 谁在使用Cassandra24

1.7 小结26

第2 章 安装Cassandra27

2.1 安装二进制包  27

2.1.1 解压缩 27

2.1.2 里面有什么  27

2.2 从源码编译28

2.2.1 其他编译目标30

2.2.2 使用Maven编译30

2.3 运行Cassandra 30

2.3.1 在Windows平台上运行Cassandra 31

2.3.2 在Linux下运行Cassandra 31

2.3.3 启动服务器 32

2.4 使用命令行界面的客户端 33

2.5 基本命令行命令 34

2.5.1 帮助34

2.5.2 连接服务器 35

2.5.3 描述环境 35

2.5.4 创建keyspace和列族36

2.5.5 读写数据 37

2.6 小结38

第3章 Cassandra的数据模型39

3.1 关系型数据模型 39

3.2 简介40

3.3 集群43

3.4 keyspace43

3.5 列族44

3.6 列46

3.6.1 宽行与窄行 48

3.6.2 列的排序  49

3.7 超级列50

3.8 Cassandra与RDBMS的设计差别53

3.8.1 没有查询语言53

3.8.2 没有引用完整性53

3.8.3 第二索引  53

3.8.4 排序成为一种设计决策54

3.8.5 反范式化 54

3.9 设计模式55

3.9.1 具体化视图 56

3.9.2 无值列 56

3.9.3 聚合键 56

3.10 需要记住的几件事57

3.11 小结57

第4章 应用实例59

4.1 数据模型设计 59

4.2 酒店应用的关系型数据库设计60

4.3 酒店应用的Cassandra设计61

4.4 酒店应用代码 62

4.4.1 创建数据库 63

4.4.2 数据结构  64

4.4.3 进行连接  65

4.4.4 预装填数据库66

4.4.5 搜索应用 78

4.5 Twissandra82

4.6 小结82

第5章 Cassandra的架构83

5.1 system keyspace 83

5.2 对等结构84

5.3 gossip与故障检测 84

5.4 逆熵与读修复 86

5.5 memtable、SSTable和commit log 87

5.6 提示移交 89

5.7 压紧89

5.8 Bloom filter91

5.9 墓碑 91

5.10 分阶段事件驱动架构92

5.11 管理器与服务 93

5.11.1 Cassandra守护进程93

5.11.2 存储服务 93

5.11.3 消息服务 93

5.11.4 提示移交管理器94

5.12 小结94

第6章 配置Cassandra95

6.1 keyspace 95

6.1.1 创建列族 98

6.1.2 从0.6迁移到0.799

6.2 副本99

6.3 副本放置策略 100

6.3.1 简单策略 101

6.3.2 旧网络拓扑策略102

6.3.3 网络拓扑策略103

6.4 副本因子103

6.5 分区器105

6.5.1 随机分区器106

6.5.2 有序分区器106

6.5.3 配页有序分区器107

6.5.4 字节序分区器107

6.6 Snitch107

6.6.1 Simple Snitch107

6.6.2 PropertyFileSnitch 107

6.7 创建集群108

6.7.1 修改集群名称109

6.7.2 给集群增加节点109

6.7.3 多种子节点111

6.8 动态加入环 113

6.9 安全 114

6.9.1 使用SimpleAuthenticator114

6.9.2 编程鉴权 117

6.9.3 使用MD5加密118

6.9.4 提供你自己的鉴权算法118

6.10 杂项设置119

6.11 附加工具120

6.11.1 查看键值120

6.11.2 导入之前版本的配置120

6.12 小结122

第7章 读写数据 123

7.1 Cassandra与RDBMS查询的不同123

7.1.1 没有Update查询123

7.1.2 记录级的写原子性123

7.1.3 不支持服务端事务123

7.1.4 没有重复键值124

7.2 写操作的基本属性124

7.3 一致性级别 124

7.4 读操作的基本属性126

7.5 API126

7.6 设置与插入数据 128

7.7 使用简单的get 133

7.8 数据准备135

7.9 切片谓词135

7.9.1 使用get_slice读取特定列名136

7.9.2 通过切片区间获取一组列137

7.9.3 取出一行中的所有列138

7.10 get_range_slices 138

7.11 multiget_slice 140

7.12 删除142

7.13 批量变更144

7.13.1 批量删除144

7.13.2 区间鬼影145

7.14 编程定义keyspace和列族145

7.15 小结146

第8章 客户端147

8.1 基本的客户端API148

8.2 Thrift148

8.2.1 Thrift对Java的支持151

8.2.2 异常 151

8.2.3 Thrift小结 152

8.3 Avro152

8.3.1 Avro Ant目标154

8.3.2 Avro规范155

8.3.3 Avro小结156

8.4 Git简介156

8.5 连接客户端节点  157

8.5.1 客户端列表157

8.5.2 循环DNS 157

8.5.3 负载均衡器157

8.6 Cassandra Web控制台157

8.7 Hector(Java) 161

8.7.1 特性 161

8.7.2 Hector API 162

8.8 HectorSharp(C#) 162

8.9 Chirper167

8.10 Chiton(Python) 167

8.11 Pelops(Java) 168

8.12 Kundera(Java ORM) 169

8.13 Fauna(Ruby)  169

8.14 小结 170

第9章 监控 171

9.1 日志171

9.1.1 跟踪查看 173

9.1.2 通用技巧 174

9.2 JMX与MBean概述175

9.2.1 MBean 177

9.2.2 集成JMX 179

9.3 通过JMX与Cassandra交互180

9.4 Cassandra的MBean181

9.4.1 org.apache.cassandra.concurrent185

9.4.2 org.apache.cassandra.db185

9.4.3 org.apache.cassandra.gms186

9.4.4 org.apache.cassandra.service186

9.5 定制Cassandra的MBean188

9.6 运行时分析工具 190

9.6.1 使用JMX和JHAT进行堆分析191

9.6.2 发现线程问题194

9.7 健康检查195

9.8 小结196

第10章 维护197

10.1 获取环的信息 198

10.1.1 Info 198

10.1.2 Ring 198

10.2 获取统计信息 199

10.2.1 使用cfstats199

10.2.2 使用tpstats200

10.3 基本维护工作 201

10.3.1 修复 201

10.3.2 刷写 202

10.3.3 清理 203

10.4 快照203

10.4.1 进行快照203

10.4.2 清除快照204

10.5 对集群进行负载均衡205

10.6 退服节点208

10.7 更新节点210

10.7.1 删除令牌210

10.7.2 压紧阈值210

10.7.3 在一个工作的集群中改变列族210

10.8 小结211

第11章 性能调优 213

11.1 数据存储213

11.2 回复超时215

11.3 commit log 215

11.4 memtable216

11.5 并发216

11.6 缓存217

11.7 缓冲区尺寸 218

11.8 使用Python压力测试218

11.8.1 生成Python Thrift接口 218

11.8.2 运行Python压力测试 220

11.9 启动和JVM设置222

11.10 小结 224

第12章 集成Hadoop225

12.1 何为Hadoop 225

12.2 使用MapReduce 226

12.3 运行字数统计例子227

12.3.1 将数据输出到Cassandra229

12.3.2 Hadoop流 229

12.4 MapReduce之上的工具229

12.4.1 Pig 230

12.4.2 Hive 231

12.5 集群配置231

12.6 案例233

12.6.1 Raptr.com: Keith Thornhill 233

12.6.2 Imagini: Dave Gardner 233

12.7 小结234

附录 非关系型数据库大观235

词汇表.261

关于作者 279

关于封面 279

相关推荐

微信二维码