文档章节

聊聊Cassandra(二)Cassandra3.9特性介绍

你我他有个梦
 你我他有个梦
发布于 2017/02/23 15:39
字数 1627
阅读 216
收藏 1

1.1     Cassandra简介

        Apache Cassandra(社区内一般简称为C*)是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式架构于一身。Facebook于2008将 Cassandra 开源,09年成为Apache旗下的项目,10年成为正式的基金项目,目前主要由专门进行Cassandra商业化运作的DataStax公司来开发,也有一些来自其他公司或独立的开发者。此后,由于Cassandra良好的可扩展性和性能,被 Apple, Comcast,Instagram, Spotify, eBay Rackspace, Netflix等知名网站所采用,成为了一种流行的分布式结构化数据存储方案。Cassandra优先保证AP(CAP定理),即可用性和分区容错性。

        在数据库排行榜“DB-Engines Ranking”中,Cassandra排在第七位,在非关系型数据库中排名第二(仅次于MongoDB)。

        但是目前在国内支持度并不是很好(相较于MongoDB),没有一个很好的中文社区,文档资料也很少,即使是官方的文档也是不全的。但是在国外的应用如火如荼,在国内Cassandra的热度远远低于MongoDB和HBase。原因可能是MongoDB公司进入中国市场并建立了中文组,而HBase在阿里的大范围使用下并公开一些资料火起来。目前Cassandra与Spark已经合作,Spark+Cassandra可能也会被应用起来。

1.2     Cassandra特性

1.2.1      经过验证

超过1500家公司用cassandra,有大的、活跃的数据集。

1.2.2      容错性

数据自动复制到多个节点的容错。支持多个跨数据中心的复制。失败的节点可以被替换,这样没有停机时间。

1.2.3      高性能

由于其基础架构的选择(点对点分布式系统,集群中各节点平等),在一些基准测试和实际应用中使得cassandra的性能要优于一些流行的NoSQL方案。

1.2.4      分散性

没有单一的故障点,没有网络瓶颈,集群中的每个节点都相同。

1.2.5      可扩展性

一些最大的生产部署如苹果公司,超过75000以上的节点存储超过10PB级数据,Netflix公司(2500节点,420TB数据,每天超过1W亿次请求),中文搜索引擎宜搜(270节点,400TB,每天超过8亿次请求)和易趣网(100+节点,250TB数据)。

1.2.6      持久化

不能丢失数据,cassandra是一个非常合适的应用程序,即便整个数据中心down掉。

1.2.7      维护一致性

选择为每个更新选择同步或者异步之间的复制。高可用的异步操作进行了优化,像提示移交(当节点掉线,或者各个副本节点中网络闪断的时候,此时数据的保存,等节点间恢复正常以后,副本数据就可以一致了)、读取修复(客户端读取某个对象的时候,触发对该对象的一致性检查,不一致的话进行一致性的修复)和分布式删除(本地并不立即删除一个数据对象,而是给该对象标记一个hint,定期对标记了hint的对象进行垃圾回收。在垃圾回收之前,hint一直存在,这使得其他节点可以有机会由其他几个一致性保证机制得到这个hint)

1.2.8      灵活性

读写吞吐量都随着新机器的增加而线性增加,不用停机或者中断应用程序。

1.2.9      专业支持

Cassandra也有一些第三方的机制提供技术支持服务,这些机构基本上都有一些Cassandra的核心开发者在其中,以保证其对Cassandra能有足够的了解。

1.3     Cassandra 数据类型

Cassandra在CQL语言层面支持多种数据类型。

CQL类型

对应Java类型

描述

ascii

String

ascii字符串

bigint

long

64位整数

blob

ByteBuffer/byte[]

二进制数组

boolean

boolean

布尔

counter

long

计数器,支持原子性的增减,不支持直接赋值

decimal

BigDecimal

高精度小数

double

double

64位浮点数

float

float

32位浮点数

inet

InetAddress

ipv4或ipv6协议的ip地址

int

int

32位整数

list

List

有序的列表

map

Map

键值对

set

Set

集合

text

String

utf-8编码的字符串

timestamp

Date

日期

uuid

UUID

UUID类型

timeuuid

UUID

时间相关的UUID

varchar

string

text的别名

varint

BigInteger

高精度整型

 

1.4     与类似开源系统的比较

HBase是Apache Hadoop项目的一个子项目,是Google BigTable的一个克隆,与Cassandra一样,它们都使用了BigTable的列族式的数据模型,但是:

l  Cassandra只有一种节点,而HBase有多种不同角色,除了处理读写请求的region server之外,其架构在一套完整的HDFS分布式文件系统之上,并需要ZooKeeper来同步集群状态,部署上Cassandra更简单。

