问题标签 [temporal-database]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1630 浏览

database - 在什么情况下实际使用双时表?

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

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

是否存在使用双时态表比分别使用有效时间和事务时间状态表更方便的情况?有现实世界的例子吗?

0 投票
1 回答
457 浏览

database-design - 锚建模 - 数据类型是模型的一部分吗?

关于锚模型数据库设计中数据类型的问题。该问题假设锚模型实现与锚模型本身分离。

在 Anchor Model xml 中,我们有以下与数据类型相关的种类信息:

  • dataRange="varchar(42)"
  • identity="int"
  • timeRange="datetime"

它们存储在锚模型实体(锚/属性)xml 节点中。
例子

据我了解,数据类型不会影响锚模型,它们会影响其对特定数据库供应商的实现。甚至历史属性的时间粒度也与模型无关。

所以问题是:

  • 在元数据 xml 节点中存储数据类型信息不是更准确吗?因为它们不是模型的一部分
  • 还是我遗漏了一些东西并且数据类型必须是锚模型的一部分?为什么?
0 投票
1 回答
1048 浏览

neo4j - 用于基于事件的数据的时态图数据库

我有数据告诉我发生了特定事情的事件。

例子:

  • Box #1 在 2015-02-15 10:00 位于位置 A。
  • Box #1 已于 2015-02-15 10:15 放入 Box #2。
  • Box #2 已于 2015-02-15 11:00 放入 Box #3。
  • Box #3 于 2015-02-16 03:00 位于位置 B。
  • Box #2 已于 2015-02-16 04:30 从 Box #3 中移除。
  • Box #3 于 2015-02-16 05:00 位于位置 C。

我有三个主要要求:

  1. 我现在应该能够知道我所有的盒子在哪里查询。例如,在 2015 年 2 月 16 日 06:00 查询应该会导致。框 #1 在位置 B 的框 #2 内。框 #3 在位置 C 并且里面没有任何东西。
  2. 我应该能够看到发生在特定盒子上的一切。例如对于框 #1:

    • 2015-02-15 10:00 在 A 地
    • 在 2015-02-15 10:15 被放入 Box #2
    • 在 Box #2 内,在 2015-02-15 11:00 被放入 Box #3
    • 在 2015 年 2 月 16 日 03:00 位于位置 B 的 Box #2 内。
    • 在 2015 年 2 月 16 日 04:30 从 Box #3 中移除的 Box #2 内。
  3. 我应该能够分辨出所有盒子在特定时间的位置。例如,在 2015-02-16 10:30,Box #1 在位置 A 的 Box #2 内。

我一直在研究图形数据库,因为它们似乎比关系数据库更好地处理这种类型的关系(尝试在 Sql 中进行递归查询并不容易)。看起来我需要一个 Box 节点、一个 Location 节点和它们之间的边,用于关系“Inside”和“At”。但我不确定如何将时间要求纳入图形模型。我已经看过这个,但我不确定如何使它符合我的要求。

另请注意:这必须扩展到 1-40 亿个盒子,每个盒子包含 1 到 5000 个事件。并且能够处理数以千计的事件

0 投票
1 回答
134 浏览

r - 根据 R 中的空间邻域和时间标准将行分配给组

我有一个问题,我似乎无法解决。我有一个从 arcgis 中的栅格派生的数据集。该数据集代表了 10 年期间发生的每一次火灾。一些栅格单元在该时间段内发生了多次火灾(因此,我的数据集中将有多行),并且一些栅格单元不会发生任何火灾(因此,不会在我的数据集中表示)。因此,数据集中的每一行都有一个列号(连续整数)和一个分配给它的行号,该行号与栅格中的行和列 ID 相对应。它也有火灾的日期。

我想为fire_ID彼此相隔 4 天内以及彼此相邻像素(在 8 单元邻域内)的所有火灾分配一个唯一 ID ( ),并将其放入一个新列中。

为了澄清,如果从 2000 年 1 月 1 日第 3 行第 3 列和 2000 年 1 月 4 日第 2 行第 4 列有另一个观察,这些观察将被分配相同的fire_ID.

下面是一个示例数据集,其中“rows”是栅格的行 ID,“cols”是栅格的列 ID,“dates”是检测到火灾的日期。

我尝试按“行”、“列”、“日期”对数据进行排序并循环遍历,如果行和列 ID 在一个值内且日期在 4 天内,则创建一个新的 fire_ID,但这显然不起作用,因为fire_ID如果列表中它们之间存在属于不同的观察值,则应该为应该分配相同 fire_ID 的火灾分配不同的 s fire_ID

如果您有任何建议,请告诉我。

0 投票
1 回答
175 浏览

