事务性和非事务性之间的区别

20

简单来说:“事务性”和“非事务性”的区别是什么?

在我的情况下,我提出了这个问题,是因为我在阅读“MDM”的以下定义时遇到了困惑:

“在计算中,主数据管理”(MDM)包括一组过程和工具,用于一致地定义和管理组织的非事务性数据实体(可能包括参考数据)。”

5个回答

26

我认为理解事务性数据和非事务性数据之间的区别最好的方法是通过例子来说明。

非事务性数据(这些信息与企业相关的时间比事务性数据更长)

  • 客户:姓名、偏好
  • 产品:名称、层次结构
  • 站点/位置:地址
  • 账户:合同细节

事务性数据(具有时间维度,一旦交易完成就变成历史性数据)

  • 财务:订单、发票、付款

这是正确答案,因为我们在谈论的是事务数据,而不是事务性数据库。 - Benji

11
当您将一组操作汇集并打包时,那么这组操作就是原子性(atomic)的,任何子操作的失败都会导致整个操作的回滚(rollback),从而使操作集合更加可靠。这种操作结构的属性被称为事务(transactional)

举个例子来说明事务(transaction)

假设您有一个处理客户订单、付款和其他计费内容的数据库,所以数据非常重要。您提供了一个 Web UI 界面,Web UI 调用业务包类和方法。完成业务作业后,这些方法也会调用 dao(数据访问对象) 类来处理crud(Create-Read-Update-Delete)(增删改查)操作。因此,后端服务器建立在 n-tier 应用程序模型上,存在dom(Domain Object Model),领域对象模型,可在服务端点与数据库之间双向传输数据。

在用户尝试更新某些信息(例如电话号码、付款方式和信用卡)的情况下,如果服务器正在更新这三个数据,如果其中一个出现问题会怎样?例如,已经更新了付款类型和电话号码,但在更新信用卡时发生错误。则本次计费业务响应失败。

但是,如果您有一种机制,可以将所有信息更新包装到一个信息更新组中,那么在发生任何错误的情况下,整个更新将被回滚。这是事务(transaction)的示例。

如果没有事务(transaction)机制,假设您将所有信息都保存在自定义文件中,并处理 I/O 机制,则您的应用程序将不得不处理每种可能的错误场景。

要了解更多信息,请查看以下有用的维基百科文章:


4
基本上,事务是对数据库进行的一个或多个添加、更新、删除、修改操作,这些操作必须全部完成或不执行任何步骤。当数据完整性很重要时,事务性数据库非常有用。如果事务中的某个步骤失败,则必须将所有步骤回滚到没有对数据库进行更改的状态。
需要使用事务的示例是当您进行银行交易从一个账户转移资金到另一个账户时。该交易由两个动作组成。
1.从账户A取款
2.将资金存入B账户。
如果未能从账户A扣除资金,则交易失败,账户A中不会扣除任何资金,也不会放入账户B中。
如果成功从账户A扣除资金,但无法向账户B添加资金,则交易失败,并且必须回滚事务,以便不从账户A中取款。
只有在从账户A中移除资金并将其添加到帐户B中时,交易才会将更改提交到数据库。
以下是使用SQLTransaction对象开启事务、提交它并在失败时回滚的代码示例链接:https://dev59.com/v2Ik5IYBdhLWcg3wi-xM#21285747
非事务性数据库可能具有更好的性能,因为它不必担心回滚更改。非事务性数据库中的单个数据可能不需要事务处理,因为不同于银行账户之间的资金管理。
非事务性列表的示例包括:客户列表、联系信息、供应商信息、位置列表和零件列表。
主数据服务旨在支持要与多个应用程序共享的非事务数据。例如,您可能希望使用一个公司成员联系信息的单个主列表,并使它可供不同的应用程序访问。如果有很多应用程序需要相同的信息,则这比尝试为每个应用程序维护不同的联系列表要好得多。
其他参考来源:https://en.wikipedia.org/wiki/Database_transactionhttps://dba.stackexchange.com/questions/17246/diff-in-transactional-and-non-transactional-tables

1

“TRANSACTIONAL”一般指在交易过程中获取的数据,例如,当您注册销售或购票时。


0

当它说非事务性时,我认为它意味着数据不是直接由OLTP(在线事务处理)系统访问的,而是存储在一个中央仓库中,所有系统都从中提取并在每X小时(预定间隔)后发布更新。


谢谢你的回答,Diego。这让我有点明白了。我还在网上找到了一些其他的参考资料这里这里。但是没有什么真正清晰明了的。你的回答基于什么?你有任何参考资料吗? - philips
我参与了一个MDM项目,所以这对我来说是有意义的。 - Diego

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接