现在的位置: 首页 > 综合 > 正文

Cassandra 简介(一)

2013年12月01日 ⁄ 综合 ⁄ 共 1744字 ⁄ 字号 评论关闭

作者:朴松梅 译自 Platform NHN

 

 

 

Cassandra

CassandraNoSQL世界中的佼佼者。Voldemort, MongoDB, TokyoCabinet/Tyrant等诸多NoSQL产品中,为何Cassandra能独占鳌头?且听分解。

 

Cassandra是由Facebook团队开发出来的分布式NoSQL数据库系统。Facebook2008年将Cassandra开源,此后,由于Cassandra良好的可扩展性,被Digg, Twitter等知名的web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。

 

特征

Cassandra聚集googleBigTableamazonDynamo于一身的数据库。具体而言,采用了BigTableColumn-oriented module, memTable以及SSTable方式的写操作特征,以及Dynamo的高可用性、高速及一致性之间的trade off调节功能。

Scalability

ScalabilityCassandra的最大特点。增加或去除节点是一个非常便捷的过程。在新增节点并配置完之后启动Cassandra即可。Cassandra一旦检测到新的节点,便会自动Consistent hash,均匀分配key的个数。

Fault-Tolerant

Cassandra的另一特点是无single point of failue。因此不会发生因为某一节点的故障而导致整个系统崩溃。

即使几个节点一起发生了故障,只要不是某一数据的所有Replica停止运行就不会影响read,至于write,不受Replica的影响而正常工作。

Consistency-Partition tolerance之间的均衡

大部分NoSQL数据库采用了强化AvailabilityPartition Tolerance并弱化了Consistency的方式,而Cassandra通过设定Read replica count, write replica count的方式而调节ConsistencyAvailability。根据设定可强化Consistency亦或Availability

Column-oriented Data Model

Cassandra采用Column-oriented Data Moduel.

 

 

 

简言之,RDBMS采用基于row的存储,而Column-oriented Database采用基于Column的存储。因此适于读取关联数据。

Columnname, value, timestamp域。除timestamp,将Column视为name/value形式。

下面举了个例子KeySpace

 

韩梅梅

身高

160

体重

100

 

李雷

身高

176

体重

120

学历

硕士

家庭成员

爸爸

妈妈

爷爷

奶奶

 

Key是‘韩梅梅’,‘李雷’。‘韩梅梅’key所对应的Super-Column包含‘身高’、‘体重’,‘李雷’key所对应的Super-Column包含‘身高’,‘体重’,‘学历’,‘家庭成员’。Super-Column是一个key对应多个Column情况。

High Performance

Write

Cassandrawrite要比read快得多。它采用的方法是,并非根据key的所在的文件当中的位置存储row,而是将数据AppendSSTable(Sorted String Table)中,而后将整个SSTable存储到文件中。省去了搜索过程,因此比一般的关系数据库的写操作会快很多。

Read

write操作而生成的SSTable一旦大小到了阈值,会根据key进行整理之后直接写到硬盘。Read操作也与关系数据库不同,通过SSTablebloom filter(寻找数据所属的KeySpace)查询数据是否存在并用索引读取相关数据。

目前为止,尚无read/write性能测试。而与关系数据库(CUBRID, MYSQL, Oracle)的性能比较并无意义。因为两种数据库的目的、用途等本身就不同。

Lockless

Read/Write操作均lockless,因而并不会两个线程竞争一个数据的情况发生,也不会发生因为concurrency issue而引起的性能低下。

抱歉!评论已关闭.