书籍作者:Jeff | ISBN:9787519836382 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:7020 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
理解Cassandra的分布式和去中心化结构。
.使用Cassandra查询语言(CQL) 和cqlsh(CQL shell)。
.创建一个实用的数据模型,并与等价关系型模型比较。
.使用不同语言的客户端驱动程序开发示例应用,包括Java、Python和Node.js。
.研究集群拓朴,了解节点间如何交换数据。
.维持集群的高性能水平。
.现场部署、云环境部署或利用Docker部署Cassandra。
.Cassandra与Spark、Hadoop、Elasticsearch、Solr和Lucene集成。
Jeff Carpenter是Choice Hotels International的系统架构师,在酒店和国防工业领域积累了20多年的经验。Jeff的兴趣主要包括SOA/微服务、构建大规模系统架构和数据架构。
Eben Hewitt是Choice Hotels International的首席技术官,这是全球ZZ大酒店集团之一。他著有多本有关架构、分布式系统和编程的书。
为什么选择Apache Cassandra?
Apache Cassandra是一个免费、开源的分布式数据存储系统,与关系型数据库管理系统(relational database management systems,RDBMS)截然不同。Cassandra最初是在2009年1月作为Apache的一个孵化器项目启动的。不久,以Apache Cassandra项目主席Jonathan Ellis为首的提交者发布了Cassandra 0.3,并在此之后稳定不断地发布新的小版本。Cassandra已经被Web领域的众多巨头用于生产环境,包括Facebook、Twitter和Netflix。Cassandra之所以越来越受到欢迎,很大程度上是因为它提供的出色的技术特性。它具有持久性、无缝可扩展性,以及可调一致性,可以非常快地执行写操作,可以存储数百TB的数据,而且是去中心化的和对称的,所以不存在单点失效问题。此外,它还是高度可用的,提供了一个基于Cassandra查询语言(Cassandra Query Language,CQL)的数据模型。
本书的读者对象
这本书适用各类读者,对以下读者会非常有用。
? 大规模、高容量应用(比如Web 2.0社交应用或电子商务网站)的开发人员。
? 应用架构师或数据架构师,需要了解有哪些高性能、去中心化、弹性数据库选择。
? 目前使用标准关系型数据库系统的数据库管理员或开发人员,需要了解如何实现容错且最终一致的数据库。
? 希望了解Cassandra及相关列式数据库的优势(和不足)的管理者,来帮助做出有关技术战略的决策。
? 正在设计Cassandra或其他非关系型数据库相关项目的学生、分析师或研究人员。
这本书是一本技术指南。在很多方面,Cassandra代表了一种考虑数据的新思。过去15~20年间获得专业技能的很多开发人员非常精通用纯粹的关系或面向对象方式来考虑数据。Cassandra的数据模型则完全不同,开始时可能很难理解,特别是有些人已经对数据库是什么(以及应该是什么)有了先入为主的想法,尤其他们可能难以接受。
使用Cassandra并不意味着你必须是一名Java开发人员。不过,Cassandra是用Java写的,所以如果要深入分析源代码,扎实地理解Java非常重要。虽然并不严格要求懂Java,但这有助于你更好地理解异常、了解如何构建源代码,以及如何使用一些流行的客户端。本书中的很多例子都是用Java写的。不过,根据访问Cassandra所用的接口,完全可以采用多种语言来使用Cassandra,包括C#、Python、node.js、PHP和Ruby。
最后,假设读者已经了解Web是如何工作的,能够使用集成开发环境(IDE),并对数据驱动应用的典型问题有所了解。你可能是一个经验丰富的开发人员或管理员,不过有时会遇到Cassandra世界里使用的一些不太熟悉的工具。比如Cassandra使用Apache Ant构建,另外可以通过Git获得Cassandra源代码。有时候我们认为你可能需要做一些自己的设置才能运行某些例子,在这种情况下我们会特别说明。
本书的主要内容
在合理的范围内,本书把各章设计作为独立的指南。对于一本关于Cassandra的书来说,这一点很重要,因为读者可能水平各异,而且技术变化很快。借用软件领域的一个说法,这本书设计为“模块化”的。如果你刚接触Cassandra,可以按顺序阅读;如果你已经过了入门阶段,也可以在后面的章节中找到你需要的内容,每一章都可以作为一个独立的指南来阅读。
本书组织如下:
第1章,超越关系型数据库
这一章将回顾了获得极大成功的关系型数据库的历史,并介绍非关系型数据库技术(如Cassandra)的蓬勃兴起。
第2章,Cassandra简介
这一章介绍Cassandra,并讨论它有哪些让人激动和不同寻常的地方,它来自哪里,另外有哪些优点。
第3章,安装Cassandra
这一章会带着你安装和运行Cassandra,并尝试它的一些基本特性。
第4章,Cassandra查询语言
这一章介绍Cassandra的数据模型,重点强调它与传统关系模型的区别。我们还会讨论如何用Cassandra查询语言(CQL)表示这个模型。
第5章,数据建模
这一章介绍Cassandra中数据建模的原则和过程。我们会分析一个大家熟悉的领域,来建立一个实际可用的模式。
第6章,Cassandra架构
这一章将帮助你了解读写操作时发生了什么,另外Cassandra如何实现它的一些突出特点,如持久性和高可用性。我们会深入地理解一些更复杂的内部工作方式,如Gossip协议、提示移交、读修复、Merkle树等。
第7章,配置Cassandra
这一章会介绍如何指定分区器、副本放置策略和snitch。我们会建立一个集群,并查看不同配置选择的影响。
第8章,客户端
面向不同的语言有很多不同的客户端,包括Java、Python、node.js、Ruby、C#和PHP,这些客户端对Cassandra的底层API提供了抽象。我们会帮助你了解常用驱动程序的特性。
第9章,读写数据
在前面章节的基础上,我们将学习Cassandra“在底层”是如何读写数据的。我们还会讨论批处理(batch)、轻量级事务和分页(paging)等概念。
第10章,监控
一旦建立和运行集群,可能需要监控集群的使用情况、内存模式和线程模式,了解它的一般活动。Cassandra内置有一个功能丰富的Java管理扩展(JMX)接口,可以用来监控所有这些方面及其他一些方面。
第11章,维护
利用服务器自带的一些工具可以让Cassandra集群的持续维护变得更为容易。我们会介绍如何退服一个节点、实现集群的负载平衡、获得统计信息,以及完成其他日常的运维任务。
第12章,性能调优
Cassandra最突出的特性之一就是它的速度非常快,不过还有很多方面可以进一步优化以提高性能,包括内存设置、数据存储、硬件选择、缓存,以及缓冲区大小。
第13章,安全性
NoSQL技术经常因为安全性方面的短板而遭到诟病。好在Cassandra提供了认证、授权和加密特性,我们将在这一章学习如何配置这些特性。
第14章,部署和集成
在本书的最后,我们会讨论规划集群部署的注意事项,包括使用Amazon、Microsoft和Google等提供商的云部署。这一章还会介绍经常与Cassandra结合使用来扩展功能的诸多技术。
本书使用的Cassandra版本
本书使用了Cassandra 3.X版本系列,另外使用了DataStax Java Driver 3.0。讨论2.0及以后版本增加的新特性时,我们会给出新增该特性的相应版本号,方便使用较早版本的读者考虑是否升级。
第二版新增内容
本书第一版是关于Cassandra出版的第一本书,多年来一直得到业界的高度认可。不过,2010年以来,Cassandra格局已经发生了显著变化,不论从技术本身来讲,还是从开发和支持这项技术的社区来说,都有了巨大变化。为了让这本书跟上Cassandra的最新发展,我们做了以下重要更新:
历史感
第一版是针对2010年发布的0.7版撰写的。到2016年,我们已经升级到3.X系列。最重要的变化是引入了CQL,而废弃了之前的Thrift API。另外增加了一些新的架构特性,包括二级索引、物化视图和轻量级事务。我们在第2章提供了一个简明的版本历史,帮助你了解这些变化。书中介绍新特性时,我们通常会指出这些特性是在哪些版本中新增的。
助力开发人员
这些年来,Cassandra的相关开发和测试有了很大变化,它引入了CQL shell (cqlsh),并逐步将社区开发的客户端替换为DataStax提供的驱动程序。我们将在第3章和第4章深入地介绍cqlsh,并在第8章和第9章讨论这些驱动程序。在第9章还提供了Cassandra读路径和写路径的一个扩展描述,加深你对内部机制的理解,并帮助你了解不同决策带来的影响。
辅助Cassandra运维
随着越来越多的个人和组织在生产环境中部署Cassandra,有关生产环境中遇到的挑战以及应对这些挑战的最佳实践知识库在日益壮大。我们增加了几章全新的内容,包括关于安全性的第13章及关于部署和集成的第14章,另外大大拓展了有关监控、维护和性能调优的章节(第10~12章),以体现这些新的智慧结晶。
排版约定
本书使用以下排版约定:
斜体(Italic)
表示新术语、URL、email地址、文件名和文件扩展名。
定宽字体(Constant width)
表示程序代码清单,以及在段落中用来指示程序元素,如变量或函数名、数据库、数据类型、环境变量、语句和关键字。
定宽粗体(Constant width bold)
表示要由用户键入的命令或其他文字。
定宽斜体(Constant width italic)
表示该文本要替换为用户提供的值或由上下文确定的值。
使用代码示例
本书中的代码示例可以从https://github.com/jeffreyscarpenter/cassandra-guide下载。
本书的目的是帮助你完成工作。一般来讲,你可以在你的程序和文档中使用这些代码,不需要联系我们来得到许可,除非你直接复制了大部分的代码。
例如,如果你在编写一个程序,使用了本书中的多段代码,这并不需要得到许可。但是出售或发行O'Reilly书示例代码光盘则需要得到许可。回答问题时如果引用了这本书的文字和示例代码,这不需要得到许可。但是如果你的产品的文档借用了本书中的大量示例代码,则需要得到许可。
我们希望但不严格要求标明引用出处。引用信息通常包括书名、作者、出版商和ISBN。例如 “Cassandra: The Definitive Guide, Second Edition, by Jeff Carpenter. Copyright 2016 Jeff Carpenter, 978-1-491-93366-4”。
如果你认为你在使用代码示例时超出了合理使用范围或者上述许可范围,可以随时联系我们:[email protected]。
Safari
®图书在线
Safari图书在线(www.safaribooksonline.com)是一个应需而变的数字图书馆,通过图书和视频方式提供世界顶尖作者在技术和商业领域积累的专家经验。
技术专家、软件开发人员、Web设计人员和企业以及有创意的专业人员都使用Safari图书在线作为其主要资源来完成研究、解决问题、深入学习和资质培训。
Safari图书在线为机构、政府部门和个人提供了多种产品组合和定价程序。
订阅者可以在一个可以快捷搜索的数据库中访问多家出版社提供的成千上万种图书、培训视频和正式出版前手稿,如O'Reilly Media、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett、Course Technology,以及其他数百家出版公司。关于Safari图书在线的更多信息,请访问我们的在线网站。
联系我们
请将关于本书的意见和问题通过以下地址提供给出版社:
美国:
O'Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
针对这本书,我们还建有一个网页,列出了有关勘误、示例和其他信息。可以通过以下地址访问这个页面:http://bit.ly/cassandra2e。
如果对这本书有什么意见,或者要询问技术上的问题,请将电子邮件发送至:
要了解关于我们的图书、课程、会议和新闻的更多信息,请访问我们的网站:
http://www.oreilly.com。
我们的Facebook: http://facebook.com/oreilly。
我们的Twitter: http://twitter.com/oreillymedia。
我们的YouTube: http://www.youtube.com/oreillymedia。
致谢
我们要感谢很多非常优秀的人帮助这本书得以面世。
感谢我们的技术审校们:Stu Hood、Robert Schneider和Gary Dusbabek,你们为第一版贡献了很有见地的评论,另外感谢Andrew Baker、Ewan Elliot、Kirk Damron、Corey Cole、Jeff Jirsa和Patrick McFadin审阅了第二版。Chris Judson的反馈对第14章的完善起到了关键作用。
感谢Jonathan Ellis和Patrick McFadin为这本书的第一版和第二版作序。还要感谢Patrick对第14章Spark集成一节的贡献。
感谢我们的编辑Mike Loukides和Marie Beaugureau,感谢他们一直以来的支持,让这本书变得更好。
Jeff还要感谢Eben给予的信任,给他这个机会来更新这样一本颇具盛誉的经典著作,另外感谢Eben自始至终的鼓励。
最后,对Cassandra做出了贡献的很多了不起的开发人员也给了我们很大启发。向你们致敬,感谢你们建立了这样一个优秀而强大的数据库。
序一1
序二3
前言5
第1章 超越关系型数据库15
关系型数据库有什么问题?15
关系型数据库速览20
网络规模28
NoSQL的兴起29
小结31
第2章Cassandra概述32
Cassandra电梯间演讲32
Cassandra从哪里来?45
Cassandra适合我的项目吗?53
参与其中54
小结56
第3章 安装Cassandra57
安装Apache发布版本57
从源码构建60
运行Cassandra62
其他Cassandra发布版本67
运行CQL Shell68
小结77
第4章Cassandra查询语言78
关系型数据模型78
Cassandra的数据模型79
CQL类型88
二级索引99
小结101
第5章 数据建模102
概念数据建模102
RDBMS设计103
逻辑数据建模109
物理数据建模115
评估和改进121
定义数据库模式125
小结127
第6章Cassandra架构129
数据中心和机架129
Gossip和故障检测130
snitch感应策略133
环和令牌134
虚拟节点135
分区器136
复制策略137
一致性级别138
查询和协调器节点139
Memtable、SSTable和提交日志140
缓存142
提示移交143
轻量级事务和Paxos144
墓碑146
布隆过滤器146
合并147
逆熵、修复和Merkle树149
分阶段事件驱动架构 151
管理器和服务152
系统键空间155
小结158
第7章 配置Cassandra159
Cassandra集群管理器159
创建集群160
种子节点164
分区器164
Snitch167
节点配置170
向集群增加节点174
动态加入环176
复制策略177
小结180
第8章 客户端181
Hector、Astyanax和其他遗留客户端181
DataStax Java驱动程序182
DataStax Python Driver205
DataStax Nodejs Driver207
DataStax Ruby Driver208
DataStax C# Driver208
DataStax C/C++ Driver209
DataStax PHP Driver211
小结211
第9章 读写数据212
写212
Cassandra写路径215
读225
删除243
小结244
第10章 监控245
日志245
用JMX监控Cassandra250
Cassandra的MBean258
用nodetool监控269
小结276
第11章 维护277
健康检查277
基本维护278
移动令牌286
增加节点286
处理节点故障290
升级Cassandra295
备份和恢复297
SSTable工具302
维护工具303
小结306
第12章 性能调优307
管理性能307
缓存315
Memtable318
提交日志319
SSTable321
提示移交322
合并323
并发和线程326
网络和超时327
JVM设置329
使用cassandra-stress332
小结336
第13章 安全337
认证和授权338
加密346
JMX安全性352
小结354
第14章 部署和集成355
规划集群部署355
云部署360
集成365
小结374