新書推薦:
《
你的认知正在阻碍你
》
售價:HK$
65.0
《
我们身边的小鸟朋友:手绘观鸟笔记
》
售價:HK$
78.2
《
拯救免疫失衡
》
售價:HK$
55.8
《
收尸人
》
售價:HK$
72.8
《
大模型应用开发:RAG入门与实战
》
售價:HK$
89.4
《
不挨饿快速瘦的减脂餐
》
售價:HK$
67.0
《
形而上学与存在论之间:费希特知识学研究(守望者)(德国古典哲学研究译丛)
》
售價:HK$
110.7
《
卫宫家今天的饭9 附画集特装版(含漫画1本+画集1本+卫宫士郎购物清单2张+特制相卡1张)
》
售價:HK$
132.2
|
編輯推薦: |
想象一下,如果解决了伸缩性问题,你能做些什么。利用这本实用指南,你会了解Cassandra数据库管理系统如何处理数百TB的数据,同时仍保持跨多个数据中心的高可用性。本书已经针对Cassandra 3.0全面更新,提供了在生产环境中使用这个数据库所需的技术细节和实用示例。本书作者向我们展示了Cassandra非关系型设计的诸多优点,尤其对数据建模特别关注。如果你是一个开发人员、DBA或应用架构师,着力解决数据库扩展问题或应用的前瞻性问题,这本指南将帮助你充分利用Cassandra的高速度和灵活性。“这本书会告诉你为什么要在你的应用中使用Cassandra以及如何使用。希望你能用它创造奇迹,获得另一个成功。”——Patrick McFadinApache Cassandra, DataStax首席布道官
|
內容簡介: |
.理解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的首席技术官,这是全球最大酒店集团之一。他著有多本有关架构、分布式系统和编程的书。
|
目錄:
|
目录序一1序二3前言5第1章 超越关系型数据库15关系型数据库有什么问题?15关系型数据库速览20网络规模28NoSQL的兴起29小结31第2章Cassandra概述32Cassandra电梯间演讲32Cassandra从哪里来?45Cassandra适合我的项目吗?53参与其中54小结56第3章 安装Cassandra57安装Apache发布版本57从源码构建60运行Cassandra62其他Cassandra发布版本67运行CQL Shell68小结77第4章Cassandra查询语言78关系型数据模型78Cassandra的数据模型79CQL类型88二级索引99小结101第5章 数据建模102概念数据建模102RDBMS设计103逻辑数据建模109物理数据建模115评估和改进121定义数据库模式125小结127第6章Cassandra架构129数据中心和机架129Gossip和故障检测130snitch感应策略133环和令牌134虚拟节点135分区器136复制策略137一致性级别138查询和协调器节点139Memtable、SSTable和提交日志140缓存142提示移交143轻量级事务和Paxos144墓碑146布隆过滤器146合并147逆熵、修复和Merkle树149分阶段事件驱动架构 151管理器和服务152系统键空间155小结158第7章 配置Cassandra159Cassandra集群管理器159创建集群160种子节点164分区器164Snitch167节点配置170向集群增加节点174动态加入环176复制策略177小结180第8章 客户端181Hector、Astyanax和其他遗留客户端181DataStax Java驱动程序182DataStax Python Driver205DataStax Nodejs Driver207DataStax Ruby Driver208DataStax C# Driver208DataStax CC++ Driver209DataStax PHP Driver211小结211第9章 读写数据212写212Cassandra写路径215读225删除243小结244第10章 监控245日志245用JMX监控Cassandra250Cassandra的MBean258用nodetool监控269小结276第11章 维护277健康检查277基本维护278移动令牌286增加节点286处理节点故障290升级Cassandra295备份和恢复297SSTable工具302维护工具303小结306第12章 性能调优307管理性能307缓存315Memtable318提交日志319SSTable321提示移交322合并323并发和线程326网络和超时327JVM设置329使用cassandra-stress332小结336第13章 安全337认证和授权338加密346JMX安全性352小结354第14章 部署和集成355规划集群部署355云部署360集成365小结374
|
內容試閱:
|
前言为什么选择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.comjeffreyscarpentercassandra-guide下载。本书的目的是帮助你完成工作。一般来讲,你可以在你的程序和文档中使用这些代码,不需要联系我们来得到许可,除非你直接复制了大部分的代码。例如,如果你在编写一个程序,使用了本书中的多段代码,这并不需要得到许可。但是出售或发行O''Reilly书示例代码光盘则需要得到许可。回答问题时如果引用了这本书的文字和示例代码,这不需要得到许可。但是如果你的产品的文档借用了本书中的大量示例代码,则需要得到许可。我们希望但不严格要求标明引用出处。引用信息通常包括书名、作者、出版商和ISBN。例如 “Cassandra: The Definitive Guide, Second Edition, by Jeff Carpenter. Copyright 2016 Jeff Carpenter, 978-1-491-93366-4”。如果你认为你在使用代码示例时超出了合理使用范围或者上述许可范围,可以随时联系我们:permissions@oreilly.com。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 NorthSebastopol, CA 95472中国:北京市西城区西直门南大街2号成铭大厦C座807室(100035)奥莱利技术咨询(北京)有限公司针对这本书,我们还建有一个网页,列出了有关勘误、示例和其他信息。可以通过以下地址访问这个页面:http:bit.lycassandra2e。如果对这本书有什么意见,或者要询问技术上的问题,请将电子邮件发送至:bookquestions@oreilly.com。要了解关于我们的图书、课程、会议和新闻的更多信息,请访问我们的网站:http:www.oreilly.com。我们的Facebook: http:facebook.comoreilly。我们的Twitter: http:twitter.comoreillymedia。我们的YouTube: http:www.youtube.comoreillymedia。致谢我们要感谢很多非常优秀的人帮助这本书得以面世。感谢我们的技术审校们: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做出了贡献的很多了不起的开发人员也给了我们很大启发。向你们致敬,感谢你们建立了这样一个优秀而强大的数据库。
|
|