基本信息
- 原书名:Cassandra: The Definitive Guide
- 原出版社: O'Reilly Media
内容简介
作译者
跨国公司应用架构总监,负责系统战略和设计工作。他是Apache Cassandra项目的一位文档贡献者,同时也是多本技术书籍的作者,其中包括Java SOA Cookbook(O’Reilly出版)。
目录
译者序 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
译者序
我从2010 年初开始关注这个系统,并翻译过几篇Cassandra 相关的文章,还引起一些读者热烈的讨论。2010 年底,当刘江老师为本书寻找译者时,我按捺不住,毛遂自荐,并随后在2011 年1 月中下旬,开始了本书的翻译工作。我用了三个月的业余时间,终于在4 月份完成了译稿。因为Cassandra 仍在快速开发中,翻译时我也尽力争取快一些,以便能让中文版出版时不至于落伍。
本书对Cassandra 的概念、架构、配置、使用进行了全面的介绍,非常详尽,而且给出了很多参考信息。对于希望了解Cassandra、评估Cassandra 是否是适合自己的应用,以及开始着手在Cassandra 上进行应用开发的人都是不错的读物。当然,如果想参与Cassandra 的开发或做更深入的工作,还需要直接通过源代码来获取更详尽的信息。
在翻译中,我尽力使用已有的、被广泛接受的名词或是术语,对于一些译法没有被广泛接受的术语,在不产生歧义的前提下,我会选择一个自以为恰当的词,有时还会给出英文,以避免读者不能将代码和本书给出的名词对应上。还有一些名词尚没有贴切的中文译法,或是译出容易产生歧义,或是国内开发者已习惯使用英文,这时我在翻译中保留了英文原文。这些选择都以帮助理解、避免歧义为首要考虑。
本书的翻译工作得到了很多朋友和网友的关注,希望没有让他们久等。我的同事郭磊涛,作为数据库和HBase 的专家、Cassandra 用户,在本书的翻译过程中给予了很多有益的帮助。感谢现在CSDN 的刘江老师,给我这个机会把Cassandra 介绍给大家。当然,还要感谢图灵的编辑杨海玲、傅志红,还有李松峰在本书的翻译过程中做了大量的细心工作。
希望本书的翻译出版能对读者进入NoSQL 的世界、开始自己的Cassandra 应用有些许的帮助。
前言
Apache Cassandra 是一个免费、开源的分布式数据存储系统,与传统的关系型数据库管理系统截然不同。
Cassandra 在2009 年1 月成为了Apache 基金会的一个孵化器项目。不久, 以Apache Cassandra 项目主席Jonathan Ellis 为首的开发者们发布了Cassandra 0.3,随后稳定不断地发布新的小版本。虽然Cassandra 在本书完成时仍然没有达到1.0发布版本,但已经被互联网领域的很多巨头使用在了生产系统之中,他们包括Facebook、Twitter、Cisco、Rackspace、Digg、Cloudkick、Reddit 等。
因为它非常出色的技术特性,Cassandra 已经变得非常受欢迎了。它具有持久性、无缝扩展性、可调的一致性。它的写操作非常快,可以存储上百TB 数据,而且是无中心的和对称的,所以不会有单点失效。它还是高度可用的,提供了无schema 的数据模型。目标读者
本书适用于各类读者。它对以下读者都会非常有用。
大规模、高容量网站的开发者,比如Web 2.0 的社交应用。
需要理解这个高性能、无中心、弹性数据存储系统的应用架构师或数据架构师。
希望理解如何实现容错、最终一致的数据存储系统的标准关系型数据库系统管理员或开发者。
希望了解Cassandra 的优势(和不足)以及其他相关的列数据库,以帮助进行技术路线选择的管理者。
正在进行Cassandra 或其他非关系型数据库相关项目的学生、分析师或研究员。
本书是一本技术指南。从某种意义上说,Cassandra 代表了一种对数据的新的思考。在过去的15 ~ 20 年间,很多合格的职业开发者都在使用纯粹的关系型或是面向对象的术语来描述他们的数据。Cassandra 的数据模型与此非常不同,起先可能很难吸引你,特别是对于数据库(应该)是什么已经有了先入为主的概念的人,更是如此。使用Cassandra 并不意味着你必须成为一个Java 开发者。不过,Cassandra 是用Java 开发的,所以若要深入分析源代码,你需要对Java 语言有更坚实的理解。虽然不一定需要懂得Java,但Java 可以帮助你更好地了解异常、学会如何编译源码以及使用一些流行的客户端。本书中的很多例子都是用Java 写成的。尽管如此,因为Cassandra 使用了语言中立的RPC 接口,所以你可以使用多种语言来开发Cassandra应用,包括C#、Scala、Python 以及Ruby 等。
最后,本书假设读者已经了解了Web 是如何工作的,能够使用集成开发环境,并对数据驱动的应用的典型问题有某些了解。你可能是一个经验丰富的开发者或管理员,但是对于在Cassandra 的世界里使用到的工具可能偶尔也不是非常熟悉。比如Cassandra 使用Apache Ivy 进行编译,而用一个流行的客户端(Hector)使用Git 进行版本管理。当我感到你可能需要自己进行一些设置才能运行一个例子的时候,我会尽量予以说明。本书的结构
本书把每章设计为一个个独立的指南。因为本书是介绍Cassandra 的,读者们可能背景各异,而且技术变化很快,所以这么处理非常重要。借用一个软件界的说法,我希望本书能够有点儿“模块化”。如果你是一个Cassandra 新人,那么可以按照顺序阅读;而如果你已经有所了解,不需要介绍了,那么也可以在后面的章节里找到有价值的内容,把它们当做独立的指南来看。本书的具体结构是这样的。
第1 章 Cassandra 概况
这一章介绍了Cassandra,并讨论了它与众不同的特质、优势和目前的用户。
第2 章 安装Cassandra在这一章中,作者会带你在不同平台上安装Cassandra。第3 章Cassandra 的数据模型这里,我们介绍了Cassandra 的数据模型以了解Cassandra 中的列、超级列、行都是什么。我们特别介绍了Cassandra 和传统的关系型数据库之间的差别。
第4 章 应用实例这一章给出了一个完整可用的例子,将一个大家熟悉的领域中的应用实例从关系模型迁移到了Cassandra 的数据模型之上。
第5 章 Cassandra 架构
这一章会帮你理解在Cassandra 进行读写操作时,到底都发生了什么,这个数据库是如何做到它的那些特点的,比如持久性和高可用性。我们深入到底层来了解一些更复杂的内部工作机制,比如gossip 协议、提示移交、读时修复、Merkle 树等。
第6 章 配置Cassandra
序言
当年12 月,在Rackspace 要求我帮他们建立一个可扩展的数据库的时候,我加入到这个项目之中。那是个很好的时机,因为今天所有重要的开源可扩展数据库在那时都有了,可以做做比较。尽管最初Cassandra 只有一个主要的应用案例,但它的底层架构是最强大的,于是,我致力于改进代码,同时建立一个社区。
之后,Cassandra 被接纳为Apache 的孵化器项目, 并于2010 年3 月毕业成为顶级项目。此时它已经成为了一个真实的开源软件的成功案例,Rackspace、Digg、Twitter 等公司都成了忠实的用户,他们不愿意从零开始写自己的数据库,但却希望一起来构建一个更优秀的系统。
今天的Cassandra 已经远不止是当初那个(现在也还在)用来驱动Facebook 的收件箱搜索的系统了,按照Tony Bain 的说法,它已经成为了“事务处理性能的不二赢家”,而且在可靠性和可扩展性方面具有显赫的声誉。
随着Cassandra 逐渐成熟并获得了更多的主流用户,我们显然有为它提供商业支持的需要,于是,Matt Pfeil 和我在2010 年4 月共同创立了Riptano。帮助推动Cassandra的应用具有丰富的回报,特别是可以看到更多的还没有被公开讨论过的应用。
另一个需求就是一本关于Cassandra 的书。和很多开源项目一样,Cassandra 的文档一直就是一个弱项。而且即使是文档最终得到了改善,一本这样的书仍然会非常有用。感谢Eben 来承担这项集艺术与科学于一身的艰巨任务,讲解Cassandra 的开发与部
署。读者朋友现在有机会可以有条理地学习这些新概念了。
——Jonathan Ellis
Apache Cassandra 项目主席、Riptano 联合创始人
媒体评论
【插图】
