我已经阅读了很多关于软件事务内存,特别是关系到哈斯克尔,但我试图找到如何从数据库事务有什么不同?是否有一定的优势,我不跟STM明白吗?

有帮助吗?

解决方案

在软件事务存储器中的“交易”的概念是明确地从数据库中借来的。所不同的是在交易中实现并如何使用它们。

STM是一个语言级的概念:直至事务提交操作的顺序不生效。典型地,这意味着,当一个事务成功一些全局/共享变量的值只改变。该物业是由语言运行时执行。有持续性的不存在固有的概念:参与交易的变量本质上可以是纯粹的动态(例如,工作队列的大小)

数据库事务是应用程序级的概念:数据的一系列操作,直到事务被提交不生效。由于这是一个数据库,持久性是基本的:。的“生效”内部数据库的含义是,该数据被保存在一些持久性存储

您可能会使用一个数据库和数据库事务来实现一个STM-风格的算法,但你会失去的易用性和便利性(并可能在大多数情况下,性能)语言一级的执行。

其他提示

这是STM交易的有很多共同与数据库事务即可。特别是,ACID属性数据库设计人员重要的,STM提供了原子和隔离。一致性,然而,要由程序员可以编写违反内部数据结构的不变量,例如STM交易。最后,STM交易通常是不耐用;结果存储在易失性RAM,而如果机器成功交易后崩溃,其结果可能会丢失。也就是说,在我的脑海里,可能是一个STM事务和数据库事务之间最显着的区别。

STM主要用于并发性,而数据库事务是关于数据的一致性。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top