问题标签 [bi-temporal]

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 投票
0 回答
548 浏览

postgresql - 有没有人使用 temporal_tables 和/或 pg_partman 在 PostgreSQL 数据库上实现双时态表?

我试图弄清楚如何在 PostgreSQL 数据库上为产品目录实现双时态表。随着时间的推移,目录表可能会变得非常大。对于“今天产品 x 的价格是多少”和“一周前产品 x 的价格是多少”等频繁查询,我想获得非常好的性能。我想在“两个月前产品 x 的价格是多少”之类的查询中取得良好的性能。我还需要能够回答诸如“两周前我是怎么想的,在那之前三周产品 x 的价格是多少”(因此是双向的)之类的问题。因此,我也在考虑对数据进行分区。

我确实找到了https://pgxn.org/dist/temporal_tables/来帮助实现的系统时间方面(业务时间将是“手动”)和https://github.com/keithf4/pg_partman用于分区,但我想知道这两者是否可以很好地协同工作和/或是否有人成功使用了这些(或替代品)。

0 投票
1 回答
324 浏览

sql - 具有多个连接的业务时间(db2 中的时间逻辑)

我正在使用 DB2 及其特性“时间逻辑”(如果您对该主题感兴趣 - https://www.ibm.com/developerworks/data/library/techarticle/dm-1204db2temporaldata/index.html给出了介绍) . 我收到了一个关于我目前无法理解的问题的问题:

这个例子可以很好地工作:

但是如果我想加入更多的表,我会收到语法错误的错误。并且没有关于如何做到这一点的示例(阅读:我找不到示例)。

是的,我知道如何避免此“功能”,并使其与子选择一起使用。甚至在这之间date_fromdate_to无济于事。因为这BUSINESS_TIME不是平等date_to的。

就我而言,类似:

不起作用。

DB2 中的更新应该是这样的:

提前非常感谢!

0 投票
2 回答
53 浏览

marklogic - 在 Marklogic 9 中更新 MarkLogic 8 摄取的双时态文档

有没有办法在 Marklogic-9 中更新在 MarkLogic-8 中摄取的双时态文档?目前,临时更新 API 仅适用于在 ML-9 或更高版本中提取的文档。请建议。正在生成以下错误:

未找到元数据 TemporalDocURI。时间节点更新内置仅适用于使用 ML9 或更高版本创建的时间文档

0 投票
1 回答
269 浏览

nosql - 如何从 MarkLogic 数据库中物理删除临时文档?

我遇到了时间函数“ temporal.documentDelete ”,它“逻辑删除” MarkLogic 数据库中的时间文档,从而将其从最新集合中删除。但该文档仍未从 MarkLogic 数据库中物理删除。您仍然可以使用其 URI 检索已删除的文档。

有什么方法可以在物理上删除提取到我的 MarkLogic 数据库中的临时文档?

0 投票
1 回答
340 浏览

sql-server-2016 - 为什么时态表中的结束日期是最大系统时间而不仅仅是 NULL

我们正在考虑为我们的一些表实现双时间解决方案,因为它们必须记录应用程序时间和系统时间。

我知道 SQL 2016 仅对系统时间组件具有原生支持,因此我们会将表转换为临时表并修改我们现在拥有的内容以创建功能齐全的双时间解决方案。

我的问题是关于一致性。时态表的系统时间结束日期组件设置为 9999-12-31 23:59:59.9999999,所以我认为将我们的应用程序/有效时间结束日期也设置为 9999-12- 是个好主意31 23:59:59.9999999。

但是,有人问我“为什么我们不能将其设置为 NULL 以表示主表中的句点没有结束?”

那为什么呢?为什么 MS 选择使用 9999-12-31 23:59:59.9999999 而不是 NULL?

是否像使查询(可能)更容易编写一样简单?我猜 BETWEEN 对两个实际日期值的效果更好,但我想不出更多。

0 投票
2 回答
487 浏览

sql-server-2016 - 申请时间段表

我正在为我们的一些表实现双时态解决方案,使用本机时态表功能,以及一些自定义列和代码来处理应用程序/有效时间。

但是,我偶然发现了对 SQL:2011 标准中的内容的引用:

来自维基百科

截至 2011 年 12 月,ISO/IEC 9075,数据库语言 SQL:2011 第 2 部分:SQL/Foundation 在表定义中包含子句以定义 “应用程序时间段表”(有效时间表)、“系统版本表”(事务时间表)和 “系统版本化的应用程序时间段表”(双时态表)

这个pdf实际上有执行此操作的代码(应用程序时):

此代码不会在 SSMS 中运行。现在有什么改变导致这个无效的 SQL 吗?看起来以前对应用程序时间/双时态表的无证支持现在已被删除?

0 投票
1 回答
122 浏览

marklogic - 仅从双时集合中删除存档数据

MarkLogic 版本:9.0-6.2

我正在使用双时态数据管理,并且只想删除(物理删除而不是逻辑删除)从时态收集中超过 2 个月的存档数据。最新版本的文档应该保留在最新的收集中。

我尝试过 temporal:document-delete,它从最新集合中删除最新版本的文档,并且只在逻辑上删除文档。

并且 temporal:document-wipe 删除文档的所有版本。但我想在最新集合中保留最新版本,并仅物理删除超过 2 个月的存档版本。

0 投票
1 回答
65 浏览

xsd - 在 MarkLogic 中是否有用于查询双时态数据的最佳时间戳格式?

我有两种存储在一个集合中的 validStartDtTm(validAxes 的名称)日期格式。我想将所有日期统一为一种统一格式,并想知道 MarkLogic 中是否有任何双时态日期格式的最佳实践。

当前格式如下:

  1. 2019-04-09T10:54:37.861434Z - 由前端用户生成,无需转换即可存储

  2. 2019-04-09T10:54:37.8614534-04:00 - 从后端摄取,格式为“DD/MM/YYYY HH:MM:SS”并使用 xdmp.parseDateTime 进行转换

谢谢!

0 投票
1 回答
101 浏览

postgresql - 在 PostgreSQL for Windows 中安装 temporal_tables 和 cyanaudit 扩展

我有一个审计和渐变维度 (SCD) 用例,需要安装 PostgreSQL temporal_tablescyanaudit扩展。

但是我的 PostgreSQL 服务器是在 Windows 上的,在搜索了高和低之后,我仍然没有找到在 PostgreSQL for Windows 中安装这些扩展的方法。

有没有人成功地在 Windows 环境中安装这些扩展,你能分享你的方法吗?

太感谢了,

丹尼尔

0 投票
1 回答
195 浏览

sql - 双时态 SQL 表查询

我正在尝试建模一个 SQL 表来存储员工的工资变化。一种方法是使用双时表,如下所示:

双时表

在这里,一名员工于 2015 年 10 月 1 日被聘用,工资为 100,000。然后在 2016 年 2 月 15 日,他进行了一次绩效评估,他的老板说:“我们将把你的薪水提高到 110,000,从今年开始(2016 年 1 月 1 日)。

为了存储这些信息,我使用了两组日期范围。“有效”告诉您工资何时有效,例如 2016 年 1 月 1 日之前的 10 万美元和从那时起的 11 万美元。另一方面,“已结算”范围表示做出决定的时间,在本例中为 2016 年 2 月 15 日。因此,我应该能够查询以下场景:

  • 他在 2015 年 12 月的薪水是多少,看看薪水审查后的那一刻 = 旧薪水
  • 他在 2016 年 1 月 2 日的工资是多少,在他接受审查之前 = 旧工资(因为员工还不知道加薪)
  • 审核后他在 2016 年 1 月 2 日的薪水是多少 = 新薪水(因为员工现在知道加薪了)
  • ETC

看来我有两个变量:有效的,和解决的。但是,我正在努力想出一个能够产生正确结果的 SQL 查询。

这是我迄今为止尝试过的(不适用于所有场景):

理想情况下,我需要一个适用于所有场景并且每次只生成一个结果行的 SQL 查询。任何帮助是极大的赞赏。对表格设计的任何改进也是如此。