欢迎投稿

今日深度:

Cassandra 简介(一),cassandra简介

Cassandra 简介(一),cassandra简介


作者:朴松梅 译自 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而引起的性能低下。

Shortcomings

如上述特征,Cassandra似乎是诸多开发者蒙昧以求的数据库,但也不尽然。

Cassandra目前仍是进行中的开源项目,版本尚未到1.0,与类似于MySQL的关系数据库相比本身有很多不足之处。如果用Cassandra管理数据,开发者会对MySQL的管理工具非常想念。虽然Cassandra在迅速地发展,但尚未达到商用化的火候。目前使用Cassandra的企业也是将其用于次要的service或是back-end infrastructure的情况居多。

 

Cassandra集优缺点于一身,但无可厚非的是,它依然是NoSQL数据库中,拥有诸多功能于一身的,一个非常有前景的open source

 

本次对Cassandra进行简单的介绍,在下一节继续对 CassandraKeyspace (schema),Column Family(table)等结构以及上述的存储机制进行讨论。

 

 

 

Reference

 

[1] http://www.facebook.com/note.php?note_id=24413138919
[2] http://nosql.mypopescu.com/post/407159447/cassandra-twitter-an-interview-with-ryan-king
[3] http://about.digg.com/node/564
[4] http://blog.sematext.com/2010/02/09/lucandra-a-cassandra-based-lucene-backend/
[5] Fay Chang, Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A. Wallach, Mike Burrows, Tushar Chandra, Andrew Fikes, and Robert E. Gruber, “Bigtable : A Distributed Storage System for Structured Data”, OSDI'06: Seventh Symposium on Operating System Design and Implementation, Seattle, WA, November, 2006.
[6] Giuseppe DeCandia, Deniz Hastorun, Madan Jampani, Gunavardhan Kakulapati, Avinash Lakshman, Alex Pilchin, Swami Sivasubramanian, Peter Vosshall and Werner Vogels, “Dynamo: Amazon's Highly Available Key-Value Store”, in the Proceedings of the 21st ACM Symposium on Operating Systems Principles, Stevenson, WA, October 2007.
[7] Avinash Lakshman, Prashant Malik, “Cassandra – Adecentralized Structured Storage System”, http://www.cs.cornell.edu/projects/ladis2009/papers/lakshman-ladis2009.pdf
[8] http://wiki.apache.org/cassandra/DataModel
[9] http://arin.me/blog/wtf-is-a-supercolumn-cassandra-data-model
[10] http://www.sodeso.nl/?p=108
[11] http://www.sodeso.nl/?p=207
[12] http://github.com/rantav/hector
[13] http://github.com/s7/scale7-pelops
[14] http://wiki.apache.org/cassandra/ThriftExamples

 

 

 

www.htsjk.Com true http://www.htsjk.com/cassandra/32228.html NewsArticle Cassandra 简介(一),cassandra简介 作者:朴松梅 译自 Platform NHN       Cassandra Cassandra 是 NoSQL 世界中的佼佼者。 Voldemort, MongoDB, TokyoCabinet/Tyrant 等诸多 NoSQL 产品中,为何 Cassandra 能独占鳌...
相关文章
    暂无相关文章
评论暂时关闭