问题标签 [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.
db2 - 基于某些标准的 IBM DB2 Timetravel 日志记录
我一直在寻找条件,假设我们启用时间旅行到 DB2 中的某个表,但不想捕获所有完成的更新,而只想捕获某个特定用户完成的更新。
想知道 DB2 时间旅行是否有可能实现这一点,以及我们如何实现它。
sql-server-2016 - 申请时间段表
我正在为我们的一些表实现双时态解决方案,使用本机时态表功能,以及一些自定义列和代码来处理应用程序/有效时间。
但是,我偶然发现了对 SQL:2011 标准中的内容的引用:
来自维基百科:
截至 2011 年 12 月,ISO/IEC 9075,数据库语言 SQL:2011 第 2 部分:SQL/Foundation 在表定义中包含子句以定义 “应用程序时间段表”(有效时间表)、“系统版本表”(事务时间表)和 “系统版本化的应用程序时间段表”(双时态表)
这个pdf实际上有执行此操作的代码(应用程序时):
此代码不会在 SSMS 中运行。现在有什么改变导致这个无效的 SQL 吗?看起来以前对应用程序时间/双时态表的无证支持现在已被删除?
r - 是否可以将两个 .csv 文件合并到最近的小时?
我有两个名为“tag.csv”和“wind.csv”的 .csv 文件,我想根据“日期”列进行合并。但是,正如您从下面的数据中看到的那样,时间并不完全匹配。
标签.csv
风.csv
我正在使用以下简单脚本。
有没有我可以添加的命令,以便数据与最接近的时间合并?例如,13/12/2014 05:11 将与 13/12/2014 05:00 合并
sql-server - 将历史数据添加到系统版本化的时态表 (SQL Server 2017)
我在 SQL Server 2017 中有一个系统版本的时态表。我需要向其中添加与表中已有数据具有相同主键的数据,但我不想将当前表数据发送到历史表。本质上,我想将数据直接添加到历史表中,因为我正在尝试将历史数据添加到我的数据库中。有没有办法做到这一点?
scikit-learn - sklearn 随机森林搜索将预测连续时间变量的模型的模型参数
我正在尝试预测应该预测连续变量的随机森林 RandomizedSearchCV 的最佳参数。
我一直在研究以下方法,特别是更改评分函数并最终解决回归逻辑函数median_absolute_error。但是,我认为KFold交叉验证不适合我的数据,但我不明白如何使用可迭代的 cv(例如, https: //scikit-learn.org/stable/modules/generated/ sklearn.model_selection.RandomizedSearchCV.html)因为我无法在RandomizedSearchCV之前运行(据我所知)拟合和预测我的模型
此外,使用当前的方法,我得到了对未来几个日期的样本外时间数据预测的相同连续值(图表上的不同颜色):
关于这个问题的文档非常详细,但我觉得它太详细了。我只是迷路了。也许有人可以指出正确的方向?
django - 时态数据库的 Django 自定义创建管理器逻辑
我正在尝试开发一个 Django 应用程序,该应用程序具有围绕对象的时间状态的内置逻辑。希望能够拥有一个代表资源的单一对象,同时让该资源的属性能够随着时间而改变。例如,所需的用例是owner
在任何给定时间(去年、昨天、明天、明年……)查询资源。
这是我正在使用的...
我觉得我将不得不创建一个自定义界面来与这种状态进行交互。一些示例用例(界面完全悬而未决)......
我觉得进行创建需要大量的自定义逻辑。我想强制规定对于任何给定的时间点,只有一个人ResourceState
可以在 a 上处于活动状态。Resource
这意味着要创建一些ResourceState
对象,我需要调整/删除其他对象。
我知道我将不得不围绕定义逻辑做大部分的跑腿工作,但是有什么直观的地方应该放在哪里吗?Django 是否为我提供了一个简单的地方来创建这些方法?如果是这样,应用它们的最佳位置在哪里?反对Resource
对象?使用自定义Manager
来处理与相关“ResourceState”对象的交互?
重新阅读上面的内容有点混乱,但这也不是一个简单的话题!!如果有人对如何执行上述操作有任何想法,请告诉我!
万分感谢!
database - 数据库表行的“版本控制”概念(不是指在 GIT/SVN 中存储脚本)
我需要一个数据存储,它不仅要维护对数据所做的更改的历史记录(很容易做到),还要存储对数据的任意数量的提议更改,包括链式提案(即提案提案)。
将这些“更改”视为真正长时间运行的事务,这些事务被保存到数据库中,并且具有几分钟到几年的生命周期。
它们被创建(提议),然后回滚(基本上删除)或提交,当提交时,它们成为对第 3 方可见的有效数据。
当然,这一切都需要某种形式的冲突解决,因为提议的更改可能处于相互矛盾的状态(例如,更改 A 建议删除记录,但更改 B 建议更新它 - 如果首先提交更改 A,那么更改 B 将不得不恢复)
我发现没有现成的产品可以做到这一点。最接近的是 Oracle Workspace Manager,但它不提供 change-on-change 或查看建议删除的功能。我能够做到这一点的唯一方法是在我的版本化表上有一组公共列:
根 ID:必需 - 在创建记录的第一个版本时设置一次与主键相同的值。这代表了所有时间的主键,并被复制到记录的每个版本中。命名关系列时应考虑根 ID(例如 PARENT_ROOT_ID 而不是 PARENT_ID)。由于根 ID 也是初始版本的主键,因此可以根据实际主键创建外键 - 实际所需的行将由下面定义的版本过滤器确定。
更改 ID:必需 - 通过更改创建、更新、删除每条记录
Copied From ID : Nullable - null 表示新创建的记录,not-null 表示该行在更新/删除时是从哪个记录 ID 克隆/分支的
从日期/时间开始生效:可为空 - 空表示建议的记录,非空表示记录何时成为当前记录。不幸的是,不能在 Root ID/Effective From 上放置唯一索引,因为任何 Root ID 都可以有多个空值。(除非您想将自己限制为每条记录的单个建议更改)
生效日期/时间:可为空 - 空表示当前或建议,非空表示何时成为历史。技术上不需要,但有助于加快查找当前数据的查询。此字段可能会被手动编辑损坏,但如果发生这种情况,可以从生效日期/时间重建。
删除标志:布尔值 - 当建议在成为当前记录时删除记录时设置为 true。提交删除时,它们的生效日期/时间设置为与生效日期/时间相同的值,将它们从当前数据集中过滤掉。
在某个时间点获取当前数据状态的查询将是;
根据更改获取数据当前状态的查询将是;
请注意,此第二个查询包含第一个基于时间的查询,以将当前数据与建议的更改数据重叠。
更改 ID 列是指更改表的主键,该表还包含提供更改时更改功能的父 ID 列(可为空)。因此,第二个查询指的是更改 ID ,而不是单个更改 ID。我在客户端的 change-on-change 场景中过滤多个版本,而不使用 SQL,因此在这些查询中看不到它(客户端在内存中有一个更改 ID 的链接列表,如果检索到超过 1 个版本的行它使用链表来确定使用哪个版本)。
有人知道我可以使用的现成产品吗?我自己处理这个版本控制并引入了各种问题是大量的工作。
java - 使用 JPA 持久化一个时间集合
我需要使用 JPA 坚持一个随时间变化的集合的集合。
假设我一次Customer
制作多个 Orders
,我需要以下操作:
具有类似的结构
并以客户为
orders
我需要使用 JPA来坚持这个领域,但我不知道该怎么做。
过去,当我问如何处理时间属性时,有人建议我看一下DaoFusion 框架,其中包括Erwin Vervaet的双时间模式,但据我了解,它只能用于映射双时间属性(不是集合),因为映射是 OneToMany,所以第二面必须是单个值。
DaoFusion 的双时态模式部分显示的示例确实显示了一个与我类似的 Customer 和 Orders 示例,但据我了解,一次只能有一个订单,而不是订单集合。
我是否正确理解了该代码?
如何使用 JPA 处理时间集合?(我只需要有效时间,我不需要记录时间的双时态解决方案)
编辑:问题已更新,添加了 Customer 和 TemporalSet 的字段
mariadb - 备份 MariaDB 时态数据库
通常,我对Temporal Database功能感到兴奋。
但是,数据库导出和还原不支持 mysqldump。
我在文档(链接到上面)中找不到任何资源来指示哪些备份和还原方法可以安全地用于此类数据库。谷歌搜索似乎没有帮助。
有人对在生产环境中使用这些 MariaDB 时态数据库有任何见解吗?或者更具体地说,在开发环境中使用它们,然后将数据库转移到生产环境并仍然保持数据库的历史完整?
我理解这是一个开发运维问题,但如何使用和围绕这个新功能似乎是一个非常核心的问题。是否有人对移动这些数据库并在生产中依赖该过程有见解?只是想知道这项技术有多成熟,因为文档中没有涵盖这个问题(这似乎很重要)。
mysql - 查询以在记录“开始”和“停止”日期的表中查找给定日期的活动记录
我有一个记录在表格中的“开始/停止”活动列表,每个活动都与一个日期相关联。我需要确定哪些用户在特定日期“开始” - 即正在进行任务。我当前的设置和查询可以用这个简单的视图来表示:
然后我运行这个查询:
(见http://sqlfiddle.com/#!9/c8d371/1/0)
通过更改查询中的日期,该查询返回一个用户 ID 列表,告诉我谁在该特定日期参与(即已开始一项任务)。但是,用户被认为(在现实生活中)在他们停止任务的实际日期参与了任务。此查询不允许这样做,因为如果您要更改查询中的日期以反映用户 1 停止的日期 2020-01-19,则查询将仅返回用户 2。
我尝试将<=
条件更改为 strict <
,虽然这解决了问题的一部分,但用户在开始的那天并不被认为是忙碌的。使用严格<
的 '2019-01-25' 仅返回用户,而我希望两个用户都出现。
在这一点上,我唯一“可行”的解决方案是将两个版本的查询的结果合并(以DISTINCT
/UNION
查询的形式),但我不禁认为必须有更有效的方式获得我需要的结果。