Apache Cassandra 是一个开源的、分布式、无中心、弹性可扩展、高可用、容错、一致性可调、面向行的数据库,它基于 Amazon Dynamo 的分布式设计和 Google Bigtable 的数据模型,由 Facebook 创建,在一些最流行的网站中得到应用。

分布式和去中心化(Distributed and Decentralized)

Cassandra 是分布式的,这意味着它可以运行在多台机器上,并呈现给用户一个一致的整体。一个 Cassandra 集群可以运行在分散于世界各地的数据中心上。你可以放心地将数据写到集群的任意一台机器上,Cassandra 都会收到数据。 Cassandra 是无中心的,也就是说每个节点都是一样的。与主从结构相反,Cassandra 的协议是 P2P 的,并使用 gossip 来维护存活或死亡节点的列表。

去中心化这一事实意味着 Cassandra 不会存在单点失效。Cassandra 集群中的所有节点的功能都完全一样, 所以不存在一个特殊的主机作为主节点来承担协调任务。有时这被叫做服务器对称(server symmetry)。

综上所述,Cassandra 是分布式、无中心的,它不会有单点失效,所以支持高可用性。

弹性可扩展(Elastic Scalability)

在 Cassandra 里,你只要加入新的计算机,Cassandra 就会自动地发现它并让它开始工作。

高可用和容错(High Availability and Fault Tolerance)

对一个需要高可用的系统,它必须由多台联网的计算机构成,并且运行于其上的软件也必须能够在集群条件下工作,有设备能够识别节点故障,并将发生故障的中端的功能在剩余系统上进行恢复。

Cassandra 就是高可用的。你可以在不中断系统的情况下替换故障节点,还可以把数据分布到多个数据中心里,从而提供更好的本地访问性能,并且在某一数据中心发生火灾、洪水等不可抗灾难的时候防止系统彻底瘫痪。

可调节的一致性(Tuneable Consistency)

CAP 定律表明,对于任意给定的系统,只能在一致性(Consistency)、可用性(Availability)以及分区容错性(Partition Tolerance)之间选择两个。所以 Cassandra 在设计的时候也不得不考虑这些问题,因为分区容错性这个是每个分布式系统必须考虑的,所以只能在一致性和可用性之间做选择,而 Cassandra 的应用场景更多的是为了满足可用性,所以我们只能牺牲一致性了。但是根据 BASE 理论,我们其实可以通过牺牲强一致性获得可用性。

Cassandra 提供了可调节的一致性,允许我们选定需要的一致性水平与可用性水平,在二者间找到平衡点。因为客户端可以控制在更新到达多少个副本之前,必须阻塞系统。这是通过设置副本因子(replication factor)来调节与之相对的一致性级别。

通过副本因子(replication factor),你可以决定准备牺牲多少性能来换取一致性。 副本因子是你要求更新在集群中传播到的节点数(注意,更新包括所有增加、删除和更新操作)。

客户端每次操作还必须设置一个一致性级别(consistency level)参数,这个参数决定了多少个副本写入成功才可以认定写操作是成功的,或者读取过程中读到多少个副本正确就可以认定是读成功的。这里 Cassandra 把决定一致性程度的权利留给了客户自己。

面向行(Row-Oriented)

Cassandra 经常被看做是一种面向列(Column-Oriented)的数据库,这也并不算错。它的数据结构不是关系型的,而是一个多维稀疏哈希表。稀疏(Sparse)意味着任何一行都可能会有一列或者几列,但每行都不一定(像关系模型那样)和其他行有一样的列。每行都有一个唯一的键值,用于进行数据访问。所以,更确切地说,应该把 Cassandra 看做是一个有索引的、面向行的存储系统。

灵活的模式(Flexible Schema)

Cassandra 引入了 Cassandra Query Language(CQL),它提供了一种通过类似于结构化查询语言(SQL)的语法来定义模式。

从 3.0 版本开始,不推荐使用基于 Thrift API 的动态列创建的 API,并且 Cassandra 底层存储已经重新实现了,以更紧密地与 CQL 保持一致。 Cassandra 并没有完全限制动态扩展架构的能力,但它的工作方式却截然不同。 CQL 集合(比如 list、set、尤其是 map)提供了在无结构化的格式里面添加内容的能力,从而能扩展现有的模式。CQL 还提供了改变列的类型的能力,以支持 JSON 格式的文本的存储。

因此,描述 Cassandra 当前状态的最佳方式可能是它支持灵活的模式。

高性能(High Performance)

Cassandra 在设计之初就特别考虑了要充分利用多处理器和多核计算机的性能,并考虑在分布于多个数据中心的大量这类服务器上运行。它可以一致而且无缝地扩展到数百台机器,存储数 TB 的数据。Cassandra 已经显示出了高负载下的良好表现,在一个非常普通的工作站上,Cassandra 也可以提供非常高的写吞吐量。而如果你增加更多的服务器,你还可以继续保持 Cassandra 所有的特性而无需牺牲性能。

Cassandra 的应用场景

我们已经介绍了 Cassandra 的主要特点,对 Cassandra 的长处有了一定的理解。尽管 Cassandra 设计精巧,功能出色,但也不能胜任所有的工作。所以我们来介绍一下 Cassandra 最适合的场景。

大规模部署

Cassandra 的很多精巧设计都专注于高可用、可调一致性、P2P 协议、无缝扩展等,这些都是 Cassandra 的卖点。这些特性在单节点工作时都是没有意义的,更无法实现它的全部能力。

写密集、统计和分析型工作

考虑一下你的应用的读写比例,Cassandra 是为优异的写吞吐量而特别优化的。

