【问题标题】:In what cases are bitemporal tables actually used?在什么情况下实际使用双时表?
【发布时间】:2014-09-19 10:34:11
【问题描述】:

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

我知道有有效时间状态表和事务时间状态表,以及双时态表。我认为双时态表对于大多数用途来说太复杂了,因为现在空间不再是问题,在 2 个不同的表上写入相同的信息更有效,即使数据是冗余的。但是,我在网上进行了很多搜索,试图查看实际使用双时态表的位置,但没有发现任何有用的东西。

在某些情况下,使用双时态表真的比单独使用有效时间和事务时间状态表更方便吗?有现实世界的例子吗?

【问题讨论】:

    标签: database temporal-database bi-temporal


    【解决方案1】:

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

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

    我承认加载过程很复杂,但还不错。我刚刚完成了一个通用转换(在 SAS 中,为一个唯一的业务密钥处理所有场景),并且花了一天时间。

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

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

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

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

    【讨论】:

      【解决方案2】:

      我认为您的问题引发了更多问题,但这一切都归结为多少才足够。 我开发了一个 Bi_Temporal SQL Server 引擎,它支持对象版本控制和时间关系以及 Temporal DB 的所有其他漂亮部分。

      这是因为项目需要能够及时倒带到某个地方,并能看到当时的一切。 我的意思是一切,包括数据、关系和用户访问。 这是我建造的最复杂的东西,但最终它是如此复杂,没有其他人可以维护它,或者理解正在发生的事情。 所以有一个真实世界的用例和一个可交付成果。

      不是每个人都喜欢喝茶,因为您必须能够像所有 db 一样考虑时间维度以及对象版本的变化。

      希望这对某人有所帮助。我知道这篇文章很旧,但由于它是我在搜索 Temporal DB 时发现的第一篇文章,因此可能有人会感兴趣。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-14
        • 2013-05-09
        • 1970-01-01
        • 1970-01-01
        • 2021-11-23
        • 2016-06-09
        • 1970-01-01
        • 2011-01-26
        相关资源
        最近更新 更多