麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

基于周期對數的二維時序數據存儲和查詢方法

文檔序號:6511940閱讀:286來源:國知局
基于周期對數的二維時序數據存儲和查詢方法
【專利摘要】本發明公開了一種基于周期對數的二維時序數據存儲和查詢方法,主要特點如下:(1)多級目錄式結構;(2)將周期取對數作為索引;(3)按起始結束時間進行分塊。本發明能夠實現大量數據的分塊存儲,在使用較小內存的情況下仍能正常工作,并且此結構在兩個維度上具有很高的存儲和查詢效率,為大數據提供了一種新型的快速存儲和查詢方法。
【專利說明】基于周期對數的二維時序數據存儲和查詢方法
【技術領域】
[0001]本發明涉及一種基于周期對數的二維時序數據存儲和查詢方法,適用于時序數據存儲和查詢【技術領域】。
【背景技術】
[0002]二維時序數據主要來自于一類按照時間周期返回數據的傳感器,這類傳感器會被安裝在需要實時監測的設備上,比如儀表盤、鍋爐等,通過傳感器傳回監測設備的屬性數據,比如某一時刻的溫度、鍋爐的壓力等,系統可以完整的記錄下設備的整個運行狀況,在設備出現問題時可以通過歷史記錄進行問題分析和問題定位。當前的應用發展趨勢表明,被監測個體的數目正在迅速增長,同時隨著技術的進步以及應用的需求,數據回傳的周期也越來越短。對于大量二維時序數據,要進行兩個維度的快速存儲和查詢,傳統的樸素方法在數據量激增的時候,在某一維度上的查詢將進行很多I/o操作,效率非常低。由于時序數據量通常非常之大,為每個數據都建立索引空間很不現實,為此,我們設計一種基于周期對數的二維數據存儲方法,建立索引,提高查詢效率。

【發明內容】

[0003]發明目的:針對現有技術中存在的問題,本發明提供一種基于周期對數的二維時序數據存儲和查詢方法,通過設計基于周期對數的數據存儲結構,建立索引,實現對時序數據的二個維度的插入與查詢功能。為了便于說明,此處說明一下應用背景:有若干個設備,分別按一定周期產生數據。查詢某一設備一段時間內的數據稱為批量查詢,查詢某一時間點,一批設備的數據稱為斷面查詢;批量提交和斷面提交即為對應的插入操作。
[0004]技術方案:一種基于周期對數的二維時序數據存儲和查詢方法,采用分塊存儲,其主要存儲特點如下:
[0005](I)采用多級目錄結構:最底層為一個數據塊,多個數據塊構成一個節點,多個節點串成一條鏈;
[0006](2)每條鏈有個唯一參數t,只存儲周期在[2\ 2t+1)上的數據;
[0007](3)在參數為t的鏈上的節點有個唯一的參數i,只存儲周期在[(1-l)*I*2t+1,i*I*2t+1)上的數據(其中I為常數)。
[0008]本發明采用上述技術方案,具有以下有益效果:通過設計基于周期對數的數據存儲結構,建立索引,能夠實現大量數據的分塊存儲,在使用較小內存的情況下仍能正常工作,并且此結構在兩個維度上具有很高的存儲和查詢效率。
【專利附圖】

