CASSANDRA学习

CASSANDRA在工作中用过,但是用的项目少,能用却了解的不全面。今天来稍加学习下:

Step1:  首先,CASSANDRA也是Apache的产品,是个DB。官网原话: The Apache Cassandra database is the right choice when you need scalability and high availability without compromising performance. Linear scalability and proven fault-tolerance on commodity hardware or cloud infrastructure make it the perfect platform for mission-critical data.Cassandra's support for replicating across multiple datacenters is best-in-class, providing lower latency for your users and the peace of mind of knowing that you can survive regional outages.

Cassandra 是一个来自 Apache 的分布式数据库,具有高度可扩展性,可用于管理大量的结构化数据。它提供了高可用性,没有单点故障。

这是一种NoSQL类型的数据库。

NoSQL 数据库

NoSQL数据库(有时称为“不是唯一的SQL”)是一种数据库,它提供一种机制来存储和检索数据,而不是关系数据库中使用的表格关系。这些数据库是无架构的,支持简单的复制,具有简单的API,最终一致,并且可以处理大量的数据。

NoSQL数据库的主要目的在于:

  • 设计简单
  • 水平缩放
  • 更好地控制可用性

与关系数据库相比,NoSql数据库使用不同的数据结构。它使NoSQL中的一些操作更快。给定NoSQL数据库的适用性取决于它必须解决的问题。

Cassandra在其节点之间具有对等分布式系统,并且数据分布在集群中的所有节点之间。

  • 集群中的所有节点都扮演相同的角色。 每个节点是独立的,并且同时互连到其他节点。

  • 集群中的每个节点都可以接受读取和写入请求,无论数据实际位于集群中的何处。

  • 当节点关闭时,可以从网络中的其他节点提供读/写请求。

Step2:  CASSANDRA安装:官网地址: https://cassandra.apache.org/

官网文档地址链接: https://cassandra.apache.org/doc/latest/cql/index.html

简单介绍工作原理:

 该图显示了Cassandra如何在集群中的节点之间使用数据复制,以确保没有单点故障的示意图。

注 Cassandra在后台使用Gossip协议,允许节点相互通信并检测集群中的任何故障节点。

Cassandra的组件

Cassandra的关键组件如下:

  • 节点 - 它是存储数据的地方。

  • 数据中心 - 它是相关节点的集合。

  • 集群 - 集群是包含一个或多个数据中心的组件。

  • 提交日志 - 提交日志是Cassandra中的崩溃恢复机制。每个写操作都写入提交日志。

  • Mem- - mem-表是存储器驻留的数据结构。提交日志后,数据将被写入mem表。有时,对于单列族,将有多个mem表。

  • SSTable - 它是一个磁盘文件,当其内容达到阈值时,数据从mem表中刷新。

  • 布隆过滤器 - 这些只是快速,非确定性的算法,用于测试元素是否是集合的成员。它是一种特殊的缓存。 每次查询后访问Bloom过滤器。

Cassandra 查询语言

用户可以使用Cassandra查询语言(CQL)通过其节点访问Cassandra。CQL将数据库(Keyspace)视为表的容器。 程序员使用cqlsh:提示以使用CQL或单独的应用程序语言驱动程序。

客户端针对其读写操作访问任何节点。该节点(协调器)在客户端和保存数据的节点之间播放代理。

写操作

节点的每个写入活动都由写在节点中的提交日志捕获。稍后数据将被捕获并存储在存储器表中。每当内存表满时,数据将写入SStable数据文件。所有写入都会在整个集群中自动分区和复制。Cassandra会定期整合SSTables,丢弃不必要的数据。

读操作

在读操作,Cassandra 从MEM-表得到的值,并检查过滤器绽放找到保存所需数据的相应的SSTable。

猜你喜欢

转载自www.cnblogs.com/qianjinyan/p/9075384.html