文档:https://docs.datastax.com/en/cassandra-oss/3.0/
翻译:https://blog.csdn.net/FS1360472174/article/details/53229361
概览
Apache Cassandra 是一个支持高扩展的开源NoSQL数据库。Cassandra非常适合在云、多数据中心存储结构化、非结构化的数据。Cassandra 支持高可用性,线性扩展,非常简单的在多个server上进行操作,支持单点故障。强大的动态数据模型提供了灵活性和快速响应。
工作原理
cassandra 可扩展的架构意味着它有能力处理PB级数据,每秒上千的并发操作。
1.分片行存储DB
Cassandra 架构允许授权用户通过CQL在任意数据中心的节点上连接到集群任何节点,为了易使用,CQL使用了类似SQL的语法。和Cassandra进行交互的最基础工具是CQL shell:cqlsh。使用cqlsh,你可以创建keyspaces, tables,增删改查表数据。Cassandra3.x需要CQL2.2+支持。如果你喜欢图像化工具,可以使用DataStax DevCenter,生产环境中,DataStax 提供一系列的driver。
2.数据自动分布
Cassandra 提供跨节点的自动数据分布。数据在集群各个节点的分布是透明的,不需要开发者或者DBA做任何事情。
3.内置且可配置的replication
Cassandra 也提供内置的且可配置的复制,为集群节点环的数据提供跨节点的数据冗余备份。这意味着集群中任何一个节点down了,集群中的其他节点还有down节点的数据备份。复制策略可以配置,可以跨数据中心或跨地区分布。
4.支持线性扩展
Cassandra支持线性扩展,意味着可以通过简单的增加新节点来提高集群能力。例如,2个节点能够支持每秒100,000个事务;4个节点就能够支持每秒200,000;8个节点就能支持400,000。
Cassandra 和关系型数据库的区别
Cassandra 是基于peer to peer 通信的分布式数据库。最好的实践是1个查询对应一张表。所以数据是非范式的。正因为如此,跨table的JOIN查询不存在,尽管可以在application中去join。
NoSQL
NoSQL 通常意义上是指not only Structured Query Language,意味着DB可以使用不同于关系型数据库的存储数据方法。目前有很多不同类型的NoSQL数据库,因此即使是直接比较常用类型的NoSQL也没什么用。今天的DBA必须要更加全能,他们必须要知道如何运维关系型数据库和NoSQL数据库。
CQL
Cassandra Query Language(CQL) 是Cassandra DBMS的主要接口,CQL的用法和SQL类似。CQL和SQL有着相同的表结构,行列式。CQL与SQL主要的不同是CQL不支持join和子查询。Cassandra 强调数据的反范式。
CQL是与Cassandra交互的首选。CQL比老的Cassandra API性能更好,更简单易用。
如何和Cassandra交互
cassandra进行交互的最基础的工具就是CQL shell:cqlsh。使用cqlsh可以创建keyspaces,tables,增删改查表数据。Cassandra3.x需要CQL2.2+支持。如果你喜欢图像化工具,可以使用DataStax DevCenter,生产环境,DataStax 提供一系列的driver。
数据迁移
数据可以通过CQL INSERT命令,COPY命令和CSV文件方式,或者sstableloader 方式。但是实际上,你需要考虑你的客户端应用程序将如何查询表数据,需要首先定义数据模型。如果直接将RDBMS的数据搬到Cassandra,一定会失败,因为产生了从关系型数据库到NoSQL之间范式的改变。
cassandra 工具
Cassandra 自动安装了nodetool工具,一个非常有用的命令行管理工具。另外一个默认的安装工具是cassandra-stress可以用来做基本的数据库负载性能测试。