Cassandra是一个分布式数据库管理系统,它是开源的,具有广泛的列存储,NoSQL 数据库可以处理跨许多商品服务器的大量数据,提供高可用性且没有单点故障。它是用Java编写的,由 Apache 软件基金会开发。
Avinash Lakshman和Prashant Malik最初在 Facebook 开发了 Cassandra,以支持 Facebook 收件箱搜索功能。 Facebook 于 2008 年 7 月发布了 Cassandra 作为 Google 代码的开源项目。2009 年 3 月它成为一个 Apache Incubator 项目,并在 2010 年 2 月成为一个顶级项目。由于其出色的技术特性,Cassandra 变得如此受欢迎。
Apache Cassandra 用于管理分布在世界各地的大量结构数据。它提供高可用的服务,没有单点故障。下面列出了 Apache Cassandra 的一些要点:
- 它具有可扩展性、容错性和一致性。
- 它是面向列的数据库。
- 它的分布式设计基于亚马逊的 Dynamo 及其在谷歌大表上的数据模型。
- 它是在 Facebook 创建的,它与关系数据库管理系统截然不同。
Cassandra 实现了一个 Dynamo 风格的复制模型,没有单点故障,但它添加了一个更强大的“列族”数据模型。 Cassandra 正在被 Facebook、Twitter、Cisco、Rackspace、eBay、Netflix 等一些最大的公司使用。
Cassandra 的设计目标是在没有任何单点故障的情况下处理跨多个节点的大数据工作负载。 Cassandra 具有跨节点的点对点分布式系统,数据分布在集群的所有节点之间。
集群中 Cassandra 的所有节点都扮演着相同的角色。每个节点都是独立的,同时与其他节点互连。集群中的每个节点都可以接受读写请求,而不管数据实际位于集群中的哪个位置。当一个节点出现故障时,可以从网络中的其他节点提供读/写请求。
卡桑德拉的特点:
Cassandra 因其技术特性而变得流行。 Cassandra 有一些特点:
- 轻松的数据分发 –
它通过跨多个数据中心复制数据,提供了在您需要的地方分发数据的灵活性。
例如:
如果有 5 个节点,比如说 N1、N2、N3、N4、N5,通过使用分区算法,我们将决定令牌范围并相应地分配数据。每个节点都有特定的令牌范围,数据将在其中分发。让我们看一下图表以便更好地理解。 - 灵活的数据存储 –
Cassandra 可容纳所有可能的数据格式,包括:结构化、半结构化和非结构化。它可以根据您的需要动态适应对数据结构的更改。 - 弹性可扩展性 –
Cassandra 具有高度可扩展性,并允许根据需要添加更多硬件以容纳更多客户和更多数据。 - 快速写入 –
Cassandra 旨在运行在廉价的商品硬件上。 Cassandra 的写入速度非常快,可以存储数百 TB 的数据,而不会牺牲读取效率。 - 始终在架构上 –
Cassandra 没有单点故障,它可以持续用于无法承受故障的关键业务应用程序。 - 快速线性标度性能 –
Cassandra 是线性可扩展的,因此随着您增加集群中的节点数量,它会增加您的吞吐量。它保持快速的响应时间。 - 交易支持——
Cassandra 支持事务的原子性、一致性、隔离性和持久性 (ACID) 等属性。