假设我得到了大量(200 万行?)的数据,这些数据应该是静态和不变的。应该是。这些数据每月都会重新发布。有哪些方法可用于 1) 了解哪些数据点逐月发生了变化,以及 2) 使用给定时间点的数据?
解决方案 1) 天真地保存数据的每个快照,按日期标注。差异意识由一些内部程序处理,但按日期消耗数据是微不足道的。缺点,空间需求激增一个数量级。
解决方案 2A) 使用内部程序,跟踪差异发生的时间并将它们存储在 EAV 表中,并按日期进行注释。空间要求低,但与原始数据集成的消耗变得笨拙。
解决方案 2B) 使用内部程序,跟踪差异发生的时间并将它们存储在一个稀疏填充的表中,该表看起来很像原始表,仅填充更改的数据和更改的日期。缺点,模型稀疏,与原始数据集成的消费是不平凡的。
我想,基本上,我如何将时间维度集成到关系数据库中,同时牢记数据的查看和时间段之间差异的意识?
这是否与数据仓库有关?
闻起来像…… 缓慢变化的维度?
最佳答案
我有一个类似的问题 - 每天一次导入数据库的大平面文件。大多数数据是不变的。
向表中添加两个额外的列,starting_date 和ending_date。 end_date 的默认值应该是将来的某个时间。
要将一个文件与下一个文件进行比较,请按关键列对它们进行排序,然后从每个文件中读取一行。
重复直到读完这两个文件中的所有内容。
现在要查询在任何日期有效的行,只需在 start_date 和 end_date 之间使用 where 子句 test_date 进行选择。
关于database - 如何对随时间缓慢变化的数据建模?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/513677/