一種獲取截面數(shù)據(jù)的方法和系統(tǒng)的制作方法
【技術領域】
[0001]本申請涉及數(shù)據(jù)處理領域,特別是涉及一種獲取截面數(shù)據(jù)的方法和系統(tǒng)。
【背景技術】
[0002]隨著計算機技術的發(fā)展,以及互聯(lián)網(wǎng)和大數(shù)據(jù)技術的廣泛應用,需要存儲和處理的數(shù)據(jù)越來越多。并且,在數(shù)據(jù)存儲的過程中,經(jīng)常會出現(xiàn)數(shù)據(jù)字段的變化。為了充分利用數(shù)據(jù),出現(xiàn)了越來越多的管理數(shù)據(jù)的需求,例如,查詢某一日期的截面數(shù)據(jù)。
[0003]現(xiàn)有技術在數(shù)據(jù)歸檔的過程中,數(shù)據(jù)管理系統(tǒng)的主檔表中的數(shù)據(jù)通常是多日數(shù)據(jù)混合存儲,為了滿足用戶的查詢某一日期的截面數(shù)據(jù)的需求,現(xiàn)有技術通常的做法是:為每個需要查詢的日期保存一個全量數(shù)據(jù)。
[0004]很顯然,現(xiàn)有技術提供全種做法的缺陷是:數(shù)據(jù)管理系統(tǒng)每日保存一份全量數(shù)據(jù),其中有些數(shù)據(jù)是沒有變化的,浪費了大量存儲空間。
【發(fā)明內(nèi)容】
[0005]本申請所要解決的技術問題是提供一種獲取截面數(shù)據(jù)的方法和系統(tǒng),能夠快速地提供用戶查詢的截面數(shù)據(jù),并且能夠節(jié)省存儲空間。
[0006]為了解決上述問題,本申請公開了一種獲取截面數(shù)據(jù)的方法,包括:
[0007]確定計算截面數(shù)據(jù)的起始時間點,所述起始時間點為查詢時間點之前且距離所述查詢時間點最近的初始量數(shù)據(jù)或全量數(shù)據(jù)的時間點;
[0008]獲取所述起始時間點和用戶輸入的查詢時間點之間的所有歸檔數(shù)據(jù),所述歸檔數(shù)據(jù)至少包括標識所述歸檔數(shù)據(jù)的主鍵值;
[0009]根據(jù)所述主鍵值對獲取的所述所有歸檔數(shù)據(jù)分組;
[0010]分別確定每組歸檔數(shù)據(jù)中的最新數(shù)據(jù)變化時間點,遍歷所有所述最新數(shù)據(jù)變化時間點對應的歸檔數(shù)據(jù),將其中屬性為初始量或全量或增量的所述歸檔數(shù)據(jù)作為所述查詢時間點的截面數(shù)據(jù)。
[0011]其中,歸檔數(shù)據(jù)的屬性包括:初始量、全量、增量、減量,不同屬性的歸檔數(shù)據(jù)分別存儲。
[0012]優(yōu)選的,在得到所述查詢時間點的截面數(shù)據(jù)之后,所述方法還包括:緩存所述查詢時間點的截面數(shù)據(jù)。所述方法還包括:根據(jù)所述查詢時間點的查詢概率確定是否緩存該查詢時間點對應的截面數(shù)據(jù)。
[0013]在確定計算截面數(shù)據(jù)的起始時間點之前,所述方法還包括:判斷是否緩存有指定的查詢時間點對應的截面數(shù)據(jù),若有,則返回緩存的所述截面數(shù)據(jù)。
[0014]優(yōu)選的,所述方法還包括:根據(jù)所述截面數(shù)據(jù)的讀取頻率,動態(tài)調(diào)整所述截面數(shù)據(jù)的緩存期。
[0015]相應地,本申請實施例還公開了一種獲取截面數(shù)據(jù)的系統(tǒng),包括:
[0016]起始時間確定模塊,用于確定計算截面數(shù)據(jù)的起始時間點,所述起始時間點為查詢時間點之前且距離所述查詢時間點最近的初始量數(shù)據(jù)或全量數(shù)據(jù)的時間點;
[0017]歸檔數(shù)據(jù)獲取模塊,用于獲取所述起始時間點和用戶輸入的查詢時間點之間的所有歸檔數(shù)據(jù),所述歸檔數(shù)據(jù)至少包括標識所述歸檔數(shù)據(jù)的主鍵值;
[0018]分組模塊,用于根據(jù)所述主鍵值對獲取的所述所有歸檔數(shù)據(jù)分組;
[0019]數(shù)據(jù)選擇模塊,用于分別確定每組歸檔數(shù)據(jù)中的最新數(shù)據(jù)變化時間點,遍歷所有所述最新數(shù)據(jù)變化時間點對應的歸檔數(shù)據(jù),將其中屬性為初始量或全量或增量的所述歸檔數(shù)據(jù)作為所述查詢時間點的截面數(shù)據(jù)。
[0020]在另一實施例中,所述系統(tǒng)還包括:緩存模塊,用于在得到所述查詢時間點的截面數(shù)據(jù)之后,緩存所述查詢時間點的截面數(shù)據(jù)。
[0021]在另一實施例中,還包括:判斷模塊,用于在確定計算截面數(shù)據(jù)的起始時間點之前,判斷是否緩存有指定的查詢時間點對應的截面數(shù)據(jù),若有,則返回緩存的所述截面數(shù)據(jù)。
[0022]優(yōu)選的,所述系統(tǒng)還包括:緩存管理模塊,用于根據(jù)所述截面數(shù)據(jù)的讀取頻率,動態(tài)調(diào)整所述截面數(shù)據(jù)的緩存期。
[0023]本申請公開的獲取截面數(shù)據(jù)的方法和系統(tǒng),通過選擇距離所述查詢時間點最近的初始量數(shù)據(jù)或全量數(shù)據(jù)的時間點作為計算截面數(shù)據(jù)的起始時間點,確定了一個盡量小的截面數(shù)據(jù)計算范圍,然后,獲取所述起始時間點和用戶輸入的查詢時間點之間的所有歸檔數(shù)據(jù),并根據(jù)所述主鍵值對獲取的所述所有歸檔數(shù)據(jù)分組;進一步選擇每組數(shù)據(jù)中最新的、屬性為初始量或全量或增量的歸檔數(shù)據(jù)作為所述查詢時間點的截面數(shù)據(jù)。與現(xiàn)有技術相比,不需要為每個時間點保存一份全量數(shù)據(jù),節(jié)省了存儲空間。
【附圖說明】
[0024]圖1是本申請獲取截面數(shù)據(jù)的方法一實施例的流程示意圖;
[0025]圖2是本申請獲取截面數(shù)據(jù)的方法另一實施例的流程示意圖;
[0026]圖3是本申請一具體實施例中的歸檔數(shù)據(jù);
[0027]圖4是對圖3的歸檔數(shù)據(jù)計算得到的截面數(shù)據(jù);
[0028]圖5是本申請獲取截面數(shù)據(jù)的系統(tǒng)一個實施例的結(jié)構(gòu)示意圖;
[0029]圖6是本申請獲取截面數(shù)據(jù)的系統(tǒng)另一個實施例的結(jié)構(gòu)示意圖。
【具體實施方式】
[0030]為使本申請的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和【具體實施方式】對本申請作進一步詳細的說明。
[0031]為了便于閱讀者理解本申請,首先對本申請中涉及的技術術語進行介紹。數(shù)據(jù)歸檔過程中,數(shù)據(jù)存儲類型包括:主檔表和明細表,其中,主檔表是反映客觀事實主體屬性的表,產(chǎn)生新主體時會增加到主檔信息,主體發(fā)生變更時會修改主檔信息,主體消失時會刪除或標記主檔信息;明細表是反映客觀事實主體歷史變化情況的表。根據(jù)數(shù)據(jù)產(chǎn)生的時機,歸檔數(shù)據(jù)又有如下屬性:初始量、增量、減量、全量。其中,增量數(shù)據(jù):相對最近一次提取數(shù)據(jù)后增加、修改的數(shù)據(jù);減量數(shù)據(jù):相對最近一次提取數(shù)據(jù)后刪除的數(shù)據(jù);全量數(shù)據(jù):某張表的全部數(shù)據(jù);初始量數(shù)據(jù):某張表首次卸載提供的數(shù)據(jù);截面數(shù)據(jù):主檔表某個特定時間點(通常是特定日)的全量數(shù)據(jù)。
[0032]本申請中提及的“源系統(tǒng)”指數(shù)據(jù)產(chǎn)生系統(tǒng),本申請獲取截面數(shù)據(jù)的方法應用于數(shù)據(jù)管理系統(tǒng)。數(shù)據(jù)管理系統(tǒng)用于相應源系統(tǒng)等其他系統(tǒng)的請求,實現(xiàn)數(shù)據(jù)的歸檔存儲、管理、查詢等功能。
[0033]參照圖1,示出了本申請一種獲取截面數(shù)據(jù)的方法,包括如下步驟:
[0034]步驟110,確定計算截面數(shù)據(jù)的起始時間點,所述起始時間點為查詢時間點之前且距離所述查詢時間點最近的初始量數(shù)據(jù)或全量數(shù)據(jù)的時間點;
[0035 ]步驟120,獲取所述起始時間點和用戶輸入的查詢時間點之間的所有歸檔數(shù)據(jù),所述歸檔數(shù)據(jù)至少包括標識所述歸檔數(shù)據(jù)的主鍵值;
[0036]步驟130,根據(jù)所述主鍵值對獲取的所述所有歸檔數(shù)據(jù)分組;
[0037]步驟140,分別確定每組歸檔數(shù)據(jù)中的最新數(shù)據(jù)變化時間點,遍歷所有最新數(shù)據(jù)變化時間點對應的歸檔數(shù)據(jù),將其中屬性為初始量或全量或增量的所述歸檔數(shù)據(jù)作為所述查詢時間點的截面數(shù)據(jù)。
[0038]截面數(shù)據(jù)是主檔表某個特定時間點的全量數(shù)據(jù),因此,上述步驟110中,需要從查詢的截面數(shù)據(jù)對應的時間點起,向前搜索歷史數(shù)據(jù),找出主檔表中的所有數(shù)據(jù)。為了提高查找效率,不需要遍歷所有歸檔數(shù)據(jù),僅需要找到最近一次卸載的初始量數(shù)據(jù)或全量數(shù)據(jù)即可,并將最近一次卸載的初始量數(shù)據(jù)或全量數(shù)據(jù)的時間點作為截面數(shù)據(jù)計算區(qū)間的起始時間點T1。
[0039]若沒有找到初始量數(shù)據(jù)或全量數(shù)據(jù),則將最早一條數(shù)據(jù)的時間點作為截面數(shù)據(jù)計算區(qū)間的起始時間點,即需要將查詢的截面數(shù)據(jù)對應的時間點之前的所有數(shù)據(jù)進行截面數(shù)據(jù)計算。
[0040]截面數(shù)據(jù)是主檔表某個特定時間點的全量數(shù)據(jù),在需要查詢截面數(shù)據(jù)時,用戶會指定查詢時間點T2。在上述步驟120中,將步驟110確定的計算截面數(shù)據(jù)的起始時間點T1和用戶指定的查詢時間點T2作為截面數(shù)據(jù)查詢時間區(qū)間[ΤΙ,T2],獲取該時間區(qū)間[ΤΙ,T2]內(nèi)的所有歸檔數(shù)據(jù){DATA(t) I te [ΤΙ,T2]}。歸檔數(shù)據(jù)通常以二維表的形式存儲,至少包括主鍵值列,還可以包括其他相關列。主鍵值是唯一標識歸檔數(shù)據(jù)的,通過主鍵值可以區(qū)分不同的歸檔數(shù)據(jù)。通常,主檔表中包括多個主鍵值。
[0041]在步驟130中,根據(jù)所述主鍵值對獲取的所述所有歸檔數(shù)據(jù){DATA(t)te[Tl,T2]}分組,每一個主鍵值對應的數(shù)據(jù)劃分為一組,每一數(shù)據(jù)組中可以包含多條數(shù)據(jù),分別記錄該主鍵值對應的數(shù)據(jù)的歷史變化情況。例如,主鍵值為“CPU利用率”,這一數(shù)據(jù)組中包含不同日期的CHJ利用率;主鍵值為