首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

诞生于FaceBook的大数据存储

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

让我们先了解一下NoSQL数据库:

NoSQL 数据库

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

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

1、设计简单

2、水平缩放

3、更好地控制可用性

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

NoSQL数据库与关系数据库

下表列出了区分从NoSQL的数据库关系数据库的各点。

除了Cassandra,我们有以下NoSQL数据库是相当受欢迎:

1、Apache的HBase的 - HBase是一个开放源代码,非关系型,分布式数据库,以Google的BigTable为模型,用Java编写。它作为Apache Hadoop项目的一部分开发,在HDFS之上运行,为Hadoop提供类似于BigTable的功能。

2、MongoDB的 - MongoDB是一个跨平台的面向文档的数据库系统,避免使用传统的基于表的关系数据库结构,使用动态模式的类似JSON的文档,使得在某些类型的应用程序中的数据集成更容易和更快。

什么是Apache Cassandra?

Apache Cassandra是一个开源,分布式和分散式/分布式存储系统(数据库),用于管理遍布世界各地的大量结构化数据。它提供高可用性的服务,没有单点故障。

下面列出了Apache Cassandra的一些值得注意的地方:

1、它是可扩展,容错和一致的。

2、它是一个面向列的数据库。

3、它的分布设计基于Amazon的Dynamo及其在Google的Bigtable上的数据模型。

4、创建在Facebook,它与关系数据库管理系统有很大的不同。

5、Cassandra实现了一个没有单点故障的Dynamo风格的复制模型,但增加了一个更强大的“列族”数据模型。

6、Cassandra被一些最大的公司使用,如Facebook,Twitter,Cisco,Rackspace,ebay,Netflix等。

Cassandra的特点

Cassandra因其卓越的技术特性而变得如此受欢迎。下面给出了Cassandra的一些特性:

1、弹性可扩展性 - Cassandra是高度可扩展的; 它允许添加更多的硬件以适应更多的客户和更多的数据根据要求。

2、始终基于架构 - Cassandra没有单点故障,它可以连续用于不能承担故障的关键业务应用程序。

3、快速线性性能 - Cassandra是线性可扩展性的,即它为你增加集群中的节点数量增加你的吞吐量。因此,保持一个快速的响应时间。

4、灵活的数据存储 - Cassandra适应所有可能的数据格式,包括:结构化,半结构化和非结构化。它可以根据您的需要动态地适应变化的数据结构。

5、便捷的数据分发 - Cassandra通过在多个数据中心之间复制数据,可以灵活地在需要时分发数据。

6、事务支持 - Cassandra支持属性,如原子性,一致性,隔离和持久性(ACID)。

7、快速写入 - Cassandra被设计为在廉价的商品硬件上运行。 它执行快速写入,并可以存储数百TB的数据,而不牺牲读取效率。

Cassandra的组件

Cassandra的关键组件如下:

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

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

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

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

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

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

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

Cassandra 数据模型

键空间 (Keyspace)

键空间是Cassandra中数据的最外层容器。Cassandra中的一个键空间的基本属性是

1、复制因子 - 它是集群中将接收相同数据副本的计算机数。

2、副本放置策略 - 它只是把副本放在戒指中的策略。我们有简单策略(机架感知策略),旧网络拓扑策略(机架感知策略)和网络拓扑策略(数据中心共享策略)等策略。

3、列族 - 键空间是一个或多个列族的列表的容器。列族又是一个行集合的容器。每行包含有序列。列族表示数据的结构。每个键空间至少有一个,通常是许多列族。

创建键空间的语法如下:

CREATE KEYSPACE Keyspace name

WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};

下图显示了键空间的示意图。

列族

列族是有序收集行的容器。每一行又是一个有序的列集合。下表列出了区分列系列和关系数据库表的要点。

1、keys_cached - 它表示每个SSTable保持缓存的位置数。

2、rows_cached - 它表示其整个内容将在内存中缓存的行数。

3、preload_row_cache -它指定是否要预先填充行缓存。

注 - 与不是固定列族的模式的关系表不同,Cassandra不强制单个行拥有所有列。

下图显示了Cassandra列族的示例。

列:

超级列

超级列是一个特殊列,因此,它也是一个键值对。但是超级列存储了子列的地图。

通常列族被存储在磁盘上的单个文件中。因此,为了优化性能,重要的是保持您可能在同一列族中一起查询的列,并且超级列在此可以有所帮助。

下面是超级列的结构

Cassandra 和 RDBMS 的数据模型

下表列出了区分Cassandra的数据模型和RDBMS的数据模型的要点。

Cassandra Cqlsh

默认情况下,Cassandra提供一个提示Cassandra查询语言shell(cqlsh),允许用户与它通信。使用此shell,您可以执行Cassandra查询语言(CQL)。

使用cqlsh,你可以

1、定义模式

2、插入数据

3、执行查询

启动cqlsh

使用命令cqlsh启动cqlsh,如下所示。它提供Cassandra cqlsh提示作为输出。

[hadoop@linux bin]$ cqlsh

Connected to Test Cluster at 127.0.0.1:9042.

[cqlsh 5.0.1 | Cassandra 2.1.2 | CQL spec 3.2.0 | Native protocol v3]

Use HELP for help.

cqlsh>

Cqlsh常用命令

Cqlsh有几个命令,允许用户与它进行交互。命令如下所示。

CQL数据定义命令

1、CREATE KEYSPACE -在Cassandra中创建KeySpace。

2、USE -连接到已创建的KeySpace。

3、ALTER KEYSPACE -更改KeySpace的属性。

4、DROP KEYSPACE -删除KeySpace。

5、CREATE TABLE -在KeySpace中创建表。

6、ALTER TABLE -修改表的列属性。

7、DROP TABLE -删除表。

8、TRUNCATE -从表中删除所有数据。

9、CREATE INDEX -在表的单个列上定义新索引。

10、DROP INDEX -删除命名索引。

CQL数据操作指令

1、INSERT -在表中添加行的列。

2、UPDATE -更新行的列。

3、DELETE -从表中删除数据。

4、BATCH -一次执行多个DML语句。

CQL字句

1、SELECT -此子句从表中读取数据。

2、WHERE -where子句与select一起使用以读取特定数据。

3、ORDERBY -orderby子句与select一起使用,以特定顺序读取特定数据。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180207B113T700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券