1

我有相当多的数据(约 400 个 mio 数据点),它们组织在一组约 100,000 个时间课程中。该数据可能每天都在变化,出于修订安全的原因,必须每天存档。

显然我们在谈论太多数据无法有效处理,所以我对样本数据进行了一些分析。大约。两天之间,60% 到 80% 的课程完全没有变化,其余的只有非常有限的元素变化。总而言之,我预计少于 10 个 mio 数据点的变化。

问题是,我如何利用这些知识?我知道 SVN 使用的 Delta-Trees 和类似技术之类的概念,但是我更愿意,如果数据库本身能够处理这种语义压缩。我们使用 Oracle 11g 进行存储,问题是,有没有比自制解决方案更好的方法?

澄清

我说的是代表每小时能量流的时间进程。这样的时间进程可能开始于过去(如 2005 年),每年包含 8760 个元素,并且可能在 2020 年之前的任何时间结束(目前)。每个时间课程由一个唯一的字符串标识。

课程本身或多或少有些无聊:“Course_XXX: 1.1.2005 0:00 5; 1.1.2005 1:00 5;1.1.2005 2:00 7,5;...”

我的任务是使这些课程中的日常更改可见,为此,必须每天在给定时间拍摄快照。我的希望是,一些无损语义压缩将使我免于每天归档约 20GB。

4

1 回答 1

0

基本上我的源数据如下所示:

Key | Value0 | ... | Value23

要存档该数据,我需要添加一个附加维度,该维度直接或间接告诉我从源系统加载数据的时间,因此我的存档数据库是

Key | LoadID | Value0 | ... | Value23

LoadID访问源数据库的时间或多或少在哪里。

现在,我的场景中的压缩很容易。LoadIDs 每次运行都在增长,我可以给出一个范围,即

Key | LoadID1 | LoadID2 | Value0 | ... | Value23

其中 LoadID1 给了我第一个负载的 ID,其中观察到了 24 个值,LoadID2 给了我最后一个连续负载的 ID,其中观察到了 24 个值。

在我的场景中,这将存储在数据库中的数据量减少到 1/30

于 2013-05-09T19:33:15.537 回答