簡體   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