本书是一本广受好评的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
《威柄在御》内容简介:“大礼议”之争、追尊生父并为之立庙,是嘉靖帝“天性至情、君亲大义”,还是“醉翁之意不在酒”?李福达狱
在不远的未来,日常物品将能够迅速理解我们的需求,改善我们的生活,并随处可见。为了实现这一预期,我们需要能够发现用户使用产
《武将的一天》内容简介:本书通过展示古代武将(楚庄王熊吕、周瑜、完颜宗翰、拜答尔、王坚、戚继光)的一天,来表现不同历史时期
《Excel VBA语法辞典》内容简介:《Excel VBA语法辞典》使用174个实例详细介绍了Excel VBA的语法内容,全书共分9章,分别介绍了VBA
国内的动物园设计一直处于比较混乱的状态,没有可统一借鉴的参考用书。张恩权、李晓阳编著的这本《图解动物园设计》是动物园和设
《爱的心理密码》内容简介:本书从认识性别差异、建立关系、维护关系、结束关系等角度入手,结合前沿心理学实验,解答人们在爱情中
1997年5月11日,全世界数百万人通过电视观看了一场惊人的胜利——一台计算机战胜了欲捍卫世界冠军称号的卡斯帕罗夫,此举震惊了国
《如厕书》内容简介:31个发生在厕所的神奇小故事,一部充满想象力的短篇小说集! 家庭主妇销毁偷吃证据,职员被困马桶尴尬时刻,甚
烏托邦需要一張地圖。這地圖可能是理想中未來城市的藍圖,也可能是記憶裡過去城市的草圖。憑這張地圖,人希望尋找未來的城市,或
《信息之美》告诉读者信息视觉效果的显示和信息如何关联,以及和这些信息相关的事实,让信息设计更有意思,信息决策更高效。我们
《JavaWeb开发实战宝典》从初学者的角度出发,通过通俗易懂的语言、丰富实用的实例,详细介绍了使用Java语言和开源框架进行Web程
《赛雷三分钟漫画三国演义3》内容简介:电影式全场景,爆笑还原三国演义!超立体,超生动,超涨知识!《三国演义》可以说是中国较为
《风物》内容简介:《风物》是有名摄影随笔作家青简对中国地域风俗的可视化记录。文稿集中选取了拥有有中国特点的文化美学关键词“
和孩子一起玩编程 本书特色 《和孩子一起玩编程》分成书和卡片两部分,卡片相当于书的图片版,是供不能独立阅读本书的孩子使用的,使用方式是家长看书来讲解,孩子看卡片...
《图灵的大教堂》内容简介:1936年,时年24岁的图灵宣称:“发明一台可用于计算任意可计算序列的单一机器是有可能的。”在《图灵的
《分科的学史与历史》内容简介:今天以前的一切都是历史,因而历史本不分科,况且中国治学讲究贯通,素来不重分科。可是今日的史学
SAP入门经典-(第5版) 本书特色 《SAP入门经典(第5版)》是由业内专家编写的SAP入门教程,其中对SAP的各种主要产品与组件进行了较为详细的介绍,并且从...
未来十年,将是中国农产品商业品牌崛起的“黄金十年”。中国,能不能出现“下一个褚橙”?中国,能不能出现与佳沛(Zespri)、都
《中国历史常识》内容简介:吴晗于1963年至1965年间组织了一批专家学者,如知名历史学家汪篯、白寿彝、邓广铭、郑天挺、翁独健、胡
《倪徽奥传》内容简介:倪徽奥,他的一生堪称传奇,东京大审判,他以凛然正气,将侵华日军战犯绳之以法,作为新中国第一位国际法院