Apache Cassandra 是一个开源的、用户可用的、分布式的 NoSQL DBMS,旨在处理跨多个服务器的大量数据。它提供零故障点。 Cassandra 为跨越多个数据中心的集群提供了大量支持。
Cassandra 有一些强大的功能。以下是以下描述的一些功能:
- 分散式:
集群中的每个节点都具有相同的角色。不存在故障问题,数据集分布在整个集群中,但存在一个问题,即每个节点中不存在主节点来支持服务请求。 - 支持复制和多数据中心复制:
复制因子带有 cassandra 中的最佳配置。 Cassandra 旨在拥有一个分布式系统,用于跨多个数据中心和其他关键功能部署大量节点。 - 可扩展性:
它旨在读写吞吐量,随着新机器的添加逐渐增加而不会中断其他应用程序。 - 容错:
数据自动存储和复制以实现容错。如果一个节点出现故障,那么它会立即被替换。 - MapReduce 支持:
它支持与 MapReduce 支持的 Hadoop 集成。还支持 Apache Hive和 Apache Pig。 - 查询语言:
Cassandra 引入了 CQL(Cassandra Query Langugae)。它是一个用于访问 Cassandra 的简单界面。
Cassandra 查询语言(CQL) :
CQL 具有访问 Cassandra 的简单接口,也是传统 SQL 的替代方案。 CQL 添加了一个抽象层来隐藏结构的实现,并且还为集合提供了本机语法。
例如,请遵循给定的示例,该示例显示了如何在 CQL 3.0 中创建包含列族的键空间-
CREATE KEYSPACE MyKeySpace
WITH REPLICATION = { 'class' : 'SimpleStrategy',
'replication_factor' : 3 };
USE MyKeySpace;
CREATE COLUMNFAMILY MyColumns (id text, Last text,
First text, PRIMARY KEY(id));
INSERT INTO MyColumns (id, Last, First)
VALUES ('1', 'Doe', 'John');
询问:
SELECT * FROM MyColumns;
这使:
id | First | Last
----+-------+------
1 | Ratul | Sarkar
(1 行)
关于 Cassandra 的一些事实如下:
- 在 Cassandra 版本更新之前,直到 Cassandra 1.0,Cassandra 不是行级一致的,这意味着插入和更新表。它可能会影响几乎同时处理的同一行,可能会以不一致的方式影响非键列。
Cassandra 1.1 使用行级隔离解决了这个问题。 - 删除称为墓碑(来源互联网)的标记也会导致性能下降到严重的后果级别。
- Cassandra,本质上是键值和有组织的表格 DBMS 之间的混合体。可以在运行时创建、删除和更改表,而不会阻止更新和查询。
- 一个名为 table 的列族代表一个 RDBMS。每行都由行和键、名称、值、时间戳等具体标识。Cassandra 中的表是一个受干扰的多维映射,由键监控。超级列族指定了更多的应用程序。