我在读关于时间的数据库和它似乎他们已经建立在时间方面。我不知道为什么我们需要这样一个模式?

如何不同的是,它从一个正常的关系型数据库?我们不能有一个正常的数据库即RDBMS说有一个触发其同伙时间标记每一笔交易这种情况发生?可能会有效的打击。但我仍然持怀疑态度的时空数据库有一种强烈的情况下在市场上。

是否有任何本数据库支持这样一种功能?

有帮助吗?

解决方案

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

其他提示

考虑你的预约日记日记 - 从1月1日到12月31日。现在我们可以在任何一天查询日记中的约会/日记条目。此排序称为有效时间。但是,通常不会按顺序插入约会/条目。

假设我想知道4月4日我日记里的约会/参赛作品。也就是说,4月4日我日记中存在的所有记录。这是交易时间

鉴于可以创建和删除约会/条目等。典型的记录具有覆盖条目期间的开始和结束有效时间以及表示条目出现在期间的开始和结束交易时间。日记。

当日记可能经历历史修订时,这种安排是必要的。假设在4月5日我意识到我在2月14日的约会实际上发生在2月12日,即我在我的日记中发现错误 - 我可以纠正错误,以便更正有效的时间图片,但现在,我的查询是什么在4月4日的日记中是错误的,除非,约会,条目的交易时间也被存储。在那种情况下,如果我在4月4日查询我的日记,它将在2月14日显示约会,但如果我在4月6日查询它将在2月12日显示。

时间数据库的这种时间旅行功能可以记录有关如何在数据库中纠正错误的信息。这对于记录何时进行修订的数据的真实审计图片是必要的,并且允许关于如何修改数据的查询 时间。

大多数商业信息应该存储在这个双时态方案中,以便提供真实的审计记录并最大化商业智能 - 因此需要在关系数据库中提供支持。请注意,每个数据项在二维时间模型中占据(可能无界)方格,这就是人们经常使用GIST索引来实现双时态索引的原因。这里的问题是GIST索引真的是为地理数据设计的,而时态数据的要求也有所不同。

PostgreSQL 9.0排除约束应提供组织时态数据的新方法,例如事务和有效时间PERIOD不应该重叠相同的元组。

我的理解(以及过度简化了巨大)、时间的数据库记录有关的事实时的数据是有效的,以及数据本身,并允许查询的时间方面。你最终处理的'有效的时间"和"交易的时间表,或'双时态表的涉及有效的时间"和"交易的时间'的方面。你应该考虑阅读这两本书:

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

除了阅读维基百科文章之外?维护“审计日志”的数据库。或类似的事务日志将具有一些属于“时间”的属性。如果您需要回答有关谁做了什么以及何时的问题的答案,那么您就有了一个很好的时态数据库候选人。

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

尽管如此,时态数据通常只存储在普通的RDBMS中。例如,PostgreSQL有一些时间扩展,这使得这更容易。

有两个原因浮现在脑海中:

  1. 有些针对插入和只读进行了优化,可以提供显着的性能提升
  2. 有些人比传统的SQL更了解时间 - 允许按秒,分钟,小时等分组操作

只是更新,Temporal数据库即将推出SQL Server 2016。

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

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

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

查看有关如何在SQL Server 2016中使用临时表的此视频

除了"是什么新的东西我可以用它做",这可能是有用的,以考虑"是什么旧东西不统一?".时间的数据库表示特定一般化的"正常"SQL数据库。为此,它可以给你一个统一的解决方案的问题,以前出现的不相关。例如:

  • 网并发 当你的数据库有一个网用户界面,允许多个用户执行标准的创建/更新/删除(污物)修改,你必须要面对的 并发网变化问题.基本上,你需要检查一个进入的数据修改不影响任何记录已经改变,因为,用户最后一次看到那些记录。但是如果你有时间的数据库,它很可能已经同伙的东西就像一个"修订ID"每个记录(由于难以使时间戳独特和单调升).如果是这样,那么,成为自然的,"已经建立"机制对于防止会重装的其他用户的数据在数据库的更新。
  • 法律/纳税记录 法律制度(包括税)的地方,而不是更加重视对历史数据比大多数程序员做。因此,你经常会发现 咨询意见 关于架构的发票,使得警告你要小心的删除记录或正常化的以自然的方式--这可能会导致无法回答的基本法律问题"忘记他们目前的地址,什么地址你有没有邮件,该发票到2001年?" 有一个时间框架的基础,所有的阴谋诡计的那些问题(它们通常是半步骤具有时间数据库)去掉。你只是使用最自然的模式,并删除时,它是有意义的,知道你可以随时回答的历史问题的准确。

另一方面,时间模型本身就是一半,完成修订控制,这可能鼓励进一步应用。例如,假设你滚你自己的时间设施的顶部SQL并允许分支,因为在修订控制系统。即使是有限分支可能使其易于提供"沙盒"--的能力,发挥与和修改数据库与放弃,而不会造成任何明显的变化给其他用户。这使得它很容易供应高度实用的培训一个复杂的数据库。

简单的分支与一个简单的合并设施还可以简化的一些共同的工作流程问题。例如,一个非盈利性可能具有的志愿者或低薪的工人做的数据输入。给每个工作人员自己的分公司可以很容易让一个主管审查其工作或增强它的(例如,德-duplification)在合并之前成的主要分支,它将成为可见的"正常"用户。分支机构还可以简化的权限。如果一个用户是仅仅授予许可使用/看到他们独特的分支,你不必担心防止一切可能不需要修改;你只合并的变化,有意义无论如何。

我对时态数据库的理解是为了存储某些类型的时间信息。您可以使用标准RDBMS来模拟它,但是通过使用支持它的数据库,您可以使用许多概念的内置习惯用法,并且可以针对这些类型的查询优化查询语言。

对我而言,这有点像使用特定于GIS的数据库而不是RDBMS。虽然你可以在一般的RDBMS中推动坐标,但是具有适当的表示(例如,通过网格文件)可能更快,并且具有拓扑之类的SQL原语是有用的。

有学术数据库和一些商业数据库。 Timecenter有一些链接。

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

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

(话虽如此,我们用SQL手工雕刻它,但它在很久以前就是公平的。这些天不会做出那个决定。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top