参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_about_transactions_c.html#concept_ds_j1p_m5x_zj

  Cassandra不提供完整的符合ACID特性的事务,ACID事务是关系型数据库系统的标准事务行为:

  •原子性

    在事务中每一个步要么成功或者回滚整个事务。

  •一致性

    一个事务不能使数据库处于不一致的状态。

  •隔离性

    事务不能相互干扰。

  •持久性

    事务完成以后,更改便持久地保存在数据库之中。

  作为一个非关系型数据库,Cassandra 不支持连接和外键,因此从ACID的角度来说不提供一致性。例如,让把钱从A账户移到B账户总账目中不改变。 Cassandra支持行一级的原子性和隔离性,但与之交换的是高度的可用性和快速的读写性能。

  Cassandra写入具有持久性。

一、原子性

  在Cassandra中,一个写入在行一级是原子性的,插入或更新一个行的各个列认为是一个写入操作。Cassandra不支持多行插入时要么有要么全无这样的事务。同样,但写入在一个副本节点上成功,但是在其他节点失败时,回顾是不会发生的。Cassandra中可以通过一个发送操作的错误报告通知客户端,但事实上一个副本节点上仍然存留着写入的数据。

  例如,如果使用写的一致性为QUORUM、副本因子为3,Cassandra会复制写入到集群中的各个节点并且等待两个节点的返回。如果写入在其中一个节点失败但是在其他节点成功。Cassandra会报告一个错误去在那个节点上重新执行写入然而,另一个节点写入成功是不会自动回滚的。

  Cassandra使用时间戳去决定哪一个是最新的更新。时间戳室友客户端程序提供的。当请求数据时最新的时间戳总是会获得胜利,因此如果多个客户端会话同时地更新同一行相同的列,最新的更新是那个最终坚持的。

二、可调的一致性

  当同时地更新多个行或者多个表时没有锁或者事务依赖。Cassandra支持可以调整的可用性和一致性,并且能提供给你分区耐受性。从CAP 的来说,Cassandra可以给你很强的一致性当数据连续的分布在在一个分布式数据集群的各个节点上。

  用户可以选择一个运行准则——多少节点必须接收到DML命令或者对一个SELECT查询做出回应。

三、隔离性

  在Cassandra 1.1之前,可能会看到部分的更新当一个用户更新行但是另一个用户读取相同行。例如,当一个用户写入一个行,那个行包括2000列,另一个用户可能读取相同行并且见到一些列,但不能看到所有列当写入还在执行的时候。

  完整的行级别的隔离性现在准备就绪了因此写入到一行是隔离的当客户端执行写入时,并且不可被其他用户访问直到写入成功。

  从事务ACID的角度看,现在的增强给了Cassandra AID事务的支持。在存储引擎中一个写入是行一级隔离的。

四、持久性

  Cassandra写入具有持久性。在返回成功之前,副本节点上所有的会被记录在内存中和磁盘上的commit log文件中。如果在内存中的表刷新到磁盘之前,系统崩溃了或者服务器宕机了,commit log文件会在系统重启后重新执行以恢复任何丢失的数据。除了本地的持久性(数据立马被写入到磁盘)将数据复制其他节点上也增强了持久性。

最新文章

  1. 一些常用的git指令
  2. java基础知识(三)java关键字
  3. SVM
  4. three.js 源码注释(四十四)Light/DirectionalLight.js
  5. angualrjs
  6. 使用jQueryUI的dialog实现一个提示功能
  7. CSS3 选择器——伪类选择器
  8. Word 2013双引号的BUG
  9. 再识C中的结构体
  10. IIS Web负载均衡的几种方式
  11. windows 下安装Python
  12. POJ题目(转)
  13. JQuery事件与动画总结
  14. Python学习笔记(十一)
  15. 从零学习Fluter(四):Flutter中ListView组件系列详展
  16. 黄聪:C#中CefSharp的简单使用
  17. jQuery效果之封装一个文章图片弹出放大效果
  18. win32编程简介
  19. jquery的clone方法应用于textarea和select的bug修复不能copy值,clone id重复的解决
  20. 3、iptables扩展及使用

热门文章

  1. node-sass报错解决方法
  2. Loadrunner监控Linux系统资源
  3. java:hibernate + oracle之坑爹的clob
  4. C#路径总结
  5. 代码片段 - Golang 创建 .tar.gz 压缩包
  6. 静态wenb开发,动态web开发
  7. IIS7 发现无法显示ewebeditor编辑器成空白
  8. [NOIP2011普及组]瑞士轮 JAVA实现
  9. PHP学习之[第01讲]开启PHP学习之路,融入新互联网时代
  10. <<Python基础课程>>学习笔记 | 文章13章 | 数据库支持
  11. 快速构建Windows 8风格应用28-临时应用数据
  12. Redis清空数据
  13. redis基础知识
  14. PHP7中的数据类型
  15. Webapi 跨域 解决解决错误No 'Access-Control-Allow-Origin' header is present on the requested resource 问题
  16. PHP 闭包
  17. jquery 获取表单的用户输入值的方法
  18. THE ELEMENTS OF C# STYLE
  19. 为什么我不再用 .NET 框架
  20. mybatis中mapUnderscoreToCamelCase自动驼峰命名转换