Cassandra概要介绍

来源:互联网 发布:信息群发软件 编辑:程序博客网 时间:2024/06/05 05:17
1. 前言

随着互联网大规模的Web2.0应用的兴起及云计算需要的大规模分布式服务和分布式存储的发展,传统的关系数据库面临着诸多全新的挑战,特别是在那些超大规模和高并发的SNS类型的应用场景下,使用关系数据库来存储和查询用户动态数据已经显得力不从心,暴露了很多难以克服的问题,例如需要很高的实时插入性能;需要海量的数据存储能力同时还需要非常快的查询检索速度;需要将数据存储无缝扩展到整个群集环境下,并且能够在线扩展等等。在这样的背景下,NoSQL数据库就应运而生了。

CAP,BASE和最终一致性是NoSQL数据库存在的三大基石。

• C: Consistency 一致性

• A: Availability 可用性(指的是快速获取数据)

• P: Tolerance of network Partition 分区容忍性(分布式)

10年前,Eric Brewer教授指出了著名的CAP理论,后来Seth Gilbert 和 Nancy lynch两人证明了CAP理论的正确性。CAP理论告诉我们,一个分布式系统不可能满足一致性,可用性和分区容错性这三个需求,最多只能同时满足两个。

BASE模型反ACID模型,完全不同ACID模型,牺牲高一致性,获得可用性或可靠性: BasicallyAvailable基本可用。支持分区失败(e.g. sharding碎片划分数据库) Soft state软状态状态可以有一段时间不同步,异步。 Eventually consistent最终一致,最终数据是一致的就可以了,而不是时时一致。

2. Cassandra是什么

Cassandra 的名称来源于希腊神话,是特洛伊的一位悲剧性的女先知的名字,因此项目的Logo是一只放光的眼睛。

Cassandra是一个高可靠的大规模分布式存储系统。高度可伸缩的、一致的、分布式的结构化key-value存储方案,集Google BigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身。2007由facebook开发,2009年成为Apache的孵化项目。

Cassandra使用了Google BigTable的数据模型,与面向行的传统的关系型数据库不同,这是一种面向列的数据库,列被组织成为列族(Column Family),在数据库中增加一列非常方便。对于搜索和一般的结构化数据存储,这个结构足够丰富和有效。

Cassandra的系统架构与Dynamo一脉相承,是基于O(1)DHT(分布式哈希表)的完全P2P架构,与传统的基于Sharding的数据库集群相比,Cassandra可以几乎无缝地加入或删除节点,非常适于对于节点规模变化比较快的应用场景。

Cassandra的数据会写入多个节点,来保证数据的可靠性,在一致性、可用性和网络分区耐受能力(CAP)的折衷问题上,Cassandra比较灵活,用户在读取时可以指定要求所有副本一致(高一致性)、读到一个副本即可(高可用性)或是通过选举来确认多数副本一致即可(折衷)。这样,Cassandra可以适用于有节点、网络失效,以及多数据中心的场景。

3. Cassandra特点

总结Cassandra的主要特点如下:

(1) 列表数据结构

在混合模式可以将超级列添加到5维的分布式Key-Value存储系统。

(2) 模式灵活

使用Cassandra,你不必提前解决记录中的字段。你可以在系统运行时随意的添加或移除字段。

(3) 真正的可扩展性

Cassandra是纯粹意义上的水平扩展。为给集群添加更多容量,可以增加动态添加节点即可。你不必重启任何进程,改变应用查询,或手动迁移任何数据。

(4) 多数据中心识别

你可以调整节点布局来避免某一个数据中心起火,一个备用的数据中心将至少有每条记录的完全复制。

(5) 范围查询

如果你不喜欢全部的键值查询,则可以设置键的范围来查询。

(6) 分布式写操作

你以在任何地方任何时间集中读或写任何数据。并且不会有任何单点失败。

4. 与类似系统比较

Hadoop HBase

Hadoop HBase是Apache Hadoop项目的一个子项目,是Google BigTable的一个克隆,与Cassandra一样,它们都使用了BigTable的列族式的数据模型,两者的主要不同在于:

(1) Cassandra只有一种节点,而HBase有多种不同角色,又架构在Hadoop底层平台之上,部署上Cassandra更简单;

(2) Cassandra的数据一致性策略是可配置的;

(3) HBase提供了Cassandra没有的行锁机制,Cassandra要想使用锁需要配合其他系统,如Hadoop Zookeeper;

(4) HBase提供更好的MapReduce并行计算支持,Cassandra在0.6版本也提供了这个功能;

(5) Cassandra的读写性能和可扩展性更好,但不擅长区间扫描。

5. Cassandra系列文章

(1) Cassandra概要介绍: http://dongxicheng.org/nosql/cassandra-intro/

(2) Cassandra部署与安装: http://dongxicheng.org/nosql/cassandra-install/

(3) Cassandra数据模型: http://dongxicheng.org/nosql/cassandra-data-model/

(4) Cassandra中实现SQL操作: http://dongxicheng.org/nosql/cassandra-sql/

(5) Cassandra客户端: http://dongxicheng.org/nosql/cassandra-client/

(6) Cassandra的各种策略: http://dongxicheng.org/nosql/cassandra-strategy/

6. 参考资料

(1) HBase vs Cassandra: 我们迁移系统的原因(译). Dominic Williams. 2010-02-24.

(2) Yahoo! Cloud Serving Benchmark. Brian F. Cooper. 2010-03-31.

(3) http://zh.wikipedia.org/wiki/Cassandra

(4) 颜开:NoSQL数据库笔谈。l

(5) 淘宝,文茂,Cassandra架构与应用

原创文章,转载请注明: 转载自董的博客

本文链接地址: http://dongxicheng.org/nosql/cassandra-intro/

原创粉丝点击