Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 数据库中的大量时间进程_Database_Oracle_Compression - Fatal编程技术网

Database 数据库中的大量时间进程

Database 数据库中的大量时间进程,database,oracle,compression,Database,Oracle,Compression,我有一个相当大的数据量(~4亿个数据点),它被组织在一组~100000个时间进程中。这些数据可能每天都在变化,出于修订安全的原因,必须每天存档 显然,我们谈论的是太多的数据无法有效处理,所以我对样本数据进行了一些分析。大约60%到80%的课程在两天之间根本没有变化,其余的课程只有非常有限的内容变化。总而言之,我预计数据点的变化不会超过1000万个 问题是,我如何利用这些知识?我知道SVN使用的Delta树和类似技术等概念,但是如果数据库本身能够处理这种语义压缩,我更愿意这样做。我们正在使用Ora

我有一个相当大的数据量(~4亿个数据点),它被组织在一组~100000个时间进程中。这些数据可能每天都在变化,出于修订安全的原因,必须每天存档

显然,我们谈论的是太多的数据无法有效处理,所以我对样本数据进行了一些分析。大约60%到80%的课程在两天之间根本没有变化,其余的课程只有非常有限的内容变化。总而言之,我预计数据点的变化不会超过1000万个

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

澄清

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

这些课程本身多少有些枯燥: “课程XXX:1.1.2005 0:005;1.1.2005 1:005;1.1.2005 2:007,5;…”


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

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

Key | Value0 | ... | Value23
为了归档这些数据,我需要添加一个额外的维度,它直接或间接地告诉我从源系统加载数据的时间,因此我的归档数据库是

Key | LoadID | Value0 | ... | Value23
其中
LoadID
或多或少是访问源数据库的时间

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

Key | LoadID1 | LoadID2 | Value0 | ... | Value23
其中,LoadID1给出了观察到的24个值所在的第一个载荷的ID,LoadID2给出了观察到的24个值所在的最后一个连续载荷的ID


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

您能找到给定时间过程的“最后”值吗?您能提供一个“时间进程”中的数据示例吗?另外-您的记录总数是4亿条,还是每天有4亿条?总共4亿条,但它们必须每天存档以使更改可见。数据库本身不是修订安全的,所以我只能看到课程的当前值。