地区分布

Cassandra 直接支持多地分布的数据存储,Cassandra 可以很容易配置成将数据分布到多个数据中心的存储方式。如果你有一个全球部署的应用,那么让数据贴近用户会获得不错的性能收益,Cassandra 正适合这种应用场合。

变化的应用

如果你正在“初创阶段”,业务会不断改进,Cassandra 这种灵活的模式的数据模型可能更适合你。这让你的数据库能更快地跟上业务改进的步伐。

Cassandra 在全世界有多达 1500 家公司使用:

  • 苹果的 Cassandra 集群达到 75,000 节点,存储了 10PB 的数据;

  • Netflix 的 Cassandra 集群达到 2,500 个节点,存储了多达 420TB 的数据;

  • 宜搜的 Cassandra 集群达到 270 个节点,存储多达 300TB 的数据;

  • eBay 的 Cassandra 集群达到 100 个节点,存储多达 250TB 的数据;

  • 360 的 Cassandra 集群达到 1500 个节点;

  • 饿了么的 Cassandra 集群达到 100 个节点。

Apache Cassandra简介相关推荐

  1. Apache Cassandra 数据存储模型

    我们在<Apache Cassandra 简介>文章中介绍了 Cassandra 的数据模型类似于 Google 的 Bigtable,对应的开源实现为 Apache HBase,而且我们 ...

  2. Cassandra 简介

    Cassandra 简介 Apache Cassandra是一个高度可扩展的高性能分布式数据库,用于处理大量商用服务器上的大量数据,提供高可用性,无单点故障.这是一种NoSQL类型的数据库. 让我们先 ...

  3. Apache Mahout 简介

    Apache Mahout 简介 通过可伸缩.商业友好的机器学习来构建智能应用程序 当研究院和企业能获取足够的专项研究预算之后,能从数据和用户输入中学习的智能应用程序将变得更加常见.人们对机器学习技巧 ...

  4. 使用Apache Cassandra设置SpringData项目

    在这篇文章中,我们将使用Gradle和spring boot来创建一个集成spring-mvc和Apache Cassandra数据库的项目. 首先,我们将从Gradle配置开始 group 'com ...

  5. 使用Apache Cassandra设置一个SpringData项目

    在这篇文章中,我们将使用Gradle和spring boot来创建一个将spring-mvc和Apache Cassandra数据库集成在一起的项目. 首先,我们将从Gradle配置开始 group ...

  6. Apache Cassandra和低延迟应用程序

    介绍 多年来, Grid Dynamics拥有许多与NoSQL相关的项目,尤其是Apache Cassandra. 在这篇文章中,我们要讨论一个给我们带来挑战的项目,而我们在该项目中试图回答的问题今天 ...

  7. Apache Cassandra和Java入门(第一部分)

    在此页面上,您将学到足够的知识来开始使用NoSQL Apache Cassandra和Java,包括如何安装,尝试一些基本命令以及下一步做什么. 要求 要遵循本教程,您应该已经有一个正在运行的Cass ...

  8. Apache Cassandra和Java入门(第二部分)

    要求 要遵循本教程,您应该已经有一个正在运行的Cassandra实例( 一个小型集群会很好 ,但不是必需的),已安装Datastax Java驱动程序( 请参阅第I部分 ),并且已经在这里进行了10分 ...

  9. Apache Cassandra 1.1.0 稳定版发布

    Apache Cassandra团队今天正式推出了1.1分支的首个稳定版1.1.0版本. Apache Cassandra是一套开源的分布式 NoSQL 数据库系统,遵循 Apache Lience ...

最新文章

  1. 《告别失控:软件开发团队管理必读》一一2.6 代系特点
  2. [BZOJ1355][Baltic2009]Radio Transmission
  3. 《基于张量网络的机器学习入门》学习笔记7
  4. brave counts rather people who are at high position
  5. 映射网络驱动器会自动断开的解决方法
  6. 软工Hello World!团队第二周博客汇总
  7. java编写螺旋矩阵讲解_Java如何实现螺旋矩阵 Java实现螺旋矩阵代码实例
  8. 让计算机等待的函数_第56p,装饰器,闭包函数的应用
  9. Android图片缩放方法
  10. Python 贪吃蛇 代码
  11. 我在51CTO微职位学PMP_飘过攻略及心得分享
  12. 6、深思数盾加密狗使用小记
  13. 量子计算机大致原理,通俗简介量子计算机原理
  14. 无线wifi的dns服务器,无线wifidns是什么
  15. 手机发布新闻php,自动发布新闻的php代码_php
  16. 最新域名防红程序源码 采用小Q防红
  17. CMOS反相器设计与仿真
  18. ROG魔霸7Plus的CPU温度与 Armoury Crate 设置问题
  19. 名帖105 赵孟頫 楷书《玄妙观重修三门记》
  20. 最新车载以太网解决方案,你知多少?

热门文章

  1. 写给程序员的管理入门课程(转)
  2. ApacheCN JavaScript 译文集 20211122 更新
  3. Google OR-Tools(一) Get Start
  4. 解读银保监“个人信息保护专项整治”,强监管下金融业个人信息安全保护如何“守”?|特邀专栏
  5. 2022年危险化学品经营单位主要负责人考试题模拟考试题库及答案
  6. SimpleMind Pro中文版
  7. tl-wn821n linux驱动程序,tl-wn821n驱动下载
  8. 云南师范大学商学院二级计算机报名,云南师范大学商学院教务网
  9. 久坐提醒 android,真时运动app安卓版
  10. Paper pusher 摆弄文件的人