專利名稱:一種基于時(shí)間序列的工業(yè)數(shù)據(jù)存儲及索引方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)庫存儲及索引領(lǐng)域,尤其涉及工業(yè)數(shù)據(jù)存儲及索引技術(shù)。
背景技術(shù):
工業(yè)數(shù)據(jù)來源于工業(yè)生產(chǎn)或其相關(guān)數(shù)據(jù),一個(gè)工業(yè)數(shù)據(jù)對應(yīng)生產(chǎn)中的一個(gè)物理點(diǎn),如某一條生產(chǎn)線的累計(jì)產(chǎn)量、某一個(gè)檢測點(diǎn)溫度等。工業(yè)數(shù)據(jù)是一段連續(xù)的量,其存儲的數(shù)據(jù)都帶有時(shí)間戳。工業(yè)數(shù)據(jù)具有明顯的時(shí)間特性,其結(jié)構(gòu)可以用VQT(ValUe、QUality、 Timestamp,數(shù)據(jù)值、質(zhì)量碼、時(shí)間戳)來表示。同時(shí)工業(yè)數(shù)據(jù)是不斷產(chǎn)生的,具有海量數(shù)據(jù)的特點(diǎn)?,F(xiàn)有的數(shù)據(jù)庫技術(shù)很好地解決了關(guān)系數(shù)據(jù)的存儲與訪問要求。但是對于工業(yè)數(shù)據(jù)而言,現(xiàn)有的存儲和訪問方式有很多不足。由于工業(yè)數(shù)據(jù)的連續(xù)時(shí)間的特性以及海量的特性,使用傳統(tǒng)的關(guān)系數(shù)據(jù)庫的存儲和訪問方法所需的存儲空間極大、訪問不便。并且,對于工業(yè)數(shù)據(jù)庫而言,其查詢數(shù)據(jù)的目的通常是為了進(jìn)行工業(yè)數(shù)據(jù)的趨勢分析、故障分析等,需要查詢的通常不是某一條數(shù)據(jù),在工業(yè)控制領(lǐng)域,某個(gè)采集點(diǎn)某個(gè)時(shí)間點(diǎn)上的單個(gè)數(shù)據(jù)點(diǎn)是無意義的,一般需要對多個(gè)采集點(diǎn)的連續(xù)時(shí)間段內(nèi)的工業(yè)數(shù)據(jù)進(jìn)行查詢,通過查詢出的數(shù)據(jù)進(jìn)行趨勢分析、發(fā)現(xiàn)系統(tǒng)故障。可見現(xiàn)有的數(shù)據(jù)庫存儲和查詢技術(shù)不適合工業(yè)數(shù)據(jù)的存儲和查詢,需要能滿足時(shí)間特性和海量特點(diǎn)的數(shù)據(jù)存儲結(jié)構(gòu)和查詢方法。
發(fā)明內(nèi)容
本發(fā)明主要解決的技術(shù)問題是提供一種基于時(shí)間序列的工業(yè)數(shù)據(jù)存儲及索引方法,使得降低海量工業(yè)數(shù)據(jù)存儲所需空間,加快工業(yè)數(shù)據(jù)索引查詢效率。為了解決上述技術(shù)問題,本發(fā)明提供了一種基于時(shí)間序列的工業(yè)數(shù)據(jù)存儲及索引方法,工業(yè)數(shù)據(jù)來自不同的采集點(diǎn),每條工業(yè)數(shù)據(jù)包含一個(gè)時(shí)間戳,包含以下步驟將相同時(shí)間段內(nèi)的工業(yè)數(shù)據(jù)存儲在一個(gè)數(shù)據(jù)文件中,該數(shù)據(jù)文件包含N個(gè)文件塊,N為大于2的自然數(shù);將一個(gè)時(shí)間段內(nèi)屬于同一個(gè)采集點(diǎn)的工業(yè)數(shù)據(jù)存儲在對應(yīng)該時(shí)間段的數(shù)據(jù)文件中的同一個(gè)物理塊中,保存該數(shù)據(jù)文件中各采集點(diǎn)與其對應(yīng)的起始物理塊的索引關(guān)系,在各物理塊的頭文件中包含本物理塊中存儲的工業(yè)數(shù)據(jù)的起訖時(shí)間、以及對應(yīng)相同采集點(diǎn)的上一個(gè)物理塊和/或下一個(gè)物理塊的指針;在進(jìn)行一個(gè)時(shí)間段的工業(yè)數(shù)據(jù)查詢時(shí),根據(jù)待查詢的工業(yè)數(shù)據(jù)的時(shí)間段索引到對應(yīng)的數(shù)據(jù)文件,根據(jù)待查詢的采集點(diǎn)標(biāo)簽索引到該數(shù)據(jù)文件中對應(yīng)該采集點(diǎn)的起始物理塊,根據(jù)該起始物理塊頭文件中的起訖時(shí)間和下一個(gè)物理塊的指針、索引到待查詢的工業(yè)數(shù)據(jù)的物理存儲位置。作為上述技術(shù)方案的改進(jìn),根據(jù)起始物理塊頭文件中的起訖時(shí)間和下一個(gè)物理塊的指針?biāo)饕酱樵兊墓I(yè)數(shù)據(jù)的物理存儲位置的步驟中,從起始物理塊開始,依次將各物理塊的起訖時(shí)間和待查詢的工業(yè)數(shù)據(jù)時(shí)間段相比較,如果不匹配,則根據(jù)該物理塊頭文件中的下一個(gè)物理塊的指針,找到下一個(gè)物理塊,進(jìn)行進(jìn)一步比較,找到匹配待查詢的時(shí)間段的物理塊。作為上述技術(shù)方案的改進(jìn),工業(yè)數(shù)據(jù)至少包含數(shù)值、質(zhì)量碼、時(shí)間戳,將同一個(gè)采集點(diǎn)的工業(yè)數(shù)據(jù)存儲在同一個(gè)物理塊的步驟中,還包含以下步驟在存儲工業(yè)數(shù)據(jù)時(shí),將該工業(yè)數(shù)據(jù)的時(shí)間戳與上一條工業(yè)數(shù)據(jù)的時(shí)間戳比較,保存該時(shí)間差;根據(jù)起始物理塊頭文件中的起訖時(shí)間和下一個(gè)物理塊的指針?biāo)饕酱樵兊墓I(yè)數(shù)據(jù)的物理存儲位置的步驟中,根據(jù)找到的物理塊中存儲的工業(yè)數(shù)據(jù)的起始時(shí)間和各工業(yè)數(shù)據(jù)的時(shí)間差,找到待查詢的時(shí)間段的工業(yè)數(shù)據(jù)。作為上述技術(shù)方案的改進(jìn),每個(gè)數(shù)據(jù)文件唯一對應(yīng)一個(gè)時(shí)間段,各數(shù)據(jù)文件所對應(yīng)的時(shí)間段相連續(xù)。作為上述技術(shù)方案的改進(jìn),將屬于同一個(gè)采集點(diǎn)的工業(yè)數(shù)據(jù)存儲在同一個(gè)物理塊中的步驟中,如果該采集點(diǎn)標(biāo)簽對應(yīng)的物理塊已寫滿,則根據(jù)該物理塊頭文件中的下一個(gè)物理塊的指針,找到同屬于該采集點(diǎn)的其他物理塊,將工業(yè)數(shù)據(jù)存儲在該其他物理塊中。作為上述技術(shù)方案的改進(jìn),工業(yè)數(shù)據(jù)至少包含數(shù)值、質(zhì)量碼、時(shí)間戳,將同一個(gè)采集點(diǎn)的工業(yè)數(shù)據(jù)存儲在同一個(gè)物理塊的步驟中,還包含以下步驟為每條工業(yè)數(shù)據(jù)設(shè)置一個(gè)質(zhì)量碼標(biāo)識位,在存儲工業(yè)數(shù)據(jù)時(shí),將該工業(yè)數(shù)據(jù)的質(zhì)量碼與上一條工業(yè)數(shù)據(jù)的質(zhì)量碼比較,如果相同,則不保存本條工業(yè)數(shù)據(jù)的質(zhì)量碼,并將質(zhì)量碼標(biāo)識設(shè)置為不保存;如果不同,則保存該條工業(yè)數(shù)據(jù)的質(zhì)量碼,并將質(zhì)量碼標(biāo)識設(shè)置為保存;索引到待查詢的工業(yè)數(shù)據(jù)的物理存儲位置的步驟之后,包含以下步驟讀取待查詢的工業(yè)數(shù)據(jù),根據(jù)各工業(yè)數(shù)據(jù)的質(zhì)量碼標(biāo)識位的值,確定該條工業(yè)數(shù)據(jù)的質(zhì)量碼。作為上述技術(shù)方案的改進(jìn),工業(yè)數(shù)據(jù)存儲區(qū)域包括主數(shù)據(jù)區(qū)和溢出數(shù)據(jù)區(qū),主數(shù)據(jù)區(qū)和溢出數(shù)據(jù)區(qū)中分別為每個(gè)采集點(diǎn)預(yù)留至少一個(gè)對應(yīng)的物理塊,采集點(diǎn)的起始物理塊為該采集點(diǎn)對應(yīng)的主數(shù)據(jù)區(qū)中的物理塊。作為上述技術(shù)方案的改進(jìn),主數(shù)據(jù)區(qū)中從前至后依次預(yù)留各采集點(diǎn)對應(yīng)的物理塊;溢出數(shù)據(jù)區(qū)中從后至前依次預(yù)留各采集點(diǎn)對應(yīng)的物理塊。溢出數(shù)據(jù)區(qū)可以為主數(shù)據(jù)區(qū)的1至2倍。本發(fā)明實(shí)施方式與現(xiàn)有技術(shù)相比,主要區(qū)別及其效果在于將相同時(shí)間段內(nèi)的工業(yè)數(shù)據(jù)存儲在一個(gè)數(shù)據(jù)文件中,將一個(gè)時(shí)間段內(nèi)屬于相同采集點(diǎn)的數(shù)據(jù)存儲在該時(shí)間段數(shù)據(jù)文件的同一個(gè)物理塊中,從而無需再保存每條工業(yè)數(shù)據(jù)對應(yīng)的采集點(diǎn)的標(biāo)簽,節(jié)省了存儲空間,在工業(yè)領(lǐng)域上千萬條工業(yè)數(shù)據(jù)的情況下,明顯提高了數(shù)據(jù)存儲效率。針對上述存儲方式,在進(jìn)行查詢時(shí),可以根據(jù)待查詢的工業(yè)數(shù)據(jù)的時(shí)間段索引到對應(yīng)的數(shù)據(jù)文件,根據(jù)待查詢的采集點(diǎn)標(biāo)簽索引到該數(shù)據(jù)文件中對應(yīng)的起始物理塊,根據(jù)起始物理塊頭文件中的起訖時(shí)間和下一個(gè)物理塊的指針、索引到需要查詢的工業(yè)數(shù)據(jù)的物理存儲位置,該三級索引方式定位迅速,能夠批量、高效查詢一個(gè)時(shí)間段內(nèi)的工業(yè)數(shù)據(jù),充分滿足工業(yè)數(shù)據(jù)的查詢需求。在存儲工業(yè)數(shù)據(jù)時(shí),將該工業(yè)數(shù)據(jù)的質(zhì)量碼與上一條工業(yè)數(shù)據(jù)的質(zhì)量碼比較,如果相同,則不保存本條工業(yè)數(shù)據(jù)的質(zhì)量碼,只在不同的情況下,才保存該條工業(yè)數(shù)據(jù)的質(zhì)量碼,為每條工業(yè)數(shù)據(jù)預(yù)留一個(gè)標(biāo)識位,標(biāo)示該條工業(yè)數(shù)據(jù)中是否保存有質(zhì)量碼。從而進(jìn)一步降低了工業(yè)數(shù)據(jù)的存儲空間,提高了數(shù)據(jù)存儲效率。在保存工業(yè)數(shù)據(jù)的時(shí)間戳?xí)r,只保存本條工業(yè)數(shù)據(jù)與上一條工業(yè)數(shù)據(jù)的時(shí)間差, 一般情況下,時(shí)間戳的保存需要占用4個(gè)字節(jié),而保存其時(shí)間差則只需1個(gè)字節(jié),明顯降低了工業(yè)數(shù)據(jù)的存儲空間,提高了數(shù)據(jù)存儲效率。
下面結(jié)合附圖和具體實(shí)施方式
對本發(fā)明作進(jìn)一步詳細(xì)說明。圖1是本發(fā)明一較佳實(shí)施方式的基于時(shí)間序列的工業(yè)數(shù)據(jù)存儲及索引方法中對應(yīng)同一采集點(diǎn)的各物理塊的鏈接關(guān)系;圖2是本發(fā)明一較佳實(shí)施方式的基于時(shí)間序列的工業(yè)數(shù)據(jù)存儲及索引方法中物理塊的結(jié)構(gòu)示意圖;圖3是本發(fā)明一較佳實(shí)施方式的基于時(shí)間序列的工業(yè)數(shù)據(jù)存儲及索引方法中工業(yè)數(shù)據(jù)的存儲結(jié)構(gòu)圖;圖4是本發(fā)明一較佳實(shí)施方式的基于時(shí)間序列的工業(yè)數(shù)據(jù)存儲及索引方法中數(shù)據(jù)文件的結(jié)構(gòu)示意圖;圖5是本發(fā)明一較佳實(shí)施方式的基于時(shí)間序列的工業(yè)數(shù)據(jù)索引方法流程圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明的實(shí)施方式作進(jìn)一步地詳細(xì)描述。本發(fā)明一較佳實(shí)施方式涉及一種基于時(shí)間序列的工業(yè)數(shù)據(jù)存儲及索引方法。本實(shí)施方式中的工業(yè)數(shù)據(jù)來自不同的采集點(diǎn),每條工業(yè)數(shù)據(jù)包含一個(gè)時(shí)間戳。在存儲時(shí),將一個(gè)時(shí)間段內(nèi)的工業(yè)數(shù)據(jù)存儲在一個(gè)數(shù)據(jù)文件中,確保每個(gè)數(shù)據(jù)文件均唯一對應(yīng)一個(gè)時(shí)間段, 各數(shù)據(jù)文件所對應(yīng)的時(shí)間段相連續(xù)。一個(gè)數(shù)據(jù)文件中進(jìn)一步包含多個(gè)物理塊。將數(shù)據(jù)文件分為主數(shù)據(jù)區(qū)和溢出數(shù)據(jù)區(qū)兩部分,在主數(shù)據(jù)區(qū)和溢出數(shù)據(jù)區(qū)分別為每個(gè)采集點(diǎn)分配至少一個(gè)物理塊。當(dāng)主數(shù)據(jù)區(qū)域中的物理塊寫滿時(shí),將數(shù)據(jù)存儲到溢出數(shù)據(jù)區(qū)域中屬于相同采集點(diǎn)的物理塊中。由于每個(gè)物理塊只存儲同一采集點(diǎn)的數(shù)據(jù),這樣就無需另外保存采集點(diǎn)標(biāo)簽的ID,能夠更有效地利用物理磁盤空間。其中,主數(shù)據(jù)區(qū)的大小是由數(shù)據(jù)庫字典中的采集點(diǎn)數(shù)和每個(gè)物理塊的大小決定的,如果采集點(diǎn)有10000個(gè),則主數(shù)據(jù)區(qū)的大小為10000X4K(每個(gè)頁面的大小)。溢出數(shù)據(jù)區(qū)的大小,由不同工業(yè)系統(tǒng)不同的數(shù)據(jù)采集特性決定,一般為主數(shù)據(jù)區(qū)的1至2倍。如對于電力系統(tǒng),采用1倍的主數(shù)據(jù)區(qū)大小最佳,而石油系統(tǒng)采用1.5倍的主數(shù)據(jù)區(qū)大小為佳。每個(gè)物理塊僅僅保存屬于同一采集點(diǎn)標(biāo)簽的工業(yè)數(shù)據(jù),屬于同一采集點(diǎn)標(biāo)簽的物理塊通過雙向指針鏈接,如圖1所示。
每個(gè)物理塊由2部分組成,分別是Record Header (物理塊頭文件)和Record Data(物理塊數(shù)據(jù)區(qū)),如圖2所示。其中,Record Header標(biāo)識了該物理塊中保存的工業(yè)數(shù)據(jù)的信息,包括采集點(diǎn)標(biāo)簽ID、本物理塊中存儲的工業(yè)數(shù)據(jù)的起訖時(shí)間、數(shù)據(jù)值的類型、數(shù)據(jù)值的長度、本物理塊的標(biāo)識、上一個(gè)物理塊的指針和/或下一個(gè)物理塊的指針等信息。通過該頭文件,使得各物理塊之間能夠構(gòu)成如圖1所示的雙向鏈接,可以通過當(dāng)前的物理塊找到屬于同一采集點(diǎn)的其他物理塊。具體地說,在進(jìn)行某個(gè)采集點(diǎn)的數(shù)據(jù)存儲時(shí),首先將工業(yè)數(shù)據(jù)存儲在主數(shù)據(jù)區(qū)中對應(yīng)該采集點(diǎn)的第一個(gè)物理塊(稱為起始物理塊),在起始物理塊存儲滿后,根據(jù)起始物理塊頭文件中下一個(gè)物理塊的指針,找到對應(yīng)同一采集點(diǎn)的下一個(gè)物理塊,存儲滿之后,再找到對應(yīng)同一采集點(diǎn)的下一個(gè)物理塊,如此依次存儲。同樣,在進(jìn)行數(shù)據(jù)查詢時(shí),將待查詢數(shù)據(jù)的時(shí)間段依次和各物理塊頭文件中的起訖時(shí)間比較,如果不匹配,則根據(jù)頭文件中下一個(gè)物理塊的指針,快速索引到下一個(gè)物理塊,進(jìn)行進(jìn)一步匹配,直到找到時(shí)間相匹配的物理塊。Record Data部分保存了連續(xù)的工業(yè)數(shù)據(jù),工業(yè)數(shù)據(jù)的存儲結(jié)構(gòu)采用改進(jìn)的計(jì)數(shù)法。具體地說,每條工業(yè)數(shù)據(jù)均包含數(shù)據(jù)值、質(zhì)量碼和時(shí)間戳。其中不同工業(yè)數(shù)據(jù)的質(zhì)量碼可能相同,從而容易產(chǎn)生相同數(shù)據(jù)的重復(fù)保存。時(shí)間戳,是工業(yè)數(shù)據(jù)的一個(gè)重要特性,但為每條工業(yè)數(shù)據(jù)保存完整的時(shí)間戳,需要占用許多存儲空間。為了提高存儲空間的利用率,本實(shí)施方式中將當(dāng)前工業(yè)數(shù)據(jù)與上一條工業(yè)數(shù)據(jù)進(jìn)行比較,保存兩條工業(yè)數(shù)據(jù)的時(shí)間差,如果兩條數(shù)據(jù)的質(zhì)量碼相同,則不再保存本條工業(yè)數(shù)據(jù)中的質(zhì)量碼。本實(shí)施方式的數(shù)據(jù)存儲結(jié)構(gòu)如圖3所示,第一個(gè)字節(jié)的第一個(gè)bit用來表示是否保存了質(zhì)量碼,后7個(gè)bit為數(shù)據(jù)值長度標(biāo)識位,標(biāo)示了該條工業(yè)數(shù)據(jù)的數(shù)據(jù)值長度,數(shù)據(jù)值長度標(biāo)識位之后保存數(shù)據(jù)值,數(shù)據(jù)值之后的1個(gè)字節(jié)用來保存時(shí)間差。在具體存儲時(shí),首先比較本條工業(yè)數(shù)據(jù)的質(zhì)量碼與上一條工業(yè)數(shù)據(jù)的質(zhì)量碼是否相同,如果相同,則不再存儲該質(zhì)量碼,將質(zhì)量碼標(biāo)識位(第一個(gè)字節(jié)的第一個(gè)bit)設(shè)置為 0,表示不存儲質(zhì)量碼;如果不同,并將該工業(yè)數(shù)據(jù)的質(zhì)量碼標(biāo)識位設(shè)置為1,表示已存儲質(zhì)量碼,并將該質(zhì)量碼保存在最后。其后7bit保存本條工業(yè)數(shù)據(jù)的數(shù)據(jù)值的長度。隨后保存該數(shù)據(jù)值。之后,計(jì)算本條工業(yè)數(shù)據(jù)的時(shí)間戳與上一條工業(yè)數(shù)據(jù)時(shí)間戳的時(shí)間差,用1字節(jié)保存該時(shí)間差。如果本工業(yè)數(shù)據(jù)的質(zhì)量碼與上一條不同,則將該質(zhì)量碼保存在時(shí)間差之后。通過上述存儲結(jié)構(gòu),對于每條工業(yè)數(shù)據(jù),一般只需1個(gè)字節(jié)標(biāo)示是否保存質(zhì)量碼以及數(shù)據(jù)值長度、1個(gè)字節(jié)保存時(shí)間差、8個(gè)字節(jié)保存數(shù)據(jù)值,在質(zhì)量碼與前一條工業(yè)數(shù)據(jù)相比沒有變化的情況下,只需要10個(gè)字節(jié)就能保存一條完整的工業(yè)數(shù)據(jù),有效的節(jié)省了存儲的空間,提高了數(shù)據(jù)存儲效率。上述主數(shù)據(jù)區(qū)和溢出數(shù)據(jù)區(qū)構(gòu)成本實(shí)施方式中數(shù)據(jù)文件的數(shù)據(jù)區(qū),一個(gè)數(shù)據(jù)文件共有三部分組成,除了上述數(shù)據(jù)區(qū)以外,還包括文件頭、文件塊與采集點(diǎn)的索引圖等,如圖4 所示。其中,文件頭中包含了該數(shù)據(jù)文件的詳細(xì)信息,如總物理塊數(shù)、可用物理塊數(shù)、文件中工業(yè)數(shù)據(jù)的起始時(shí)間、和終止時(shí)間等信息。需要說明的是,在為各采集點(diǎn)預(yù)留物理塊時(shí),主數(shù)據(jù)區(qū)中可以從前至后依次預(yù)留各采集點(diǎn)對應(yīng)的物理塊;溢出數(shù)據(jù)區(qū)中可以從后至前依次預(yù)留各采集點(diǎn)對應(yīng)的物理塊。從而即便發(fā)生突然增加采集點(diǎn)的情況,也能夠順利擴(kuò)充主數(shù)據(jù)區(qū),保存主數(shù)據(jù)區(qū)中各物理塊的連續(xù)性。通過上述存儲方式,盡可能避免了對工業(yè)數(shù)據(jù)中的重復(fù)信息進(jìn)行重復(fù)保存,包括每條工業(yè)數(shù)據(jù)的采集點(diǎn)標(biāo)簽信息、連續(xù)的工業(yè)數(shù)據(jù)的相同質(zhì)量碼,且在保留時(shí)間戳的前提下通過更少的空間存儲該時(shí)間戳,由于工業(yè)數(shù)據(jù)數(shù)量極大,通過上述幾點(diǎn)能夠明顯降低工業(yè)數(shù)據(jù)的存儲空間,提高空間利用率,提高工業(yè)數(shù)據(jù)存儲效率。在一萬采集點(diǎn)的情況下,采集周期為5秒,則每天的數(shù)據(jù)量達(dá)到4. 8GB,每年的歷史數(shù)據(jù)超過1. 7TB,龐大的數(shù)據(jù)量使得數(shù)據(jù)查詢和分析的效率很低。而采用本發(fā)明后,每年的歷史數(shù)據(jù)僅需要25GB,大大的節(jié)省了存儲空間,并且數(shù)據(jù)查詢和分析的效率也會大大提
尚ο下面對上述存儲方式相對應(yīng)的索引方法進(jìn)行具體說明,具體的工業(yè)數(shù)據(jù)索引流程圖如圖5所示。本實(shí)施方式中在進(jìn)行工業(yè)數(shù)據(jù)存儲時(shí),已建立各采集點(diǎn)標(biāo)簽與起始物理塊 (一般是主數(shù)據(jù)區(qū)中物理塊)的索引關(guān)系。步驟501中,根據(jù)待查詢的工業(yè)數(shù)據(jù)的時(shí)間段,索引到包含該時(shí)間段的數(shù)據(jù)文件。步驟502中,根據(jù)待查詢的工業(yè)數(shù)據(jù)對應(yīng)的采集點(diǎn)標(biāo)簽,索引到該數(shù)據(jù)文件中對應(yīng)該采集點(diǎn)的起始物理塊。步驟503中,將待查詢的工業(yè)數(shù)據(jù)的時(shí)間段與起始物理塊頭文件中的起訖時(shí)間相比較,如果該起訖時(shí)間與待查詢的時(shí)間段相匹配(完全包含待查詢的時(shí)間段,或者包含待查詢的時(shí)間段的一部分),則進(jìn)入步驟504 ;如果該起訖時(shí)間與待查詢的時(shí)間段不相匹配 (兩個(gè)時(shí)間段完全不相交),則進(jìn)入步驟505,根據(jù)起始物理塊頭文件中保存的下一個(gè)物理塊的指針,找到本采集點(diǎn)對應(yīng)的下一個(gè)物理塊,返回步驟503,將待查詢的工業(yè)數(shù)據(jù)的時(shí)間段與該下一個(gè)物理塊頭文件中的起訖時(shí)間相比較。步驟504中,已定位到了待查詢的工業(yè)數(shù)據(jù)所存儲的物理塊,根據(jù)該定位的物理塊中存儲的工業(yè)數(shù)據(jù)的起始時(shí)間和各工業(yè)數(shù)據(jù)的時(shí)間差,找到待查詢的工業(yè)數(shù)據(jù)。如果該定位的物理塊中只保存待查詢的部分?jǐn)?shù)據(jù),則根據(jù)該物理塊頭文件中下一個(gè)物理塊的指針,找到下一個(gè)物理塊,繼續(xù)獲取待查詢的工業(yè)數(shù)據(jù),直到得到待查詢?nèi)抗I(yè)數(shù)據(jù)。通過上述索引方式,使得用戶能夠直接根據(jù)需要查詢的采集點(diǎn)和時(shí)間段,索引到待查詢的工業(yè)數(shù)據(jù)的物理存儲位置,實(shí)現(xiàn)快速索引、批量查詢一個(gè)時(shí)間段內(nèi)的工業(yè)數(shù)據(jù),滿足工業(yè)數(shù)據(jù)的查詢需求。在讀取待查詢的工業(yè)數(shù)據(jù)時(shí),根據(jù)工業(yè)數(shù)據(jù)的存儲格式,如圖3所示,首先讀取工業(yè)數(shù)據(jù)的質(zhì)量碼標(biāo)識位的值,確定該條工業(yè)數(shù)據(jù)的質(zhì)量碼是否省略保存,如果值為0則讀取上一條工業(yè)數(shù)據(jù)的質(zhì)量碼,如果值為1,則在讀取時(shí)間差之后讀取質(zhì)量碼。其后讀取7bit 的數(shù)據(jù)值長度,根據(jù)該長度讀取其后的數(shù)據(jù)值。之后再讀取本條工業(yè)數(shù)據(jù)與上一條工業(yè)數(shù)據(jù)的時(shí)間差,將該時(shí)間差還原為時(shí)間戳。最后在質(zhì)量碼標(biāo)識位為1的情況下,讀取本條工業(yè)數(shù)據(jù)的質(zhì)量碼。雖然通過參照本發(fā)明的某些優(yōu)選實(shí)施方式,已經(jīng)對本發(fā)明進(jìn)行了圖示和描述,但本領(lǐng)域的普通技術(shù)人員應(yīng)該明白,可以在形式上和細(xì)節(jié)上對其作各種改變,而不偏離本發(fā)明的精神和范圍。
權(quán)利要求
1.一種基于時(shí)間序列的工業(yè)數(shù)據(jù)存儲及索引方法,所述工業(yè)數(shù)據(jù)來自不同的采集點(diǎn), 每條工業(yè)數(shù)據(jù)包含一個(gè)時(shí)間戳,其特征在于,包含以下步驟將相同時(shí)間段內(nèi)的工業(yè)數(shù)據(jù)存儲在一個(gè)數(shù)據(jù)文件中,該數(shù)據(jù)文件包含N個(gè)文件塊,N為大于2的自然數(shù);將一個(gè)時(shí)間段內(nèi)屬于同一個(gè)采集點(diǎn)的工業(yè)數(shù)據(jù)存儲在對應(yīng)該時(shí)間段的數(shù)據(jù)文件中的同一個(gè)物理塊中,保存該數(shù)據(jù)文件中各采集點(diǎn)與其對應(yīng)的起始物理塊的索引關(guān)系,在所述各物理塊的頭文件中包含本物理塊中存儲的工業(yè)數(shù)據(jù)的起訖時(shí)間、以及對應(yīng)相同采集點(diǎn)的上一個(gè)物理塊和/或下一個(gè)物理塊的指針;在進(jìn)行一個(gè)時(shí)間段的工業(yè)數(shù)據(jù)查詢時(shí),根據(jù)待查詢的工業(yè)數(shù)據(jù)的時(shí)間段索引到對應(yīng)的數(shù)據(jù)文件,根據(jù)待查詢的采集點(diǎn)標(biāo)簽索引到該數(shù)據(jù)文件中對應(yīng)該采集點(diǎn)的起始物理塊,根據(jù)該起始物理塊頭文件中的起訖時(shí)間和下一個(gè)物理塊的指針、索引到所述待查詢的工業(yè)數(shù)據(jù)的物理存儲位置。
2.根據(jù)權(quán)利要求1所述的基于時(shí)間序列的工業(yè)數(shù)據(jù)存儲及索引方法,其特征在于,所述根據(jù)起始物理塊頭文件中的起訖時(shí)間和下一個(gè)物理塊的指針?biāo)饕剿龃樵兊墓I(yè)數(shù)據(jù)的物理存儲位置的步驟中,從所述起始物理塊開始,依次將各物理塊的起訖時(shí)間和待查詢的工業(yè)數(shù)據(jù)時(shí)間段相比較,如果不匹配,則根據(jù)該物理塊頭文件中的下一個(gè)物理塊的指針,找到下一個(gè)物理塊,進(jìn)行進(jìn)一步比較,找到匹配所述待查詢的時(shí)間段的物理塊。
3.根據(jù)權(quán)利要求2所述的基于時(shí)間序列的工業(yè)數(shù)據(jù)存儲及索引方法,所述工業(yè)數(shù)據(jù)至少包含數(shù)值、質(zhì)量碼、時(shí)間戳,其特征在于,所述將同一個(gè)采集點(diǎn)的工業(yè)數(shù)據(jù)存儲在同一個(gè)物理塊的步驟中,還包含以下步驟在存儲所述工業(yè)數(shù)據(jù)時(shí),將該工業(yè)數(shù)據(jù)的時(shí)間戳與上一條工業(yè)數(shù)據(jù)的時(shí)間戳比較,保存所述時(shí)間差;所述根據(jù)起始物理塊頭文件中的起訖時(shí)間和下一個(gè)物理塊的指針?biāo)饕剿龃樵兊墓I(yè)數(shù)據(jù)的物理存儲位置的步驟中,根據(jù)找到的物理塊中存儲的工業(yè)數(shù)據(jù)的起始時(shí)間和各工業(yè)數(shù)據(jù)的時(shí)間差,找到待查詢的時(shí)間段的工業(yè)數(shù)據(jù)。
4.根據(jù)權(quán)利要求1所述的基于時(shí)間序列的工業(yè)數(shù)據(jù)存儲及索引方法,其特征在于,每個(gè)數(shù)據(jù)文件唯一對應(yīng)一個(gè)時(shí)間段,各數(shù)據(jù)文件所對應(yīng)的時(shí)間段相連續(xù)。
5.根據(jù)權(quán)利要求1所述的基于時(shí)間序列的工業(yè)數(shù)據(jù)存儲及索引方法,其特征在于,所述將屬于同一個(gè)采集點(diǎn)的工業(yè)數(shù)據(jù)存儲在同一個(gè)物理塊中的步驟中,如果所述采集點(diǎn)標(biāo)簽對應(yīng)的物理塊已寫滿,則根據(jù)該物理塊頭文件中的下一個(gè)物理塊的指針,找到同屬于該采集點(diǎn)的其他物理塊,將所述工業(yè)數(shù)據(jù)存儲在該其他物理塊中。
6.根據(jù)權(quán)利要求1至5中任意一項(xiàng)所述的基于時(shí)間序列的工業(yè)數(shù)據(jù)存儲及索引方法, 所述工業(yè)數(shù)據(jù)至少包含數(shù)值、質(zhì)量碼、時(shí)間戳,其特征在于,所述將同一個(gè)采集點(diǎn)的工業(yè)數(shù)據(jù)存儲在同一個(gè)物理塊的步驟中,還包含以下步驟為每條工業(yè)數(shù)據(jù)設(shè)置一個(gè)質(zhì)量碼標(biāo)識位,在存儲所述工業(yè)數(shù)據(jù)時(shí),將該工業(yè)數(shù)據(jù)的質(zhì)量碼與上一條工業(yè)數(shù)據(jù)的質(zhì)量碼比較,如果相同,則不保存本條工業(yè)數(shù)據(jù)的質(zhì)量碼,并將所述質(zhì)量碼標(biāo)識設(shè)置為不保存;如果不同,則保存該條工業(yè)數(shù)據(jù)的質(zhì)量碼,并將所述質(zhì)量碼標(biāo)識設(shè)置為保存;所述索引到待查詢的工業(yè)數(shù)據(jù)的物理存儲位置的步驟之后,包含以下步驟讀取待查詢的工業(yè)數(shù)據(jù),根據(jù)所述各工業(yè)數(shù)據(jù)的質(zhì)量碼標(biāo)識位的值,確定該條工業(yè)數(shù)據(jù)的質(zhì)量碼。
7.根據(jù)權(quán)利要求1至5中任意一項(xiàng)所述的基于時(shí)間序列的工業(yè)數(shù)據(jù)存儲及索引方法, 其特征在于,所述工業(yè)數(shù)據(jù)存儲區(qū)域包括主數(shù)據(jù)區(qū)和溢出數(shù)據(jù)區(qū),所述主數(shù)據(jù)區(qū)和溢出數(shù)據(jù)區(qū)中分別為每個(gè)采集點(diǎn)預(yù)留至少一個(gè)對應(yīng)的物理塊,所述采集點(diǎn)的起始物理塊為該采集點(diǎn)對應(yīng)的主數(shù)據(jù)區(qū)中的物理塊。
8.根據(jù)權(quán)利要求7所述的基于時(shí)間序列的工業(yè)數(shù)據(jù)存儲及索引方法,其特征在于, 所述主數(shù)據(jù)區(qū)中從前至后依次預(yù)留所述各采集點(diǎn)對應(yīng)的物理塊;所述溢出數(shù)據(jù)區(qū)中從后至前依次預(yù)留所述各采集點(diǎn)對應(yīng)的物理塊。
9.根據(jù)權(quán)利要求8所述的基于時(shí)間序列的工業(yè)數(shù)據(jù)存儲及索引方法,其特征在于,所述溢出數(shù)據(jù)區(qū)為所述主數(shù)據(jù)區(qū)的1至2倍。
全文摘要
本發(fā)明公開了一種基于時(shí)間序列的工業(yè)數(shù)據(jù)存儲及索引方法,將相同時(shí)間段內(nèi)的工業(yè)數(shù)據(jù)存儲在一個(gè)數(shù)據(jù)文件中,將屬于相同采集點(diǎn)的數(shù)據(jù)存儲在同一個(gè)物理塊中,從而無需再保存每條工業(yè)數(shù)據(jù)對應(yīng)的采集點(diǎn)的標(biāo)簽,節(jié)省了存儲空間,在工業(yè)領(lǐng)域上千萬條工業(yè)數(shù)據(jù)的情況下,明顯提高了數(shù)據(jù)存儲效率。在進(jìn)行查詢時(shí),根據(jù)待查詢的工業(yè)數(shù)據(jù)的時(shí)間段索引到對應(yīng)的數(shù)據(jù)文件,根據(jù)待查詢的采集點(diǎn)標(biāo)簽索引到對應(yīng)的起始物理塊,根據(jù)起始物理塊頭文件中的起訖時(shí)間和下一個(gè)物理塊的指針、索引到需要查詢的時(shí)間段的工業(yè)數(shù)據(jù)的物理存儲位置,該方式能夠快速索引、批量查詢一個(gè)時(shí)間段內(nèi)的工業(yè)數(shù)據(jù),滿足工業(yè)數(shù)據(jù)的查詢需求。
文檔編號G06F17/30GK102446184SQ201010504480
公開日2012年5月9日 申請日期2010年10月12日 優(yōu)先權(quán)日2010年10月12日
發(fā)明者葉軍, 梁俊 申請人:上??婶斚到y(tǒng)軟件有限公司