【附圖說明】
[0009]圖1是數據存儲結構圖;
[0010]圖2是索引結構圖;
[0011]圖3是批量查詢算法流程圖。【具體實施方式】
[0012]下面結合具體實施例,進一步闡明本發明,應理解這些實施例僅用于說明本發明而不用于限制本發明的范圍,在閱讀了本發明之后,本領域技術人員對本發明的各種等價形式的修改均落于本申請所附權利要求所限定的范圍。
[0013]基于周期對數的二維時序數據存儲和查詢方法,主要步驟如下:
[0014]1、設計數據存儲結構
[0015]我們設計的數據存儲結構如圖1所示:
[0016]圖中每一個小長方體代表一個數據塊,存儲數據,S、F代表每個數據塊的開始時間和終止時間;每三個疊在一起的長方體代表一個數據塊節點(并不代表每個數據塊節點只有三個數據塊,可以有任意個);每個橫排的多個數據塊節點為一條數據鏈,每條鏈都有不同的時間參數T,同一條鏈上的時間參數相同,多條鏈組成一個數據表。
[0017]設計過程可以從下述的幾個方面來說明:
[0018](1)數據塊的設計
[0019]數據塊的大小:數據塊不應太小,否則查詢數據量很大時會有很多IO操作,對于PC來說,參考大小為64M。
[0020]存儲時間的限制:因為每個數據塊的大小應該是事先固定的,所以每個數據塊必須有規定的時間范圍。假設時間下界為S,時間上界為f,則數據塊存儲的是某一設備在時間段[s,f]內的數據。
[0021]存儲設備的限制:每個設備的數據都有固定的時間間隔,在同一個節點中應該盡量避免同時存儲兩個時間間隔相差很大的設備,否則會導致在某些情況下,對于大周期設備的批量查詢,會跨越非常多的文件(塊),這是不希望看到的。
[0022]為了解決這一問題,我們將時間間隔之比小于等于2的設備存儲在同一數據塊中,而為了使得設備的時間間隔之比小于等于2,我們為每條鏈(見下)增加了一個時間參數t,使每條鏈只存儲時間周期在[2\2?+1)內的設備。
[0023](2)數據塊節點的設計
[0024]由于數據量很大,一個數據塊64M可能不能存儲所有滿足時間周期在[2\2?+1)內的設備數據,需要多個數據塊來存儲,我們將所有時間參數t相同的數據塊定義為一個數據塊節點。為了保證節點的連續性,引進新的參數i,參數i代表數據塊節點處于第幾個時間段,引進參數I為數據塊寬度,那么,對于數據鏈上第i個節點存儲設備的時間范圍為[(1-l)*I*2t+1,i*I*2t+1),在 PC 上,I 的參考值為 10240。
[0025]通過上面的分析,可知每個數據塊節點中存儲的設備數據的周期都在[2\t+1)之間,并且第i個節點存儲的是設備在時間段[(i-l)*I*2t+1,i*I*2t+1)內的數據。并且,各個節點中每個數據塊的時間參數和時間上下界是相同的。
[0026](3)數據鏈的設計
[0027]每個數據塊節點只存儲了設備在時間段[S,f)內的數據,這些數據只是每個設備數據的一部分,所以要存儲設備的所有數據就要將具有同一時間參數t而不同時間段的數據塊節點組成一條鏈,定義為一個數據鏈。
[0028]每個數據鏈存儲的是設備數據的周期在[2\2?+1)之間的所有設備的數據,包含時間參數t和鏈與數據塊節點之間的索引關系。
[0029](4)整個數據表的設計
[0030]每條數據鏈存儲的是設備數據的周期在[2\21之間的所有設備的數據,所以將具有不同時間參數t的數據鏈組成一個表,這個表存儲了每個設備的所有數據,將這個表定義為數據表。
[0031]2、設計索引
[0032]針對上面所描述的數據存儲結構,我們設計的索引如圖2所示。
[0033]圖中的Table代表整個數據表,Chain代表上面所提到的數據鏈,一個數據表Table是由若干個數據鏈組成的。數據鏈Chain包含兩個參數:Node和t, Node代表數據塊節點,一個數據鏈是由若干個數據塊節點Node組成的;t代表時間參數,在存儲結構的設計中已經提到過,數據塊節點的存儲對設備的周期有一定的限制,只存儲時間周期在[2\2?+1)內的設備。數據塊節點Node包含四個參數:Block、1、t和last,Block代表一個數據塊,一個數據塊節點是由若干個數據塊Block組成的;參數i用于和參數t共同決定數據塊存儲數據的起始時間和終止時間,第i個節點存儲設備的時間范圍為[(1-l)*I*2t+1,i*I*2t+1) ;t和數據塊節點中的t含義是相同的;last代表當前活躍的塊,在寫入數據操作中把新添加的數據存放在活躍塊里。數據塊Block包含三個參數:Item、CUr和filename。Item代表數據塊中存儲的設備信息,一個數據塊中存儲著多個設備,所以數據塊Block是由若干個Item組成的;cur代表當前數據大小filename代表所要查詢的設備存儲的文件名。Item包含三個參數:offset、size和s, offset代表數據的地址偏移量;size代表本塊中存儲設備個數最大值;s代表本數據塊中存儲設備的開始時間。
[0034]3、抽象數據結構描述`
[0035]根據索引的設計,我們可以進一步定義數據的抽象結構,如下:
[0036]( I)數據表的抽象數據結構
[0037]定義數據表為Table,其數據類型如下所示:
[0038]Table
[0039]map<int, Chain〉
[0040]map是STL中提供的關聯容器,鍵-值的集合。在數據表Table中,map〈int, Chain〉表示可以根據時間參數t找到相應的數據鏈。
[0041](2)數據鏈的抽象數據結構
[0042]定義數據鏈為Chain,其數據類型如下所示:
[0043]Chain
[0044]t
[0045]map<int, Node>M;
[0046]在數據鏈Chain中,時間參數t表示每條鏈中只能存儲時間周期在[2%2?+1)內的設備數據,數據鏈中的時間參數t也是這條鏈中的所有數據塊節點和數據塊的時間參數,參數t的數據類型是int型。map〈int, Node>M表示可以根據參數i找到相應的節點。
[0047](3)數據塊節點的抽象數據結構
[0048]定義數據塊節點為Node,其數據類型如下所示:
[0049]
【權利要求】
1.一種基于周期對數的二維時序數據存儲和查詢方法,其特征在于,包括如下步驟: 設計數據存儲結構; 設計索引; 對抽象數據結構描述; 實現二維數據的批量存儲; 實現二維數據的批量查詢; 實現二維數據的斷面存儲; 實現二維數據的斷面查詢; 其中,數據存儲結構的設計為, (1)采用多級目錄結構:最底層為一個用于存儲數據的數據塊,多個數據塊構成一個節點,多個節點串成一條鏈; (2)每條鏈有個唯一參數t,只存儲周期在[2\2?+1)上的數據; 在參數為t的鏈上的節點有個唯一的參數i,只存儲周期在[(i_l)*I*2t+1, i*I*2t+1)上的數據,其中I為常數。
2.如權利 要求1所述的基于周期對數的二維時序數據存儲和查詢方法,其特征在于,設計索引具體為: 用Table代表整個數據表,Chain代表數據鏈,一個數據表Table是由若干個數據鏈組成的;數據鏈Chain包含兩個參數:Node和t, Node代表數據塊節點,一個數據鏈是由若干個數據塊節點Node組成的;t代表時間參數,在存儲結構的設計中已經提到過,數據塊節點的存儲對設備的周期有一定的限制,只存儲時間周期在[2\2?)內的設備;數據塊節點Node包含四個參數:Block、1、t和last, Block代表一個數據塊,一個數據塊節點是由若干個數據塊Block組成的;參數i用于和參數t共同決定數據塊存儲數據的起始時間和終止時間,第i個節點存儲設備的時間范圍為[(i_l)*I*2t+1,i*I*2t+1) ;t和數據塊節點中的t含義是相同的;last代表當前活躍的塊,在寫入數據操作中把新添加的數據存放在活躍塊里;數據塊Block包含三個參數:Item、cur和filename, Item代表數據塊中存儲的設備信息,一個數據塊中存儲著多個設備,所以數據塊Block是由若干個Item組成的;CUr代表當前數據大小!filename代表所要查詢的設備存儲的文件名;Item包含三個參數:offset、size和s,offset代表數據的地址偏移量;size代表本塊中存儲設備個數最大值;s代表本數據塊中存儲設備的開始時間。
3.如權利要求2所述的基于周期對數的二維時序數據存儲和查詢方法,其特征在于:實現二維數據的批量存儲 將設備周期以2為底取對數向下取整計算其t值,即LlogU,根據t值找到相對應的鏈(Chain),若找不到則新創建一個;根據起始時間找到對應的節點(Node),若沒有則再創建一新節點,新節點包括一個塊(Block), —個塊包括一個項(Item),第一個項保證其大小為I ;找到對應節點后,根據設備ID找到對應塊,若沒有則在當前活躍的塊里插入一項,并將此設備ID映射到當前活躍塊,若當前活躍塊已滿,新建一個塊作為當前活躍塊;找到對應塊后,若有此項,則在此項里進行插入,否則新建一個項進行插入。
4.如權利要求3所述的基于周期對數的二維時序數據存儲和查詢方法,其特征在于,實現二維數據的批量查詢具體為: 根據抽象數據類型,對批量查詢算法進行如下設計:首先根據設備id找到設備周期,然后對周期以2為底取對數得到t,根據t找到其所對應的鏈,然后根據鏈的開始時間找到鏈上所對應的節點,如果找到的節點的結束時間小于結束時間,就根據設備id找到節點里面的數據塊,從數據塊里得到數據信息,從文件中讀取數據,指針指向下一節點,再根據鏈的開始時間找到對應節點,循環執行直到找出一段時間內的所有數據。
5.如權利要求4所述的基于周期對數的二維時序數據存儲和查詢方法,其特征在于,實現二維數據的斷面查詢具體為: 首先對存儲信息進行預處理,建立數據塊指針和設備號的映射關系,在建立映射關系的過程中,設備號要在斷面查詢設備號的范圍內;然后在建立的映射關系中,逐個掃描數據塊指針,讀取對應的 設備信息并存儲。
【文檔編號】G06F17/30GK103488727SQ201310423324
【公開日】2014年1月1日 申請日期:2013年9月16日 優先權日:2013年9月16日
【發明者】裴正, 倪丹, 何戀, 張雪潔, 周文歡 申請人:河海大學
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 富裕县| 视频| 靖边县| 东方市| 葵青区| 会昌县| 响水县| 巨鹿县| 望谟县| 清水河县| 丁青县| 中牟县| 稷山县| 五莲县| 盐源县| 定边县| 岫岩| 乌拉特中旗| 惠安县| 山东省| 南乐县| 西峡县| 龙游县| 青田县| 壶关县| 唐海县| 民乐县| 石屏县| 宁明县| 湘乡市| 进贤县| 宁海县| 庐江县| 沁水县| 沅陵县| 木里| 彰化市| 彭州市| 安远县| 广河县| 睢宁县|