繁体   English   中英

数据库中的大量课程

[英]Large amount of timecourses in database

我有大量的数据(约400个mio数据点),这些数据按约100,000个时程进行组织。 该数据可能每天都会更改,出于修订安全的原因,必须每天存档。

显然,我们谈论的是太多数据无法有效处理的方式,因此我对样本数据进行了一些分析。 60%至80%的课程在两天之内完全不更改,而对于其余课程,只有很少量的元素会更改。 总的来说,我希望少于10个mio数据点发生变化。

问题是,我该如何利用这些知识? 我知道诸如SVN使用的Delta-Tree和类似技术之类的概念,但是我更希望数据库本身能够处理这种语义压缩。 我们正在使用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。

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

Key | Value0 | ... | Value23

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

Key | LoadID | Value0 | ... | Value23

其中LoadID或多或少是访问源数据库的时间。

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

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

其中LoadID1给我第一个载荷的ID,其中观察到24个值,而LoadID2给我给我最近的连续载荷的ID,其中观察到24个值。

在我的情况下,这会将数据库中存储的数据量减少到1/30

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM