19

简单地说:“事务性”和“非事务性”有什么区别?

就我而言,我在阅读以下“MDM”定义时提出了这个问题:

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

4

5 回答 5

22

我认为了解事务性数据和非事务性数据之间区别的最佳方法是通过示例

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

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

事务性(具有时间维度,事务完成后变为历史性)

  • 财务:订单、发票、付款
于 2013-10-12T18:01:33.060 回答
9

当您收集一组操作并将其包装成一个操作时,您的一组操作是原子的,任何子操作失败最终都会导致整体回滚,这使得这组操作可靠。这种操作结构的属性称为事务性

举一个交易的例子;

考虑一下您有一个处理客户订单、付款和其他计费内容的数据库,因此数据非常重要。您提供一个 web-ui 和 web-ui 调用业务包类和方法。并且这些方法在完成 bi 工作后也会调用dao(代表数据访问对象)类来处理crud操作。因此后端服务器构建了一个 n 层应用程序模型,并且有dom对象(代表域对象模型)以两种方式从服务端点到数据库上下传输数据。

在用户想要更新一些信息的情况下,比如说电话号码、支付类型和信用卡。当服务器更新其中三个数据时,如果其中一个出现问题怎么办?比如说,付款类型和电话号码已更新,但在更新信用卡时出现错误?您将在一天或一个月的时间里以不成功的计费尝试结束。

但是如果你有一个机制,它将所有的信息更新包装到一个信息更新组中,那么在任何错误的情况下,整个更新都将被回滚。这是一个事务的例子。

如果没有事务机制,假设您将所有信息保存在您处理 io 机制的自定义文件中,那么您的应用程序将不得不处理所有可能的错误场景。

有关更多信息,您应该查看这些有用的维基百科文章;

于 2016-03-11T14:36:15.690 回答
2

基本上,事务是对数据库的一个或多个添加、更新、删除、修改更改,必须全部完成或不执行任何步骤。当数据完整性很重要时,事务数据库很有用。如果事务中的某个步骤失败,则必须将这些步骤回滚到未对数据库进行任何更改的状态。

当您进行银行交易以将资金从一个帐户转移到另一个帐户时,您需要进行交易的一个示例是。事务由两个动作组成。

1) 从账户 A 取钱

2) 把钱存入账户 B.

如果您未能从账户 A 中移除资金,则交易失败,并且没有资金从账户 A 移除,也没有资金存入账户 B。

如果您成功从账户 A 中取出钱,但未能向账户 B 充值,则交易失败,交易必须回滚,这样钱就不会从账户 A 中取走。

只有当资金从账户 A 中移除并添加到账户 B 时,事务才会将更改提交到数据库。

这是使用 SQLTransaction 对象开始事务、提交事务并在失败时回滚的代码示例的链接: https ://stackoverflow.com/a/21285747/311749

非事务性数据库可能会具有更好的性能,因为它不必担心回滚更改。非交易数据库中的个人数据可能不需要像管理银行账户之间的资金那样的交易处理。

可能的非交易列表的示例包括:客户列表、联系信息、供应商信息、位置列表和零件列表。

Master Data Services 旨在支持您希望与多个应用程序共享的非事务性数据。

例如,您可能希望使用公司成员联系信息的单一主列表,并使其可供不同的应用程序访问。如果您有许多需要相同信息的应用程序,这比尝试为每个应用程序维护不同的联系人列表要好得多。

其他来源: https ://en.wikipedia.org/wiki/Database_transaction

https://dba.stackexchange.com/questions/17246/diff-in-transactional-and-non-transactional-tables

于 2016-03-16T10:24:23.623 回答
0

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

于 2013-09-23T21:14:08.950 回答
0

TRANSACTIONAL 通俗的说法是指在交易过程中获得的数据,例如,当您注册销售或门票时。

于 2014-07-16T14:23:27.753 回答