2016-08-23 20:39:00
来 源
中存储网
Cassandra
1. NoSQL运动与Cassandra系统 所谓键值存储就是用一个键来表达事物的属性,而用一个值来表达这个特征(属性)的取值。键值数据广泛存在于社交网络、工业大数据等应用当中。键值存储的代表是Facebook基于谷歌和亚马逊技术开发的Cassandra系统。 键值存储是一

1.

NoSQL运动与Cassandra系统

所谓键值存储就是用一个键来表达事物的属性,而用一个值来表达这个特征(属性)的取值。键值数据广泛存在于社交网络、工业大数据等应用当中。键值存储的代表是Facebook基于谷歌和亚马逊技术开发的Cassandra系统。

键值存储是一类非常重要的大数据存储系统,主要管理模式动态变化的、弱结构化数据键值存储系统,起源于2010年前后的NoSQL运动。

1.1

NoSQL运动

NoSQL一词最早出现于1998年是意大利学者Carlo Strozzi开发的一个轻量开源,但不支持SQL语言的关系数据库。

2009年6月,在哥伦比亚广播集团旗下的互动媒体公司世界上最大的社会音乐平台Lastfm的技术总监Jon Oskarsson组织了首次NoSQL的研讨会,这次会议上Rackspace的Eric Evans再次提出了NoSQL的概念,这次只有一天时间的技术分享会成为引爆NoSQL运动的标志性事件。

如果说1998年的NoSQL项目仅仅是否定了SQL语言,而本次NoSQL运动的发展则围绕着三个否定,即否定关系模型、否定ACID事务、否定SQL语言,其核心是否定关系模型。因此,对NoSQL最普遍的解释是"非关系型的",强调Key-Value 存储和文档数据库的优点,而不是单纯的反对RDBMS。

大数据促进了NoSQL的迅速繁荣,出现了大量的技术多样的NoSQL系统,这些NoSQL系统主要可以分为三大类:即文档系统(MongoDB)、键值系统(Cassandra、Hbase)和图系统(Neo4J)。

1.2

Cassandra NoSQL数据库简介

本文主要介绍键值存储的代表Cassandra系统,Apache Cassandra是一套2008年开源的分布式NoSQL数据库系统,由就职于脸谱公司的两位工程师开发。

Cassandra的技术主要来源于两个方法,一个是谷歌的Bigtable,也就是我们常说的大表,作为Cassandra的数据模型;另一个是Amazon中的DynamoDB,主要借鉴了它的P2P架构。

Cassandra开源后围绕这个系统的推广服务与增值开发。2010年Jonathan Ellis和Matt Pfeil,创立了DATASTAX公司,根据Cassandra2015年7月的官方数据,目前Cassandra拥有包括苹果、ebay、 Hulu在内的1500家企业用户。它最大的应用在苹果公司,管理了75000个节点,规模为10个TB,Cassandra的技术来源决定了它所拥有的技术特点:即无单点故障、高可用和可配置的灵活的一致性,它适合的应用场合包括时间序列数据 物联网数据、社交媒体数据等等。

2.

Cassandra 数据模型、接口和访问语言

2.1

Cassandra数据模型(逻辑模型)

Cassandra的数据模型借鉴了谷歌Bigtable的设计,包括四个概念:

(1)键空间即KeySpace相当于关系数据模型当中的数据库,是最上层的命名空间;

(2)列族ColumnFamily,相当于关系数据库中的表,但它比表更稀疏;

(3)行Row表示一个数据对象,存在于ColumnFamily当中;

(4)列Column相当于属性,是存储的基本单元

Cassandra的主要概念之间的包含关系如图所示,其中:

Cassandra简介及关键技术详解

(1)KeySpace中的settings,主要设置副本数量Hash策略等;

(2)ColumnFamily中的settings主要设置key缓存、读修复的概率、列的排序方式等属性;

(3)Column是Cassandra存储的基本单元,它是一个三元组(name, value,timestamp)。一般情况下它不支持基于列值的查询。而在1.1版以后,Cassandra对它的Column扩展了一个新的属性即TTL(存活时间)。

Cassandra中的行由很多列组成,但是注意同一个列族内不同行的属性数量可以不同(第1行有三个属性,第2行有5个属性),转化为关系表时会出现空值。

Cassandra简介及关键技术详解

列族由行组成。图中这个列族包括两行数据,第一行包括三列,第二行包括四列。

列族中的列就像儿童的玩具拼插积木,用户可以通过制定新的三元组名字来动态增加。另外注意在一个列族中的某一行它的值是根据键值来排序的,这个特性很好地支持了后面讲到的Cassandra数据在不同节点上的Hash分布。  

键空间是列族的容器,一般情况下一个应用程序只有一个键空间,在这个键空间中可以包含多个列族。

从前面的介绍可以知道,Cassandra系统中键空间、列族、行和列与关系模型中的数据库、表、行、列具有较好的对应关系。但是Cassandra模型中的列可以动态增加,因此更适合弱结构化数据。也就是说,这些数据的模式更加灵活,另外关系模型当中的表就是一个规整的二维数组,而Cassandra系统当中的列族,本质上是一个嵌套的键值对的集合。

Cassandra nosql数据库权威指南

2.2

Cassandra接口和CQL语言  

作为NoSQL运动的代表,Cassandra最早为用户提供了是一个Thrift框架的API,它包括读操作、写操作和其它操作三个部分。这要求用户对编程语言具有较好的知识基础。

未完,全文可下载Cassandra简介及关键技术详解

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。