代码之家  ›  专栏  ›  技术社区  ›  Arnkrishn

为什么我们需要一个时态数据库?

  •  46
  • Arnkrishn  · 技术社区  · 16 年前

    它与普通的RDBMS有多大区别?难道我们不能有一个普通的数据库,即RDBMS,并说有一个触发器,它将时间戳与发生的每个事务相关联吗?可能会有一场演出热播。但我仍然怀疑时态数据库在市场上是否有强有力的理由。

    现有的数据库是否支持这种功能?

    11 回复  |  直到 10 年前
        1
  •  71
  •   Jon Guiton    14 年前

    考虑一下你的预约/日记日记,从1月1日到12月31日。现在,我们可以在任何一天查询日记中的约会/日记条目。这种排序称为 有效时间

    假设我想知道4月4日我的日记中有哪些约会/条目。也就是说,我4月4日日记中的所有记录。这是 交易时间 .

    鉴于可以创建和删除约会/条目等。典型的记录有一个开始和结束有效时间,涵盖条目的时间段,以及一个开始和结束交易时间,指示条目出现在日记中的时间段。

    历史修订

    时态数据库的这种时间旅行特性使得记录有关如何在数据库中纠正错误的信息成为可能。这对于记录何时进行修订的数据的真实审计图像是必要的,并允许查询与数据如何在过去几年中进行修订有关的信息 时间

        2
  •  19
  •   codekaizen    16 年前

    时态数据库有效地存储数据的时间序列,通常通过具有一些固定的时间刻度(例如秒甚至毫秒),然后仅存储测量数据中的更改。RDBMS中的时间戳是每次测量的离散存储值,这是非常低效的。时态数据库通常用于实时监控应用程序,如SCADA。一个成熟的系统是OSISoft的PI数据库( http://www.osisoft.com/ ).

        3
  •  12
  •   Jonathan Leffler    16 年前

    据我所知(而且过分简化了),时态数据库记录了有关数据何时有效以及数据本身的事实,并允许您查询时态方面。最后处理的是“有效时间”和“事务时间”表,或者是“双时态表”,涉及“有效时间”和“事务时间”两个方面。你应该考虑阅读这两本书中的任何一本:

        4
  •  6
  •   bob    14 年前

    时态数据库通常用于金融服务行业。一个原因是您很少(如果有)被允许删除任何数据,因此记录上的ValidFrom-ValidTo type字段用于指示记录何时正确。

        5
  •  5
  •   Community CDub    8 年前

    除了“我能用它做些什么新事物”之外,还可以考虑“哪些老的东西是统一的?”时态数据库表示“普通”SQL数据库的特定泛化。因此,它可以为您提供一个统一的解决方案,以解决以前看似无关的问题。例如:

    使用简单的合并工具进行简单的分支也可以简化一些常见的工作流问题。例如,非营利组织可能有志愿者或低薪工人做数据输入。让每个员工都有自己的分支可以让主管在将其合并到“普通”用户可以看到的主分支之前轻松地审查或改进他们的工作(例如,重复数据消除)。分支还可以简化权限。如果用户只被授予使用/查看其唯一分支的权限,那么您就不必担心防止任何可能的不必要的修改;您将只合并有意义的更改。

        6
  •  2
  •   Joel Bender    16 年前

    除了阅读 Wikipedia article ? 维护“审计日志”或类似事务日志的数据库将具有一些“时态”属性。如果您需要有关的问题的答案 谁对谁做了什么,什么时候

        7
  •  2
  •   Scott Kirkwood    16 年前

    你可以想象一个简单的时态数据库,每隔几秒钟记录一次你的GPS位置。压缩这些数据的机会很大,一个普通的数据库需要为每一行存储一个时间戳。如果您需要大量的吞吐量,那么知道数据是暂时的,并且永远不需要对一行进行更新和删除,这将允许程序降低典型RDBMS中继承的大量复杂性。

    尽管如此,时态数据通常只存储在普通的RDBMS中。例如,PostgreSQL有一些 temporal extensions

        8
  •  2
  •   Scott Weinstein    16 年前

    1. 有些是针对插入和只读进行优化的,可以提供显著的性能改进
    2. 有些人对时间的理解比传统的SQL更好——允许按秒、分钟、小时等对操作进行分组
        9
  •  2
  •   Manoj Pandey    9 年前

    SQL Server 2016将更新时态数据库。

    澄清您的疑问:为什么需要时态数据库,而不是使用自定义方法进行配置,以及效率如何&SQL Server为您无缝配置,请查看Channel9.msdn上的深入视频和演示: https://channel9.msdn.com/Shows/Data-Exposed/Temporal-in-SQL-Server-2016

    https://msdn.microsoft.com/en-us/library/dn935015(v=sql.130).aspx

    目前,通过SQL Server 2016的CTP2(beta 2)版本,您可以使用它。

    检查 this video

        10
  •  1
  •   Uri    16 年前

    对我来说,这有点像使用特定于GIS的数据库,而不是RDBMS。虽然您可以在普通的RDBMS中使用坐标,但拥有适当的表示(例如,通过网格文件)可能会更快,而拥有拓扑之类的SQL原语也很有用。

        11
  •  1
  •   Andrew    16 年前

    时态数据库有用的另一个例子是数据随时间变化的地方。我在一家电力零售商工作了几年,我们在那里存储了30分钟的电表读数。这些仪表读数可以随时修改,但我们仍然需要能够回顾读数变化的历史。

    因此,我们有最新的阅读资料(30分钟内我们对消费的“当前理解”),但可以回顾我们对消费的历史理解。当您拥有可以以这种方式调整的数据时,时态数据库工作得很好。

    (话虽如此,我们还是用SQL手工雕刻了它,但那是很久以前的事了。现在我们不会做出这样的决定。)