acid

深入分析事物以及什么是分布式事物?

时间秒杀一切 提交于 2020-02-11 22:50:06
什么是事物? 事物是关系型数据库中,由一组sql组成的执行单元,该单元要么整体成功,要么整体失败。 事物的ACID特性 事物ACID特性,原子性,一致性,隔离性,持久性,这4个属性统称为ACID特性。 原子性:指事物包含的所有操作sql,要么整体成功,要么整体失败。 一致性:事物前的状态结果和事物后的状态的结果都是一致的。参考银行转账。 持久性:指一个事物一旦被提交了,那么数据就永久存储在磁盘中,即使系统故障了,数据也不会丢失。 如果事物没有进行隔离会出现三种严重的问题:脏读,不可重复读,幻读。 什么是脏读? 指一个事物处理的过程中读取了另一个未提交(回滚)的事物的数据。 什么是不可以重复读? 指多次查询却返回了不同的数值,这是由于查询间隔原因,被另一个事物修改并提交了。 什么是幻读? 指当事物A在读取某个范围内的记录时,B事物又在该范围内插入了新的记录,当A事物再次读取该范围内的记录时,就产生了幻读。 什么是分布式事物? 分布式事物,是指一个业务需要同时操作多个数据库的情况下,而且必须保持ACID的特性。一般应用于微服务的多服务处理。 在电商系统中,支付订单,就是一个分布式事物了 第一步:支付服务,修改支付订单状态。 第二步:订单服务,订单状态修改为已支付 第三步:库存服务,减库存 第四步:积分服务,为该用户送积分 以上4个步骤,在分布式系统中,是一个整体,也就是一个分布式事物。

深入理解大数据之——事务及其ACID特性

喜夏-厌秋 提交于 2020-01-30 22:13:48
目录 事务简介 事物的定义 事务的目的 事务的状态 事务的ACID属性 ACID简介 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability) 总结 参考文献 版权声明:本文为Heriam博主原创文章,遵循CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接: https://jiang-hao.com/articles/2019/backend-transactions-acid.html 事务简介 事物的定义 事务(Transaction)是由一系列对系统中数据进行访问或更新的操作所组成的一个程序执行逻辑单元(Unit)。在计算机术语中,事务通常就是指 数据库 事务 。 在数据库管理系统(DBMS)中,事务是数据库恢复和并发控制的基本单位。它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。 例如,银行转帐工作:从源帐号扣款并使目标帐号增款,这两个操作必须要么全部执行,要么都不执行,否则就会出现该笔金额平白消失或出现的情况。所以,应该把他们看成一个事务。 在现代数据库中,事务还可以实现其他一些事情,例如,确保你不能访问别人写了一半的数据;但是基本思想是相同的——事务是用来确保 无论发生什么情况,你使用的数据都将处于一个合理的状态 : transactions

分布式--BASE原则

雨燕双飞 提交于 2020-01-30 09:26:28
分布式–BASE原则 概念 BASE 是基本可用(Basically Available)、软状态(Soft State)和最终一致性(Eventually Consistent)三个短语的缩写。 BASE 理论是对 CAP 中一致性和可用性权衡的结果,它的理论的核心思想是: 即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。 基本可用(Basically Available) 什么是基本可用呢?指分布式系统在出现故障的时候,保证核心可用,允许损失部分可用性。**假设系统,出现了不可预知的故障,但还是能用,相比较正常的系统而言: 响应时间上的损失:正常情况下的搜索引擎0.5秒即返回给用户结果,而基本可用的搜索引擎可以在2秒作用返回结果。 功能上的损失:在一个电商网站上,正常情况下,用户可以顺利完成每一笔订单。但是到了大促期间,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面。 软状态 什么是软状态呢? 相对于原子性而言,要求多个节点的数据副本都是一致的,这是一种“硬状态”。 软状态指的是: 指允许系统中的数据存在中间状态,并认为该中间状态不会影响系统整体可用性,即允许系统不同节点的数据副本之间进行同步的过程存在延时。 最终一致性 上面说软状态,然后不可能一直是软状态,必须有个时间期限。在期限过后

靶机实战-Acid

故事扮演 提交于 2020-01-26 16:10:32
Acid靶机实战 文章目录 Acid靶机实战 1、主机发现 2、端口扫描 3、端口详细信息扫描 4、访问8080端口 5、访问33447端口 6、提权 1、主机发现 目标主机:192.168.232.160 我是用arp命令扫的,大家可自行选择 2、端口扫描 3、端口详细信息扫描 4、访问8080端口 只有一个文件,点击就会下载,先pass 5、访问33447端口 查看网页源代码: 发现一串16进制的数,转化成字符: d293LmpwZw== base64在转化://得到 wow.jpg 是张图片,找找网站有没有存放图片的路径: 把/wow.jpg加上看看 保存图片到本地,查看有没有隐藏什么信息,用Nodepad++打开。发现最后有一些数字,看着像16进制 然后利用txt把:替换为空 到这网页上的东西就解出来了,就一个图片 然后扫一下其它目录://kali中启动DirBuster,暴力破解web目录 扫描出来的 /Challenge 目录与上面网页的标题相对应,访问一下: 访问此目录下的php: 发现cake.php中点一下login就会跳转到index.php登录页面,而且标题跟 /Challenge 标题格式是一样的,果断加到url后打开看看: 根据报错提示说明还是存在这个页面的,继续爆破一下目录看看有没有别的可以访问的页面: 发现了一个command.php页面

事务 ACID

