双时态表实际在什么情况下使用?

And*_*rdi 5 database temporal-database bi-temporal

我正在尝试收集有关时态数据库的信息。我知道这不是一项现代技术,但我看到许多使用数据库的人都不知道时态方法是如何工作的(我向一些高级程序员和系统分析师询问了时态数据库,他们的回答类似于“嗯?”) 。

我知道有有效时间状态表和事务时间状态表,以及双时态表。我认为双时态表对于大多数用途来说都太复杂了,因为现在空间不再是问题,而且即使数据是冗余的,在两个不同的表上写入相同的信息会更有效。然而,我在网上做了很多搜索,试图了解双时态表的实际使用情况,但没有找到任何有用的东西。

是否存在使用双时态表确实比分别使用有效时间和事务时间状态表更方便的情况?有现实世界的例子吗?

All*_*owe 2

当然!以资产负债表数据为例。您会发现,由于数据迟到、调整、人为错误等原因,此信息将从 WD1(工作日)更改为 WD x。

为了实现可重复的报告、审计跟踪和时间比较,必须保留“旧”(无效?)结果的记录。双时态是管理此类更新的好方法,尤其是在日内更新。我认为从用户的角度来看这并没有那么复杂——只是 where 子句的另一个过滤器。

我承认加载过程很复杂,但并没有那么糟糕。我实际上刚刚写完一个通用转换(在 SAS 中,处理唯一业务密钥的所有场景),并且花了一天的时间。

回到用例..在同一个表上同时拥有有效(业务)时间和事务(版本)时间可以:

  • 可重复的结果(拥有单独的表和相应的更新可能意味着同一查询在不同的两天获得不同的结果)
  • 可比较的结果(可以回答诸如“我们在 Y 时间知道 X 的值是多少?”等问题)
  • 快速得到结果(仅处理单个表,以透明且易于查询的方式更新)。

从这个意义上说,它是一个适合在 DWh 中的许多(如果不是所有)表上使用的结构。

2020 年更新:SAS 数据控制器提供了 SAS 双时态数据转换(SAS 9 和 Viya)​​。提供演示版本: https://docs.datacontroller.io/dcc-tables/#var_busfrom-var_busto