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指令, 如果该指令引用了一个母版页, 则也读取该母版页, 如果也是第一次请求这两个页面, 则母版页和被请求的 ...
随机推荐
- 2018-2-13-win10-uwp-获得Slider拖动结束的值
title author date CreateTime categories win10 uwp 获得Slider拖动结束的值 lindexi 2018-2-13 17:23:3 +0800 201 ...
- js写出你的名字的拼音,判断哪个字母出现的最多
function fn(str) { var obj = {}; for (var i = 0; i < str.length; i++) { if (!obj[str.charAt(i)]) ...
- vue iframe嵌套页面高度自适应 (ios 宽度扩大的bug , ios展示比例问题)
<template> <div class="card-index pt-relative"> <div id="wrapper ...
- 在 Jenkins Windows Agent 节点上执行 Shell 命令
Jenkins 在 Windows agent 上执行shell 命令,听起来很有意思,以下方法可以在 Jenkins 中执行一些简单的 shell 脚本,如果是复杂脚本就交给 Linux agent ...
- -Bash: Unzip: Command Not Found解决方法 安装unzip
利用unzip命令解压缩的时候,出现-bash: unzip: command not found的错误. unzip——命令没有找到,其原因肯定是没有安装unzip.利用一句命令就可以解决了. 命令 ...
- 4-1 自动生成spider模板的命令
scrapy genspider 爬虫名 爬取得网站url例:scrapy genspider jobble2 blog.jobbole.com
- UVA 1343 - The Rotation Game-[IDA*迭代加深搜索]
解题思路: 这是紫书上的一道题,一开始笔者按照书上的思路采用状态空间搜索,想了很多办法优化可是仍然超时,时间消耗大的原因是主要是: 1)状态转移代价很大,一次需要向八个方向寻找: 2)哈希表更新频繁: ...
- 基于串口调试助手的WIFI模块调试-FPGA简单联网(点灯)
根据正点原子的<ATK-ESP8266 WIFI用户手册>,使用XCOM V2.2串口调试助手测试WIFI模块[26].在本系统中运用到的功能主要是TCP/IP模式中的TCP Client ...
- 【21.58%】【codeforces 746D】Green and Black Tea
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- 2018-2-13-C#-解析-sln-文件
title author date CreateTime categories C# 解析 sln 文件 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:23 ...