cassandra中的ACID,与RDBMS中的事务有何不同?
Cassandra中的ACID标准
Apache Cassandra不遵循具有回滚或锁定机制的ACID(原子性,一致性,隔离性,持久性)事务,而是提供原子,隔离和持久的事务,并具有最终和可调的一致性,使用户可以决定他们希望每个交易的一致性有多强或最终。
作为非关系数据库,Cassandra 不支持联接或外键,因此不提供ACID的一致性。例如,将钱从帐户A转移到B时,帐户中的总数不变。Cassandra在行级别支持原子性和隔离性,但是为了获得高可用性和快速的写入性能而交易事务性隔离性和原子性。
原子性
在Cassandra数据库中,写操作在分区级别上是原子的,这意味着在同一分区中插入或更新两行或更多行被视为一个写操作。在分区级别,删除操作也是原子的。
例如,如果使用复制因子为3的QUORUM写入一致性级别,则数据库会将写入复制到集群中的所有节点,并等待来自两个节点的确认。如果写入在一个节点上失败,但在另一个节点上成功,则Cassandra报告在该节点上复制该写入失败,但是在另一节点上成功复制的写入不会自动回滚。
Cassandra使用客户端时间戳确定对列的最新更新。当请求数据时,最新的时间戳总是胜出,因此,如果多个客户端会话同时更新一行中的同一列,则最新的更新将会被看到。
注意:所有写入的时间戳均为UTC(世界标准时间)。
隔离性
Cassandra的写入和删除操作以完全的行级隔离执行。这意味着对单个节点上单个分区内的行的写操作仅对执行该操作的客户端可见。操作仅限于此范围,直到完成为止。批处理操作中属于给定分区键的所有更新都具有相同的限制。但是,如果批处理操作包含对多个分区的更改,则不会隔离该批处理操作。
持久性
在Cassandra数据库中的写入是持久的。在确认成功之前,所有对副本节点的写操作都会记录在内存和磁盘上的提交日志中。如果在将内存表刷新到磁盘之前发生崩溃或服务器故障,则会在重新启动时重播提交日志,以恢复丢失的所有写操作。除了本地持久性(将数据立即写入磁盘)之外,在其他节点上复制数据也增强了持久性。
您可以管理本地的耐用性,以满足您的使用需求的一致性commitlog_sync在 cassandra.yaml文件。将选项设置为 周期或批处理。
参考
https://docs.datastax.com/en/ddac/doc/datastax_enterprise/dbInternals/dbIntTransactionsDiffer.html
cassandra中的ACID,与RDBMS中的事务有何不同?的更多相关文章
- Redis 中的事务分析,Redis 中的事务可以满足ACID属性吗?
Redis 中的事务 什么是事务 1.原子性(Atomicity) 2.一致性(Consistency) 3.隔离性(Isolation) 4.持久性(Durability) 分析下 Redis 中的 ...
- 地图四叉树一般用在GIS中,在游戏寻路中2D游戏中一般用2维数组就够了
地图四叉树一般用在GIS中,在游戏寻路中2D游戏中一般用2维数组就够了 四叉树对于区域查询,效率比较高. 原理图
- sqlserver 中数据导入到mysql中的方法以及注意事项
数据导入从sql server 到mysql (将数据以文本格式从sqlserver中导出,注意编码格式,再将文本文件导入mysql中): 1.若从slqserver中导出的表中不包含中文采用: bc ...
- 在Myeclipse中提交代码到GitHub中
这需要借助插件Egit,首先就是先下载该插件了,可以再eclipse中下载,也可以在外面下载,下载就不说了.下载地址git://github.com/houyongchao/plugin-Egit.g ...
- SpringMVC 实现POI读取Excle文件中数据导入数据库(上传)、导出数据库中数据到Excle文件中(下载)
读取Excale表返回一个集合: package com.shiliu.game.utils; import java.io.File; import java.io.FileInputStream; ...
- ASP.NET MVC搭建项目后台UI框架—8、将View中选择的数据行中的部分数据传入到Controller中
目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...
- 【转】Java中try catch finally语句中含有return语句的执行情况(总结版)
Java中try catch finally语句中含有return语句的执行情况(总结版) 有一点可以肯定,finally块中的内容会先于try中的return语句执行,如果finall语句块中也有r ...
- JVM中,对象在内存中的布局
在hotSpot虚拟机中,对象在内存中的布局可以分成对象头.实例数据.对齐填充三部分. 对象头:主要包括: 1.对象自身的运行行元数据,比如哈希码.GC分代年龄.锁状态标志等,这部分长度在32位虚拟机 ...
- 041. asp.net中内容页访问母版页中的控件
母版页运行机制: 用户通过输入内容也的URL来请求某个页面, 获取该页面后, 读取@Page指令, 如果该指令引用了一个母版页, 则也读取该母版页, 如果也是第一次请求这两个页面, 则母版页和被请求的 ...
随机推荐
- data-属性的作用
data-用于存储页面或应用程序的私有自定义数据,赋予我们在所有HTML元素上嵌入自定义data属性的能力,存储的数据能被页面的JS利用,以创建更好的用户体验. <div id="bo ...
- Java 对象序列化机制详解
对象序列化的目标:将对象保存到磁盘中,或允许在网络中直接传输对象. 对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久的保存在磁盘上,通过网络将这种二进制流传 ...
- POJ 2488 深搜dfs、
题意:模拟国际象棋中马的走棋方式,其实和中国象棋的马走的方式其实是一样的,马可以从给定的方格棋盘中任意点开始,问是否能遍历全部格子,能的话输出字典序最小的走棋方式,否则输出impossible 思路: ...
- HTML DOM clearInterval() 方法
定义和用法 clearInterval() 方法可取消由 setInterval() 设置的 timeout. clearInterval() 方法的参数必须是由 setInterval() 返回的 ...
- SpringBoot+Thyemleaf开发环境正常,打包jar发到服务器就报错Template might not exist or might not be accessible
网上查看了各种解决的思路,总结如下: 1. 在controller层请求处理完了返回时,没有使用@RestController或@ResponseBody而返回了非json格式 这种情况下返回的数据t ...
- H3C OSPF协议区域LSA发布
- 微信小程序之在线试题(1)
最近在做一套公司的市场化培训项目,涉及到手机端在线答题的设计,首先摒弃app的模式,那就只剩下微信公众号和小程序,而公众号是可以关联小程序,所以我们只需要做好一套小程序. 因为篇幅问题,下面只讲解在线 ...
- ZR10.1青岛集训三地联考
ZR10.1青岛集训三地联考 谢谢dijk和smy A 题目大意: 已知斐波那契数列\(f\) 设 \[ F_i = \sum_{i = 0}^nf_if_{n - i} \] 求 \[ \sum_{ ...
- C# 已知点和向量,求距离的点
已知一个点 P 和向量 v ,求在这个点P按照向量 v 运行距离 d 的点 B . 已经知道了一个点 P 和他运动方向 v ,就可以通过这个求出距离点 P 为 d 的点 B. 首先把 v 规范化,规范 ...
- JavaSE基础知识---常用对象API之String类
一.String类 Java中用String类对字符串进行了对象的封装,这样的好处在于对象封装后可以定义N多属性和行为,就可以对字符串这种常见的数据进行方便的操作. 格式:(1)String s1 = ...