关于 Bitemporal Data Model

发布: (2026年3月15日 GMT+8 17:19)
3 分钟阅读
原文: Dev.to

Source: Dev.to

时间数据模型类型

非时态

  • 仅保存当前状态。
  • 不保留过去历史或未来变更的信息。

单时态

  • 只有一条时间线。
  • 存储数据生效的开始日期和有效期结束的结束日期。

双时态

  • 有两条时间线:
    • 事务时间(系统时间)——记录在数据库中的时间。
    • 有效时间——事件实际发生的时间。
  • 与单时态不同,单时态中事务时间和有效时间是相同的,双时态则将它们区分开来。

为什么采用双时态数据模型?

  • 跟踪数据历史的变更
  • 法律和审计要求
  • 提升时间序列分析的灵活性

在 RDBMS 中实现双时态模型的挑战

确保数据一致性

  • 需要约束来防止同一实体的有效时间段重叠。
  • 必须保持事务时间的连续性。
  • 在 PostgreSQL 中,EXCLUDE 约束对强制执行这些规则非常有用。

查询复杂度

  • 查询必须同时考虑有效时间和事务时间,这很容易变得错综复杂。
  • 这种复杂性使性能调优更加困难。

应用逻辑复杂度

  • 检索、更新和删除操作必须处理两条时间线。
  • 需要额外的逻辑来在两个时间维度之间保持一致性。

虽然双时态模型能够引用过去的历史、添加过去或未来的记录,并保留关于历史本身的更新信息,但它也会引入显著的复杂性。

处理高度灵活的历史数据可能会有陡峭的学习曲线,但它为管理和分析时间信息打开了强大的可能性。

参考文献

0 浏览
Back to Blog

相关文章

阅读更多 »