猜你喜欢
Cassandra权威指南(第二版)

Cassandra权威指南(第二版)

书籍作者: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。

如果对这本书有什么意见,或者要询问技术上的问题,请将电子邮件发送至:

[email protected]

要了解关于我们的图书、课程、会议和新闻的更多信息,请访问我们的网站:

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


产品特色