本书是一本广受好评的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
《库克群岛》内容简介:库克群岛位于南太平洋的波利尼西亚群岛,由15个岛屿组成,是新西兰的自由联系国,被誉为“南太平洋的果园”
《C++程序设计习题与实验指导》内容简介:本书是C++程序设计语言的参考书,章节和内容编排与《C++程序设计基础教程》配套,主要包括
《当下的修行:要懂得一点放下》内容简介:其实,生活本该是一个轻松的课题,只是我们一直无法放下心中的累赘,将不该看重的东西看
《VHDL数字电路设计教程》共分为三个基本组成部分,首先详细介绍VHDL语言的背景知识、基本语法结构和VHDL代码的编写方法;然后介
這是一趟有錢也買不到的日本設計之旅!本書直擊博報堂、SAMURAI等目前日本超夯的廣告設計公司,深入設計師們的工作現場,訪問當今
TheInsidersBest-PracticeGuidetoRapidPyQt4GUIDevelopmentWhetheryourebuildingGUIpr...
《兄弟在清华和北航的日子(第三辑)》内容简介:每一代成功人士都有自己的故事。该书记录的是20世纪80年代,一对亲兄弟求学奋斗的
政府地理信息系统 本书特色 本书内容丰富,学术性和技术性强。主要读者对象是:政府机关从事政务信息化和电子政务建设的领导同志和技术人员,政府业务部门从事GIS研究...
偏微分与变分技术在图像分割中的应用研究 内容简介 本书总结了笔者近年来在图像分割方面的研究成果, 主要介绍了基于变分水平集的分割技术及其应用, 并在对该领域基本...
《应急响应》内容简介:本书的内容将前沿的网络安全应急响应理论与一线实战经验相结合,从科普角度介绍网络安全应急响应基础知识。
「平面設計是帶給人夢想的幸福工作。從事平面設計,除了需要一點幽默和感性之外,擁有平面設計的基本知識更是必備條件。」本書收
Thistextidentifies,examines,andillustratesfundamentalconceptsincomputersystemdes...
《莆田史话》内容简介:莆田地处东南沿海,历史悠久、人文鼎盛,素有“海滨邹鲁、文献名邦”之誉,也是闻名世界的“海上和平女神”
ApacheHadoopisidealfororganizationswithagrowingneedtostoreandprocessmassiveappli...
《XMPP高级编程:使用JavaScript和jQuery》内容简介:XMPP是一个广泛用于即时通信、多用户聊天、语言和视频会议、协作空间、实时游
从零开始学Eclipse-(附赠光盘) 本书特色 首先本书的读者定位为eclipse的初学者,也包括java的初学者。先让初学者认识eclipse,然后从ecl...
高效商业分析-Excel建模与决策 本书特色 本书基于excel这一*常见的工具介绍商业分析在业务中的应用,帮助我们做出更优异的商业决策。书中不但提供了商业分析...
《中国山水画基础教程》内容简介:本书是“基础教程系列”中的一本。“基础教程系列”是专门为零基础美术爱好者打造的、涉及多门类
《领导要干好3件事》内容简介:领导者想要把工作做得卓有成效,需要做好三件事:抓要害、办实事、管住人。在组织中,领导者只要在这
《关键设计报告:改变过去影响未来的交互设计法则》讲述了交互设计所有最基本的东西:交互设计的发展历史和由来,交互设计领域里的