如何进行卡桑德拉模型以及架构的分析

  介绍

如何进行卡桑德拉模型以及架构的分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

, NoSql的世界纷繁复杂,出去掉复述等内存型的数据库之外,在整个NoSql领域比较认可的是,卡桑德拉,Hbase,以及MongoDB。

对于Mongo,目前本ID的系列博文已经有部分,而Hbase有关的部分还未补充,待补。

高可靠性

,,,,协议

1: Cassandra采用了八卦作为集群中节点的通信协议,该协议整个节点都处于同等的地位,没有主从

之分,这就使得任一节点的推出都不会导致整个集群的失效。

2:卡桑德拉和Hbase在底层的架构设计都是借鉴了谷歌大桌子的思想来构建自己的系统,而

卡桑德拉的创新就是将原本用在文件共享架构的P2P(点对点)引入到了NoSql

P2P的一大特点就是去中心化,集群之中的所有节点都有着同等的地位,这极大的避免了单个节点退出,

而使整个集群不能工作的可能,与之形成对比的是Hbase采用了主/从的方式,这就存在了单点失效的可能。


1.2:高扩展性

随着时间的推移,集群中原有的规模不足以存储新增加的数据,目前NoSql的数据都已经实现了

级联的扩展,非常容易实现添加新的节点到已有集群,操作简单。

1.3:最终一致性

,,,,,,,,在这里再次强调一下最终一致性:Cassandra采用了最终的一致性:

,,,,,,,,,最终的一致性是指分布式系统之中的一个数据对象的多个副本尽管在短时间内可能出现不一致,但是经过

一段时间以后,这些副本最终会达到一致。


如何进行卡桑德拉模型以及架构的分析

卡桑德拉是优先保证了,也就是我们经常说到的可用性,和分区容错性。

通常而言,大部分的NoSql键值的模式都是写入非常的高效,毕竟是为了大量数据的插入所涉及,

可是在数据的读取方面那就依据不同的情况而不同。

1:如果是单个读取指定了的钥匙,那就回很快的返回结果。- - -》指定关键查询。

2,:,如果是范围查询,由于查询的目标可能存储在多个节点之上,这就需要要对多个节点

,,,,来进行查询,速度会比较慢。

3:全表扫。毫无疑问,全表扫描数据,会非常的低效。

数据模型

,,,,由于卡桑德拉采用了类似与BigTable的数据结构组织,卡桑德拉和Hbase比较类似,所以卡桑德拉和Hbase相比也存在着许多相同的概念。

,,,,,,,,

,,,,,,,,,,,,,,,,如果抽象来看卡桑德拉。整个卡桑德拉都是一个五维的空间

,,,,,

,,,,,,1:column ,,,,,,,

,,,,,,,,,,,,,,,,,,,,专栏:列,在卡桑德拉之中是最小的一个数据单元,它包含了一个三元的数据类型:

<>之前,,,1:,{//才能,这是一个列   ,,2:,,,,,名字:,“美丽新世界“,   ,,3:,,,,,的值:,“gpcuster@gmali.com",,   ,,4:,,,,,时间戳:123456789   ,,,5:}
 <代码> upercolumn:超级列

,,,,,,,,,,,,我们可以将SuperColumn想象成列的数组,他包含一个名字。以及一系列的列

,,,,,,,,,,,,,将一个SuperColumn用JSON的形式表示如下

<>之前,,,,,,,,,{,,//,这是一个SuperColumn   ,,2:,,,,,名字:,“美丽的新世界“,   ,,3:,,,,,//,包含一系列的列   ,,4:,,,,,的值:,{   ,,5:,,,,,,,,,街:,{名称:,“street",,值:,“1234年,x  street",,时间戳:,123456789},   ,,6:,,,,,,,,,城市:,{名称:,“city",,值:,“san  francisco",,时间戳:,123456789},   ,,7:,,,,,,,,,邮政编码:,{名称:,“zip",,值:,“94107,,,时间戳:,123456789},   ,,8:,,,,,}   ,,,9:}
 <代码> 

,,,,,,,,,,,,列和SuperColumns都是一个键值,一个名字和一个字符串的组合,最大的不同在于列的值是一个字符串,而SuperColumn的价值是一个Cloumns的地图

1:列族

,,,,,,,,,,,,,,,,,,,,列族是一个包含了一个许多行(行)的结构,你可以将它想象成RDBMS中的表,每一个行都包含有客户端提供的关键和该键关联的的一系列的列,我们可以看到如下的结构:

<>之前,,,1:,UserProfile =,{,//这是一个ColumnFamily   ,,2:,,,,,phatduckk:,{,,//,这是对应ColumnFamily的关键   ,,3:,,,,,,,,,//,这是关键下对应的列   ,,4:,,,,,,,,,用户名:,“gpcuster"   ,,5:,,,,,,,,,电子邮件:,“gpcuster@gmail.com",,   ,,6:,,,,,,,,,电话:,“6666”;   ,,7:,,,,,},,//,第一个行结束   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

如何进行卡桑德拉模型以及架构的分析