≯℡__Kan透↙ 提交于 2020-01-14 07:39:53
事务是定义一系列操作在逻辑上可以看成一个完整的操作,具有ACID特性; Atomicity (原子性)   要求事务中所有的操作要么全部完成,要么全部没有发生,如果部分操作失败,则整个事务操作都会失败。 Consistency (一致性)   要求事务中的操作,符合容器(如:数据库)的各种规则,保证数据是合法、与规定好的方式运行,一般通过原子性来保证,数据在事务中会有各种状态,但是结果必须需要语义。   与原子性强调开始/结束状态不一样,一致性强调的是在事务过程中数据状态的不稳定,其他事务是不可见的。(隔离级别会有一些妥协) Isolation (隔离性)   事务与事务间不会相互影响,就像串行执行一样,相互之间并行时是不可见的。 Durability (持久性)   事务完成后,数据状态就保持不变,永久存储。 目前大致有两种比较流行的技术来实现事务: 预写日志(WAL)和影子分页(SP) 。 预写日志(write-ahead logging) ,主要提供ACID中的 原子性和持久性 两种特性的操作:   日志分为redo和undo信息,   undo用于记录修改前的信息,redo用于记录修改后的信息;undo可用于做事务失败的回滚操作,redo可用于做事务提交过程中故障恢复。log文件一般采用追加的方式,I/O效率高。  

事务及ACID四大特性

点点圈 提交于 2020-01-10 11:28:56
事务及ACID四大特性 1. 事务 事务(Transaction)是并发控制单位,是用户定义的一个操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位。 在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。 事务通常以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。 1.1 概念 在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。 1.2 特性 事务是恢复和并发控制的基本单位。 事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。 2. ACID特性 2.1 原子性(atomicity) 一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。 2.2 一致性(consistency) 事务必须是使数据库从一个一致性状态变到另一个一致性状态。 比如,当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统在运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态。 如果事务没有原子性的保证,那么在发生系统 故障的情况下,数据库就有可能处于不一致状态。 因而,事务的原子性与一致性是密切相关的。 2.3 隔离性

Hive Transaction 事务性 小试

一曲冷凌霜 提交于 2020-01-09 22:39:30
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 提到Hive一般都会想到,Hive是数据仓库,支持类SQL查询,有很多语法支持,可以嵌套MR,写Transform、写UDF/UDAF等, 但是,不支持更新操作 。所以Hive的常见也一般都是一次写入,频繁读取。从Hive 0.13开始,加入了ACID的新feature,但是0.13的时候还不支持insert、update和delete操作,我也并没有欣然的当小白鼠。 目前我们平台使用hive1.2.1的社区版,业务上也遇到了需要更新的场景。也是继续调研Transaction的特性。Transaction有几个依赖条件: 1、只支持ORCFile 2、默认关闭,需要自己开启 3、表必须分桶 4、0.14开始支持insert、update和delete 5、必须加入一大堆配置(下文) 一言不合就上个Demo: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1、建表: create table test_trancaction (user_id Int,name String) clustered by (user_id) into 3 buckets stored as orc TBLPROPERTIES ('transactional'=

SQL中的事务ACID

坚强是说给别人听的谎言 提交于 2020-01-07 18:24:52
概述: 事务是由一系列语句构成的逻辑工作单元。事务和存储过程等批处理有一定程度上的相似之处, 通常都是为了完成一定业务逻辑而将一条或者多条语句“封装”起来,使它们与其他语句之间出现一个逻辑上的边界,并形成相对独立的一个工作单元。 当使用事务修改多个数据表时,如果在处理的过程中出现了某种错误,例如系统死机或突然断电等情况,则返回结果是数据全部没有被保存。 因为事务处理的结果只有两种:一种是在事务处理的过程中,如果发生了某种错误则整个事务全部回滚,使所有对数据的修改全部撤销,事务对数据库的操作是单步执行的,当遇到错误时可以随时回滚; 另一种是如果没有发生任何错误且每一步的执行都成功,则整个事务全部被提交。从而可以看出,有效地使用事务不但可以提高数据的安全性,还可以增强数据的处理效率。 MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务! 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。 事务用来管理 insert,update,delete 语句 事务包含四种重要的属性,被统称为ACID

NoSQL那些事--Redis

为君一笑 提交于 2019-12-30 01:22:50
Redis是个流行的内存数据库(in-momery)。接口好用,性能也很强,还支持多种数据结构,加上各种高可用性集群方案,实在是太太太好用了。 但是就是因为太好用了,好用到让很多人都晕了脑子: 用Redis性能就大大提高了 用Redis可以保证原子性 用Redis可以实现事务 用Redis可以当队列 …… 这就好像一个股民,在手机上操作买卖几笔股票,赚了一些,然后感叹道"股市就是为我发财而存在的啊"!!他的下场可想而知。 Redis的种种优势源自于他的设计——简单直接的单线程内存操作。但这些优势是有前提的。 Redis的性能高,吗? Redis的性能非常高。有些评测说用Redis可以达到几十万QPS(比如这里 http://skipperkongen.dk/2013/08/27/how-many-requests-per-second-can-i-get-out-of-redis/ )。大家可能在网文上记住了这个NB的数字,却很少关心这个数值怎么来的。这就像是你买手机评测光看跑分一样不靠谱。 Redis要达到高性能需要做到: Value尽可能的小。一般的测评都会用比较小的value,比如一个整数或者不长的字符串。但是如果用Redis做缓存,那么缓存的大小的可能偏离这个数字。比如一个页面几十KB;再比如,一个5年的市场价格序列数据可能高达几MB