我正在尝试收集有关时态数据库的信息。我知道它不是一种现代技术,但我看到许多使用数据库的人都不知道时间方法是如何工作的(我向一些高级程序员和系统分析师询问了时态数据库,他们回答了类似“嗯?”)
我知道有有效时状态表和事务时状态表以及双时态表。我认为双时态表对于大多数用法而言过于复杂,因为现在空间不再是问题,并且在2个不同的表上写入相同的信息更有效,即使数据是多余的。但是,我在网上进行了很多搜索,试图查看实际使用双时态表的位置,但我没有找到任何有用的东西。
是否存在使用双时态表分别比有效时间和事务时状态表更方便的情况?有现实世界的例子吗?
答案 0 :(得分:2)
当然!以资产负债表数据为例。您会发现,由于迟到的数据,调整,手动错误等,此信息将从WD1(工作日)更改为WD x。
为了实现可重复的报告,审计跟踪和时间比较,必须保留一份“旧”的记录。 (无效?)结果。双时态是管理此类更新的好方法,尤其是在日内。从用户的角度来看,我认为这很复杂 - 只是对where子句的另一个过滤器。
我承认加载过程很复杂,但它并没有那么糟糕。我刚刚完成了一个通用转换(在SAS中,处理所有场景中的唯一业务键)并且它只需要一个一天。
回到用例..在同一个表上同时拥有有效(业务)时间和事务(版本)时间:
从这个意义上讲,它是一种适用于DWh中许多(如果不是全部)表格的结构。
答案 1 :(得分:0)
我认为您的问题提出了更多的问题,但最终都取决于多少。 我开发了Bi_Temporal SQL Server引擎,该引擎支持按时间进行对象版本控制和关系以及Temporal DB的所有其他精美部分。
这是因为项目需要能够及时倒回某个地方并能看到当时的一切。 我的意思是一切,包括数据,关系和用户访问权限。 这是我构建的最复杂的东西,但最终它是如此的复杂,没有人可以维护它,也无法理解正在发生的事情。 因此,存在一个真实的用例和一个可交付成果。
不是所有人都需要喝茶,因为您必须能够像所有数据库一样思考时间维度以及对象版本更改。
希望这对某人有帮助。我知道该帖子很旧,但是这是我在搜索Temporal DB时发现的第一篇,可能对此人感兴趣。