database-design - 主播造型——领带:做第一个角色?

与官方主播建模师相关的简短问题。
虽然建模关系可以设置角色属性,但其中一个是“第一个角色”。
“制作第一个角色”选项有什么作用?
我在 xml/sql 文件中看到它在 Tie 中交换角色顺序。
它只是纯粹的技术设置还是有商业案例?

0 投票
1 回答
56 浏览

r - 如何绘制 3 个不同区域的时间数据?

我想绘制我的时间数据,但由于某种原因我没有清楚地绘制。我使用这个功能:

但此功能不会分隔区域。

我的例子是:

0 投票
2 回答
8750 浏览

mysql - 如何在 MySQL 中实现时态数据

我目前有一个非临时 MySQL 数据库,需要将其更改为临时 MySQL 数据库。换句话说,我需要能够保留随着时间的推移对记录所做的更改历史记录,以用于报告目的。

我实现这一点的第一个想法是简单地插入表而不是更新,当我需要选择数据时,只需GROUP BY在某些列上执行 a 并按时间戳排序DESC

然而,在考虑了一下之后,我意识到这真的会把事情搞砸,因为每个插入的主键(实际上只是模拟单个记录上的多个更新)会不同,因此会搞乱任何链接使用主键链接到数据库中的其他记录。

因此,我的下一个想法是继续更新数据库中的主表,但还要在“审计表”中创建一个新的插入,它只是更新后完整记录的副本,然后当我需要报告时时态数据,我可以使用审计表进行查询。

有人可以给我一些关于如何正确执行此操作的指导或链接吗?
谢谢你。

0 投票
1 回答
355 浏览

database - 任何人都可以建议一种在 DB 中对 ATTRIBUTE(而不是 OBJECT)数据进行版本控制的方法

以 MySQL 作为示例 DB 来执行此操作(尽管在此阶段我不限于关系风格)和用于模型/数据库交互的 Java 样式语法。

我希望能够在用户编辑对象时允许对各个列值(及其相应类型)进行版本控制。这主要是为了减少频繁编辑复杂对象所需的存储量。


一个简单的例子可能是

所以我们可以将一个对象插入到数据库中,看起来像......

给我们

如果我们想更新我们可能使用的权重


显然,尽管这将覆盖数据。

我可以在这个表中添加一个修订列,它可以随着项目的保存而增加,并设置一个组合 id/version 的复合键,但这仍然意味着为每个修订存储这个对象的所有属性

但在这种情况下,我们将存储关于每一项的每一条数据。如果用户对文本字段甚至 BLOB 数据可能是对象一部分的较大对象进行较小的修改,则这不是非常有效的。


我真正想要的是能够选择性地离散存储数据,因此权重可以单独保存在单独的数据库中,从而能够引用与其相关的表、行和列。

然后可以将其与表的 VIEW 一起粉碎,这可以将单个列数据的任何后续修订强加到混合中以创建最新版本,但无需为每个小修订存储所有数据。

不确定将任何数据作为 blob 存储到然后 CAST 回原始 DTYPE 可能有多成功,但我想既然我在这里发明了功能,为什么不发疯。

这种存储方法也相当危险,因为表名和列名完全可以更改,但希望这至少概述了我正在考虑的那种行为。

0 投票
1 回答
427 浏览

sql - 为什么我会使用这些 postgresql 时态数据库模式和查询得到重复的行?

我正在关注一些关于在 postgresql 中设置时态数据库的信息。首先是问题,然后是技术位。

问题:当我在表中执行一次干净插入时public.countries,为什么我会在temporal.countries表中得到双倍的行?我只看到一个插入(在countries_ins规则中)。这是功能还是错误?

好的,现在架构:

当我将它加载到一个空白数据库并进行一次插入时,会发生这种情况(查看第 39-40 行以了解(对我而言)令人惊讶的结果)。

0 投票
1 回答
1380 浏览

teradata - 将历史数据加载到 teradata 时态表

我的任务是将现有 SQL Server 表加载到 Teradata 时态表。现有表是类型 2 表,并且有许多版本的记录。我需要将它们加载到 teradata 时态表中。我计划第一次加载版本 1,然后一一更新所有其他版本。我遇到的困难是在现有表中每条记录都有开始时间和结束时间。我需要在 teradata 时态表中更新该时间作为有效性。

第一次我正在尝试插入,而插入时我无法将结束时间插入小于当前时间。它将错误报告为“检查约束违规”。下面是用于创建表和插入的示例代码。

我尚未测试更新,因为无法执行第一步。

反正有没有给结束时间小于当前日期。任何方式来禁用此约束一段时间然后启用。

请帮忙。谢谢!