一致性要求每次的请求都能返回最新的数据结果,数据库的每次更新所有的客户端请求都能得到相同的返回结果。分布式数据库Cassandra也是基于CAP理论来实现的,并采用了AP,因此在数据一致性方面做出牺牲。
除单一的一致性概念之外还有一致性度的区分,严格一致性是最强度的模型,该模型要求每次的数据读取必须返回最新写入的值。在分布式系统中实现严格一致性显然是不现实的,实际当中我们忽略系统的异常因素及其网络失败造成的数据无法更新,从而导致系统数据为不可用状态。最终一致性则是要求系统所有的更新最终都应用到所有的副本节点中,在此过程中可以以消耗一定时间为代价,虽然在某个时间节点副本数据是不一致的,但经过一段时间后所有节点数据达到一致性。
Cassandra使用了可调的最终一致性行模型,通过复制因子来调节一致性级别。复制因子越大系统性能就越差,而一致性结果则越强,一致性级别的选择决定数据库需要多少个副本针对读写做出成功相应,才能认作该次请求是成功的。在Cassandra中可以针对读写分别指定一致性级别,一致性级别越高则需要更多的节点做出请求响应,Cassandra的优势主要是快速写入,虽然一致性级别可以同复制因子相同,但强一致性的完成需要消耗系统性能,因此一致性级别的设置通常小于复制因子,即使某些节点是不可用状态更新操作也将返回成功。
Cassandra的事务及ACID
Cassandra只支持ACID中的AID,并不支持一致性属性,而且没有使用典型的回滚及锁机制。
原子性(Atomicity)
Cassandra处理数据更新(插入、更新、删除)操作的原子性是在分区级别,这样可以在相同分区中将数据行的插入、更新、删除归为单一操作。在处理数据的并发修改时是用时间戳来决定更新。Cassandra针对某些成功写入的节点数据不能进行自动回滚,比如当一致性级别为QUORUM,复制因子为3,协调节点需要等待其他两个节点的确认,如果一个节点写入成功另一个节点失败,写入成功节点的数据并不会进行回滚操作。
隔离性(Isolation)
Cassandra写入和更新的隔离性是在行级,意味着在分区中写入只对当前客户端可见直到写入操作完成。任何在相同分区的批量更新操作同样是执行基于行级的隔离,除非在多个分区中进行更新操作。
持久性(Durability)
Cassandra提供强持久的写入操作,在写成功确认前通过将数据记录到内存及提交日志中实现本地持久化。在数据库刷新内存表到磁盘之前,如果服务失败可以通过提交日志获取丢失的数据,Cassandra还通过将写入的数据复制到多个副本的提交日志中来增强数据的持久性。
相关推荐
2.Cassandra ⼀一致性实现 2.1 CAS 2.2 Quorum读写 2.3 不不⼀一致产⽣生原因 2.4 Hinted handoff 2.5 Read repair 2.6 Manual repair 3.Cassandra应⽤用场景 4.总结 视频是mp4格式,配套文档下载地址...
2019云栖大会Cassandra一致性详解-201909.pdf
关于Cassandra数据模型的简单介绍
java导出cassandra数据
解Cassandra数据模型
Cassandra对象数据模型的安装包中文安装说明 以及使用例子一步到位哦
NULL 博文链接:https://cjcrobin.iteye.com/blog/1955984
存储数据(cassandra)
真正的可扩展性 :Cassandra是纯粹意义上的水平扩展。为给集群添加更多容量,可以指向另一台电脑。你不必重启任何进程,改变应用查询,或手动迁移任何数据。 多数据中心识别 :你可以调整你的节点布局来避免某一个...
Cassandra 开源,此后,由于Cassandra良好的可扩展性,被Digg、Twitter等知名Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。 Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。其...
cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战...
主要讲解facebook开发的cassandra的论文。对互联网企业实现key value存储很重要。
Cassandra 的数据rollbock机制
Cassandra 开源,此后,由于Cassandra良好的可扩展性,被Digg、Twitter等知名Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。 Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。其...
本文是Cassandra数据模型设计第一篇(全两篇),该系列文章包含了eBay使用Cassandra数据模型设计的一些实践。其中一些最佳实践我们是通过社区学到的,有些对我们来说也是新知识,还有一些仍然具有争议性,可能在要...
cassandra里有不同的token分配策略,推荐采用默认的RandomPartitioner分区策略。在这个策略下,token是一个0~2的127次方之间的一个整数(这也意味着理论上cassandra可以支持2的127次方个节点)。之所以是2的127次方...
Cassandra是分布式数据库的一种,基于Amazon Dynamo的分布式和GoogleBigTable的数据模型,由Facebook创建。Cassandra是开源的、分布式的、无中心的、弹性可扩展、高可用、容错、一致性可调、面向列的数据库。
易用性:这是一组Grafana仪表板,用于监视Cassandra和Prometheus数据源
集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身Facebook于2008将 Cassandra 开源,此后,由于Cassandra良好的可扩展性,被等知名网站所采纳,成为了一种流行的分布式结构化数据存储方案。...