- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在查看有关事务的 ACID 属性,并在不同站点上遇到了以下声明ACID 是事务保证的四个属性的首字母缩写:原子性、一致性、隔离性和持久性。
**我的问题专门针对这个短语。
guaranteed by transactions
**。根据我的经验,这些属性不受自动交易。但作为 Java 开发人员,我们需要确保满足这些属性标准。
让我们来看看每个属性:-
原子性:- 假设当我们创建客户时,帐户也应该创建,因为这是强制性的。所以现在在交易期间客户在帐户创建过程中创建时出现一些异常。所以开发人员现在可以采取两种方式:要么他回滚完成交易(在这种情况下满足原子性)或者他提交交易所以客户将被创建但不是帐户(这违反了原子性)。所以责任在于开发者?
一致性:- 同样的原因也适用于一致性
隔离:- 根据定义,隔离使事务的执行不受其他进程或事务的干扰。
但这是在我们将隔离级别设置为可序列化时实现的。否则在另一种情况下,如读取已提交或读取未提交更改对其他交易可见。因此,责任在于开发人员使其真正与 Serializable 隔离?
持久性:- 如果我们提交事务,那么即使应用程序崩溃,它也应该在应用程序重新启动时提交。不确定它是否需要由开发人员或数据库供应商/交易来处理?
因此,根据我的理解,这些 ACID 属性不能自动得到保证;相反,我们作为开发人员应该实现它们。请告诉我以上对每一点的理解是否正确?如果你们能对每一点进行回复,我们将不胜感激(是/否也可以。
根据我的理解,已提交读应该是大多数应用程序中最符合逻辑的隔离级别,尽管它也取决于要求。
最佳答案
事务或多或少保证了 ACID:
1) 原子性。事务保证进行所有更改或不进行任何更改。但是需要手动设置一个事务的开始和结束,手动commit或者rollback。根据您使用的技术(EJB...),事务是容器管理的,将开始和结束设置为您正在创建的整个“方法”。您可以通过配置来控制调用的方法是需要新事务还是现有事务,没有事务...
2) 一致性。由原子性保证。
3) 隔离。您必须定义应用程序需要的隔离级别。默认值根据数据库、容器定义...最常见的是 READ COMMITTED。小心使用锁,因为它可能会导致死锁,具体取决于您的逻辑和隔离级别。
4) 耐用性。完全由数据库管理。如果你的提交没有错误地执行,几乎所有的数据库都能保证更改的持久性,但有些情况可能会导致无法保证(写入磁盘会缓存在内存中并稍后刷新......)
一般情况下,你应该了解事务并在代码声明的容器中配置它的启动和结束(提交,回滚)。
关于java - 确保事务的 ACID 属性的责任在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7379064/
假设我使用的是标准 SQL 引擎(例如 Postgres、MySQL...)。 如果我没有明确说“开始交易”和“结束交易”进行查询时 (如“插入学生......”), 会“安全”吗? 我会失去 RDB
我正在开始一个项目的研究,该项目需要在其数据库上提供ACID语义。 由于数据的性质,它不适合存储在常见的现成系统(关系或键值)中。 关于如何实现必须提供ACID语义的系统,有哪些好的资源? 我典型的G
DBMS 的原子性和隔离性之间的区别有些模糊,所以我想知道两者之间的明显区别? 原子性和隔离性在经典数据库事务中通过使用提交协议(protocol)得到保证。该协议(protocol)用于将临时存储变
抱歉这个无知的问题,但是什么样的应用程序不需要符合 ACID 的数据库服务器?我有 SQL Server 背景,其中 ACID 一直“存在”,现在研究其他 DBMS 让我思考。我能想到的大多数应用程序
ACID和数据库事务有什么关系? ACID 是给数据库事务还是一回事? 谁能启发这个话题。 最佳答案 ACID是您希望在修改数据库时应用的一组属性。 原子性 一致性 隔离 耐用性 事务是一组相关的更改
过去几个月我一直在研究微服务架构应用程序,我仍在努力适应分布式特性。我多次注意到一种模式,但我不确定处理它的首选方式是什么。 假设我们有服务 A、服务 B 和服务 C。服务 A 公开了一个 API,其
我经常读到,CQRS 的一大优势是在读取端拥有非规范化数据。例如。可以存储冗余的数据字段和子对象以避免连接。但这也意味着单个事件可能会导致读取端发生多个更新操作,因为实体的状态更改必须反射(refle
我经常读到,CQRS 的一大优势是在读取端拥有非规范化数据。例如。可以存储冗余的数据字段和子对象以避免连接。但这也意味着单个事件可能会导致读取端发生多个更新操作,因为实体的状态更改必须反射(refle
任何人都知道提供对一致性保证的精细控制的消息总线实现? Full ACID 太慢,没有 ACID 太错误。 我们目前正在使用 Rhino ESB 包装 MSMQ 进行消息传递。在分布式事务中使用持久的
我有一个多线程 java 应用程序,它在 MySQL 数据库上执行大量并行 CRUD 操作。正如MySQL手册中所读到的,InnoDB表结构应该确保事务按照ACID原则执行。但我仍然遇到问题,因为有时
我的交易应用程序是这样工作的: try { $db->begin(); increaseNumber(); $db->commit(); } catch(Exceptio
http://imgur.com/IZgvl 大家好,我一直在从 Wiley 的 MySQL Administrator's Bible 学习 MySQL(完全没有使用 PHP 的经验)。如果我提出的
背景: 我通过串行连接从 arduino 获取温度 float 。我需要能够每 30 秒缓存一次此温度数据,以便其他应用程序(例如网络、恒温器 Controller )访问并且不会使串行连接过载。 目
我正在查看有关事务的 ACID 属性,并在不同站点上遇到了以下声明ACID 是事务保证的四个属性的首字母缩写:原子性、一致性、隔离性和持久性。 **我的问题专门针对这个短语。 guaranteed b
我在 hadoop 集群上工作,hortonworks 2.4 发行版。我想对 Hive 表进行 ACID 操作。这是我的声明: CREATE TABLE myAcidTable (..) CLUST
我试图了解 ACID 事务,但我对持久性一无所知。 据我所知,持久性可确保保存所有已完成的交易,即使发生某种技术故障。即使发生某种技术故障也能获救意味着什么。例如,如果我的服务器在事务期间崩溃,在将数
我如何为我的数据库实现 ACID 属性 -A-原子性,C-一致性,I-隔离性,D-持久性。正在使用的数据库系统 - MySql。 最佳答案 ACID 不是您可以实现的模型,而是数据库服务器必须遵守的一
我是 Aerospike 的新手。 我想知道在所有可能的超时情况下,如该链接所述: https://discuss.aerospike.com/t/understanding-timeout-and-
具体来说,是否存在数据丢失的风险?我正在考虑运行一个密集的事务处理系统,在这个系统中,不丢失任何东西是至关重要的。是否有 NoSQL 用于银行交易处理等任务关键型应用程序的示例? 最佳答案 坦率地说,
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 3 年前。 Improve this qu
我是一名优秀的程序员,十分优秀!