我将尝试保持这个问题数据库不可知论,但我有一个有趣的问题需要解决,我想我会为建议和反馈敞开心扉。
我需要能够从提要源下载数据并将其存储在某种数据库中,数据需要合并到现有数据中,并且我需要能够查询任何给定日期的数据。这是我想谈谈的粗体部分。
本质上,这个问题归结为我需要将对象图持久化到 OLTP 数据库并能够临时查询它。
在一个表的简单情况下,这个问题非常简单,你有一个日期范围来指示记录的有效时间跨度,然后你传入一个 as of 范围,只选择在这个时间点有效的行。当您有不止一张桌子时,问题就会出现。
让我们以有两个表 Order-*Item 为例。
当我们查询订单时,我们可以将相同的日期更改应用于项目表。一切都很好,但是如果我们想修改订单会发生什么?现在我们需要复制订单行,设置日期范围,以便将新行上的有效从和新行上的有效到设置为现在。我们还必须复制项目,或者如果我们更改模型,则复制对项目的引用。
即使在这种简单的情况下,事情也开始变得复杂。
我的问题更加严重,因为我有一个自引用对象图,所以要使用上面的模型,你需要 Order-*Item-*Order。
你会怎么做?当您需要对行和时间查询进行版本控制时,您如何构建数据库?