参考文档: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文件会在系统重启后重新执行以恢复任何丢失的数据。除了本地的持久性(数据立马被写入到磁盘)将数据复制其他节点上也增强了持久性。

Cassandra1.2文档学习(14)—— 事务和并发控制的更多相关文章

  1. Cassandra1.2文档学习解读计划——为自己鼓劲

    最近想深入研究一下Cassandra,而Cassandra没有中文文档,仅有的一些参考书都是0.7/0.6版本的.因此有个计划,一边学习文档(地址:http://www.datastax.com/do ...

  2. Cassandra1.2文档学习(16)—— 模式的变化

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

  3. Cassandra1.2文档学习(15)—— 配置数据一致性

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

  4. Cassandra1.2文档学习(1)——Cassandra基本说明

    参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/architecture/a ...

  5. Cassandra1.2文档学习(19)—— CQL索引

    参考文档:http://www.datastax.com/documentation/cql/3.0/webhelp/index.html#cql/ddl/ddl_primary_index_c.ht ...

  6. Cassandra1.2文档学习(17)—— CQL数据模型(上)

    参考文档:http://www.datastax.com/documentation/cql/3.0/webhelp/index.html#cql/ddl/ddl_anatomy_table_c.ht ...

  7. Cassandra1.2文档学习(13)—— 数据读取

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

  8. Cassandra1.2文档学习(12)—— hint机制

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

  9. Cassandra1.2文档学习(11)—— 删除数据

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

随机推荐

  1. LeetCode(93) Restore IP Addresses

    题目 Given a string containing only digits, restore it by returning all possible valid IP address comb ...

  2. HDU4776 Ants(Trie && xor)

    之前mark下来的一道题,今天填一下坑. 题意是这样子的.给你一棵边上有权的树.然后有树上两点(u,v)的路径有n*(n-1)条,路径(u,v)的权值是边权的xor. 然后下面有m个询问,询问你n*( ...

  3. [转]C# 获取系统文件图标

    //获取文件的图标 this.Icon = GetFileIcon(@"c:\gdiplus.dll"); //获取文件夹图标 this.Icon = GetDirectoryIc ...

  4. 用Eclipse 开发Dynamic Web Project应用程序 【转】

    简介:本文仅简单介绍基于Eclipse开发Dynamic Web Project应用下的JSP,Servlet及TOMCAT数据源的配置和开发. 软件环境: Eclipse Java EE IDE f ...

  5. 构建服务端的AMD/CMD模块加载器

    本文原文地址:http://trock.lofter.com/post/117023_1208040 . 引言:  在前端开发领域,相信大家对AMD/CMD规范一定不会陌生,尤其对requireJS. ...

  6. Python连接Oracle数据库

    今天使用Python连接数据库,连接没有问题,就是中文显示乱码,网上找了很多解决方案, 最后选择使用这个 #!/usr/bin/env python # -*- coding:utf-8 -*- #A ...

  7. present(模态)实现出push的效果

    在present加上这个转场动画,取消掉原来的转场动画  CATransition *animation = [CATransitionanimation];     animation.durati ...

  8. MAC 终端走代理服务器

    问题描述: MAC 终端,默认不走代理服务器:即浏览器已经可以FQ,但是终端不行: 解决方案:直接设置终端的代理,本文 用的是 shadowSocksX: 打开终端,直接执行:(执行后,只对当前终端起 ...

  9. 符号执行-基于python的二进制分析框架angr

    转载:All Right 符号执行概述 在学习这个框架之前首先要知道符号执行.符号执行技术使用符号值代替数字值执行程序,得到的变量的值是由输入变 量的符号值和常量组成的表达式.符号执行技术首先由Kin ...

  10. Kay and Snowflake CodeForces - 685B (重心, 好题)

    大意:给定有根树, 求每个子树的重心 我太菜了啊, 只能想到暴力树剖, 然而这就是个B题, 感觉树剖+线段树二分还是挺难写的..... 看了题解发现重心一定在重儿子与根的树链上, 重心最多上跳n-1次 ...