l  Cassandra的数据一致性策略是可配置的,可选择是强一致性还是性能更高的最终一致性;而HBase总是强一致性的。

l  Cassandra通过一致性哈希来决定一行数据存储在哪些节点,靠概率上的平均来实现负载均衡;而HBase每段数据(region)只有一个节点负责处理,由master来动态分配一个region是否大到需要拆分成两个,同时会将过热的节点上的一些region动态的分配给负载较低的节点,因此实现动态的负载均衡。

l  因为每个region同时只能有一个节点处理,一旦这个节点无响应,在系统将这个节点的所有region转移到其他节点之前这些数据便无法读写,加上master也只有一个节点,备用master的恢复也需要时间,因此HBase在一定程度上有单点问题;而Cassandra无单点问题。

l  Cassandra的读写性能优于HBase。

l  但是!HBase的开发者众多并且都是顶尖高手!在FaceBook的两大阵营(Cassandra Team和HBase Team)较量中,HBase胜出。而且HBase和Hadoop是兄弟,被广泛使用。

© 著作权归作者所有

你我他有个梦

你我他有个梦

粉丝 97
博文 130
码字总数 109764
作品 0
通州
程序员
私信 提问
Cassandra 2.0.2 发布,分布式K/V存储系统

Cassandra 2.0.2 发布了,该版本引入的快速读保护特性允许在节点失败时不会丢失任何一个请求。关于该特性的详细介绍请看这里。 Apache Cassandra是一套开源分布式Key-Value存储系统。它最初由...

oschina
2013/10/12
1K
0
追根溯源:MariaDB和MySQL比较分析

  【IT168 评论】MariaDB是MySQL源代码的一个分支,在意识到Oracle会对MySQL许可做什么后分离了出来(MySQL先后被Sun、Oracle收购)。这些担忧是有依据的,我会在本文的后面讲到。除了作为一...

开源中国
2013/12/30
0
0
Apache Cassandra 简介

Apache Cassandra 是一个开源的、分布式、无中心、弹性可扩展、高可用、容错、一致性可调、面向行的数据库,它基于 Amazon Dynamo 的分布式设计和 Google Bigtable 的数据模型,由 Facebook...

明惠
04/03
0
0
聊聊Cassandra的FailureDetector

序 本文主要研究一下Cassandra的FailureDetector IFailureDetector cassandra-3.11.4/src/java/org/apache/cassandra/gms/IFailureDetector.java IFailureDetector接口定义了isAlive、inter......

go4it
05/01
9
0
几个重量级的NoSQL数据库和管理工具(转)

随着互联网中web 2.0网站的兴起,传统的关系数据库在应付web 2.0网站,特别是超大规模和高并发的SNS类型的web 2.0纯动态网站,已经显得力不从心,暴露了很多难以克服的问题,例如: High per...

Picasso
2011/09/12
564
1

没有更多内容

加载失败,请刷新页面

加载更多

vue v-html动态生成的html怎么加样式

1. v-html加样式 在vue开发中碰到需要动态生成html,并且需要有样式,这时候发现像往常一样写样式的时候不起作用,网上搜了一下,发现通过 v-html 创建的 DOM 内容不受作用域内的样式影响,但...

litCabbage
40分钟前
4
0
Appium+python自动化(三十三)- 测试环境和本地环境傻傻滴分不清楚-Remote(超详解)

  简介   在前边所有涉及启动app的时候有这样一行代码driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps),很多小伙伴们和同学们不知道这个ip和端口哪里来的,我...

开源仔
48分钟前
2
0
各种放大器电路之功率放大器的分析

  供给负载一定输出功率的放大器叫做功率放大器。它是收音机、扩音机或其他电子设备的末级,它推动扬声器发出声音,使电动机转动,使记录仪表动作等。功率放大器主要是考虑如何获得最大的输...

xyxyty
48分钟前
3
0
MySQL8.0.17 - Multi-Valued Indexes 简述

本文主要简单介绍下8.0.17新引入的功能multi-valued index, 顾名思义,索引上对于同一个Primary key, 可以建立多个二级索引项,实际上已经对array类型的基础功能做了支持 (感觉官方未来一定...

阿里云官方博客
今天
13
0
make4.1降级 make-3.81、2错误

在编译 make-3.82 的时候出现如下错误提示 glob/glob.c:xxx: undefined reference to `__alloca'` 修改 /glob/glob.c // #if !defined __alloca && !defined __GNU_LIBRARY__ # ifdef __GNUC......

Domineering
今天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部