用于處理時序數(shù)據(jù)的方法和裝置制造方法
【專利摘要】本發(fā)明涉及時序數(shù)據(jù)處理。公開一種用于處理時序數(shù)據(jù)的方法和裝置,該方法包含:接收一個時序數(shù)據(jù)集合,其中,時序數(shù)據(jù)集合的每個元素包含一個時間戳和一個與時間戳相關(guān)聯(lián)的原始值,并且,所有的時間戳表示的時間,構(gòu)成一個具有固定時間間隔的時間序列;按照預(yù)定的單調(diào)數(shù)值壓縮編碼方案,將每個原始值轉(zhuǎn)換成占用更小存儲空間的編碼值;將所有的時間戳所表示的時間劃分成多個預(yù)定長度的時間區(qū)間;將每個時間區(qū)間內(nèi)的所有的時間戳對應(yīng)的編碼值裝配成一個數(shù)據(jù)包,使得該數(shù)據(jù)包中包含按照時間戳順序排列的編碼值;將每個數(shù)據(jù)包及其相關(guān)聯(lián)的時間區(qū)間的標(biāo)識,存儲在一個數(shù)據(jù)庫記錄中。
【專利說明】用于處理時序數(shù)據(jù)的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及時序數(shù)據(jù)處理,更具體地,涉及在數(shù)據(jù)庫中存儲和檢索時間序列數(shù)據(jù)。【背景技術(shù)】
[0002]在涉及物聯(lián)網(wǎng)/傳感器的應(yīng)用中,需要實時處理大規(guī)模的時序數(shù)據(jù)(Time SeriesData,亦稱“時間序列數(shù)據(jù)”),例如股價波動、氣溫變化、血壓高低、潮汐時間、等等。時序數(shù)據(jù)由時間和值組成。
[0003]時序數(shù)據(jù)包含時間戳和與時間戳相關(guān)聯(lián)的值,例如包含來自傳感器的采樣時間和采樣值。在各種應(yīng)用中,需要將這樣的時序數(shù)據(jù)持久地存儲在數(shù)據(jù)庫中以便查詢?,F(xiàn)有技術(shù)中存儲時序數(shù)據(jù)的方式,通常是將采樣時間與采樣值一一對應(yīng)地存儲在數(shù)據(jù)庫中。與這種方式相關(guān)聯(lián),為了查詢目的創(chuàng)建索引文件時,也是以采樣時間、采樣值分別作為索引文件的鍵字的。這種存儲和索引方式,數(shù)據(jù)和索引文件需要占用的存儲空間較大,而且,在進行數(shù)據(jù)查詢時,由于需要更多的I/o操作,因而影響查詢速度。在持久存儲海量的時序數(shù)據(jù)時對存儲空間的浪費以及對海量的時序數(shù)據(jù)進行查詢時的產(chǎn)生的巨大的吞吐量的問題,尤其突出。
[0004]存在這樣的需要,即以較低的存儲量持久存儲海量的時序數(shù)據(jù),同時還能對如此存儲的海量的數(shù)序數(shù)據(jù),進行方便快捷的查詢。
【發(fā)明內(nèi)容】
[0005]針對現(xiàn)有技術(shù)的狀況,本發(fā)明的一個目的是提供一種用于處理時序數(shù)據(jù)的改進的方法和裝置。
[0006]一方面,公開一種用于處理時序數(shù)據(jù)的方法和裝置,該方法包含:接收一個時序數(shù)據(jù)集合,其中,時序數(shù)據(jù)集合的每個元素包含一個時間戳和一個與時間戳相關(guān)聯(lián)的原始值,并且,所有的時間戳表示的時間,構(gòu)成一個具有固定時間間隔的時間序列;按照預(yù)定的單調(diào)數(shù)值壓縮編碼方案,將每個原始值轉(zhuǎn)換成占用更小存儲空間的編碼值;將所有的時間戳所表示的時間劃分成多個預(yù)定長度的時間區(qū)間;將每個時間區(qū)間內(nèi)的所有的時間戳對應(yīng)的編碼值裝配成一個數(shù)據(jù)包,使得該數(shù)據(jù)包中包含按照時間戳順序排列的編碼值;將每個數(shù)據(jù)包及其相關(guān)聯(lián)的時間區(qū)間的標(biāo)識,存儲在一個數(shù)據(jù)庫記錄中。
[0007]另一方面,公開一種用于處理時序數(shù)據(jù)的方法和裝置,該方法包含:接收一個時序數(shù)據(jù)集合,其中,時序數(shù)據(jù)集合的每個元素包含一個時間戳和一個與時間戳相關(guān)聯(lián)的原始值;按照預(yù)定的單調(diào)數(shù)值壓縮編碼方案,將每個原始值轉(zhuǎn)換成占用更小存儲空間的編碼值;為編碼值劃分編碼值區(qū)間;針對每個編碼值區(qū)間,將處于該編碼值區(qū)間中的每個編碼值及其時間戳裝配成數(shù)據(jù)包,使數(shù)據(jù)包中包含每個編碼值的低位字節(jié)和該編碼值對應(yīng)的時間戳;將每個數(shù)據(jù)包連同表征對應(yīng)的編碼值區(qū)間的標(biāo)識,存儲在一個數(shù)據(jù)庫記錄中。
【專利附圖】
【附圖說明】[0008]通過結(jié)合附圖對本公開示例性實施方式進行更詳細的描述,本公開的上述以及其它目的、特征和優(yōu)勢將變得更加明顯,其中,在本公開示例性實施方式中,相同的參考標(biāo)號通常代表相同部件。
[0009]圖1示出了適于用來實現(xiàn)本發(fā)明實施方式的示例性計算系統(tǒng)100的框圖;
[0010]圖2表示按照本發(fā)明一個實施例的方法的示意性流程圖;
[0011]圖3表示按照本發(fā)明另一個實施例的方法的示意性流程圖;
[0012]圖4A示意性地表示一個時序數(shù)據(jù)集合;
[0013]圖4B示意性地表示由傳感器生成的時序數(shù)據(jù);
[0014]圖5示意性地表示按照本發(fā)明實施例、對圖4A所示的時序數(shù)據(jù)集合中的原始值進行變換后生成的編碼值;
[0015]圖6示意性地表示按照本發(fā)明一個實施例的的用于存儲時序數(shù)據(jù)的各種數(shù)據(jù)結(jié)構(gòu);
[0016]圖7示意性地表示按照本發(fā)明另一個實施例的用于存儲時序數(shù)據(jù)的各種數(shù)據(jù)結(jié)構(gòu);
[0017]圖8和9分別表示按照本發(fā)明一個實施例的裝置的示意性框圖。
【具體實施方式】
[0018]下面將參照附圖更詳細地描述本公開的優(yōu)選實施方式。雖然附圖中顯示了本公開的優(yōu)選實施方式,然而應(yīng)該理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施方式所限制。相反,提供這些實施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。
[0019]圖1示出了適于用來實現(xiàn)本發(fā)明實施方式的示例性計算系統(tǒng)100的框圖。如圖1所示,計算機系統(tǒng)100可以包括:CPU(中央處理單元)101、RAM(隨機存取存儲器)102、ROM(只讀存儲器)103、系統(tǒng)總線104、硬盤控制器105、鍵盤控制器106、串行接口控制器107、并行接口控制器108、顯示控制器109、硬盤110、鍵盤111、串行外部設(shè)備112、并行外部設(shè)備113和顯示器114。在這些設(shè)備中,與系統(tǒng)總線104耦合的有CPUlOl、RAM 102, ROM103、硬盤控制器105、鍵盤控制器106、串行控制器107、并行控制器108和顯示控制器109。硬盤110與硬盤控制器105耦合,鍵盤111與鍵盤控制器106耦合,串行外部設(shè)備112與串行接口控制器107耦合,并行外部設(shè)備113與并行接口控制器108耦合,以及顯示器114與顯示控制器109耦合。應(yīng)當(dāng)理解,圖1所述的結(jié)構(gòu)框圖僅僅是為了示例的目的,而不是對本發(fā)明范圍的限制。在某些情況下,可以根據(jù)具體情況增加或減少某些設(shè)備。
[0020]所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明可以實現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本公開可以具體實現(xiàn)為以下形式,即:可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本文一般稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實施例中,本發(fā)明還可以實現(xiàn)為在一個或多個計算機可讀介質(zhì)中的計算機程序產(chǎn)品的形式,該計算機可讀介質(zhì)中包含計算機可讀的程序代碼。
[0021]可以采用一個或多個計算機可讀的介質(zhì)的任意組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或者計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計算機可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導(dǎo)線的電連接、便攜式計算機磁盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0022]計算機可讀的信號介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了計算機可讀的程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括——但不限于——電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號介質(zhì)還可以是計算機可讀存儲介質(zhì)以外的任何計算機可讀介質(zhì),該計算機可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
[0023]計算機可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限于一無線、電線、光纜、RF等等,或者上述的任意合適的組合。
[0024]可以以一種或多種程序設(shè)計語言或其組合來編寫用于執(zhí)行本發(fā)明操作的計算機程序代碼,所述程序設(shè)計語言包括面向?qū)ο蟮某绦蛟O(shè)計語言-諸如Java、Smalltalk、C++,還包括常規(guī)的過程式程序設(shè)計語言-諸如”C”語言或類似的程序設(shè)計語言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務(wù)器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網(wǎng)絡(luò)一-包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)-連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。
[0025]下面將參照本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,這些計算機程序指令通過計算機或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。
[0026]也可以把這些計算機程序指令存儲在能使得計算機或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計算機可讀介質(zhì)中,這樣,存儲在計算機可讀介質(zhì)中的指令就產(chǎn)生出一個包括實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instructionmeans)的制造品(manufacture)。
[0027]也可以把計算機程序指令加載到計算機、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計算機、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機實現(xiàn)的過程,從而使得在計算機或其它可編程裝置上執(zhí)行的指令能夠提供實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。
[0028]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
[0029]本發(fā)明涉及時序數(shù)據(jù)的處理,對時序數(shù)據(jù)的處理可以在圖1所示的計算機系統(tǒng)100上執(zhí)行。
[0030]本發(fā)明的總體構(gòu)思,是針對時序數(shù)據(jù)的特點,對時序數(shù)據(jù)進行壓縮,并按相應(yīng)的數(shù)據(jù)結(jié)構(gòu)存儲壓縮后的時序數(shù)據(jù),從而降低存儲時序數(shù)據(jù)所需的存儲空間,并提高對時序數(shù)據(jù)進行范圍查詢時的查詢速度。
[0031]下面參照附圖,說明本發(fā)明的各種實施方式。
[0032]首先參看圖2。圖2示意性地表示按照本發(fā)明一個實施例的用于處理時序數(shù)據(jù)的方法的流程圖。圖2所示的用于處理時序數(shù)據(jù)的方法包含以下步驟。
[0033]在步驟210,接收一個時序數(shù)據(jù)集合,其中,時序數(shù)據(jù)集合的每個元素包含一個時間戳和一個與時間戳相關(guān)聯(lián)的原始值,并且,所有的時間戳表示的時間,構(gòu)成一個具有固定時間間隔的時間序列。
[0034]圖4A示意性地表示一個時序數(shù)據(jù)集合的例子。圖4A用一個表411,表示一個時序數(shù)據(jù)集合S。表411的表頭中的“Line_No”表示行號,“TS”表示時間戳(Timestamp),“0V”表示原始值(original value)。表411的每一行代表時序數(shù)據(jù)集合S的一個元素,每個元素包含一個時間戳和一個與時間戳相關(guān)聯(lián)的原始值,例如,第I行表示的元素,包含時間戳“20120716.10:47:00”和與該時間戳相關(guān)聯(lián)的值“32.0”,該時間戳表示時間“2012年7月16日10點47分00秒”。表411中所有 的時間戳表不的時間構(gòu)成一個具有固定時間間隔的時間序列,例如,第2行的時間戳“20120716.10:47:10”表示的時間與第I行的時間戳“20120716.10:47:0 O”表示的時間,間隔10秒;第3行和第2行的時間戳分別表示的時間,也間隔10秒,如此等等。
[0035]為了方便敘述,以下也將時序數(shù)據(jù)集合S中的元素稱為“時間戳/原始值對”,記為“<TS,0V>”,例如,將表 411 的第 I 行的元素記為 <TS,0V> = <20120716.10:47:00,32.0>,表示時間戳“20120716.10:47:00”及其相關(guān)聯(lián)的原始值“32.0”。
[0036]<TS,0V>中的TS(時間戳)和OV(原始值)是相互關(guān)聯(lián)的,在不同的應(yīng)用中,原始值可能有不同的物理含義。例如,可以用〈20120716.10:47:00,32.0>表示一個溫度傳感器生成的采樣時間和采樣值,如圖4B所示的那樣。
[0037]參看圖4B,圖4B示意性地表示由傳感器生成的時序數(shù)據(jù)。更具體來說,圖4B用表412不意性地表不從不同的溫度傳感器(未予不出)接收的米樣時間和米樣值。表412的表頭中,“Devicejd”表示傳感器的標(biāo)識符,“TS”表示采樣時間,“ Temp”表示溫度(Temperature)采樣值。因此,表412的各行分別表示某個溫度傳感器在某個采樣時間測量到的溫度值,例如,第I行表示標(biāo)識符為“9093”的傳感器在時間“20120716.10:47:00”測量的溫度值“32.0” ;第3行表示另一個傳感器(標(biāo)識符為“9094”)在時間“20120716.10:47:10” 測量的溫度值 “31.8” …。
[0038]按照本發(fā)明一個實施例,步驟210中的時序數(shù)據(jù)集合S,可以包含從傳感器接收的時序數(shù)據(jù),時序數(shù)據(jù)集合S的每個元素包含的時間戳和與時間戳相關(guān)聯(lián)的原始值,分別表示傳感器的采樣時間和在該采樣時間測量的采樣值。
[0039]作為示例,可以將表411所示的時序數(shù)據(jù)集合S,看作是表412所示的采樣數(shù)據(jù)的一個子集,其中,表411的每個<TS,0V>,都是來自標(biāo)識符為“9093”的同一個溫度傳感器的采樣時間和采樣值。在這種情況下,時間戳TS表示溫度傳感器的采樣時間,原始值OV表示與采樣時間相關(guān)聯(lián)的溫度值。
[0040]下文將以時序數(shù)據(jù)集合S為例,說明本發(fā)明的各種方式。需要指出的是,表411只示出了時序數(shù)據(jù)集合S包含的6個元素,這僅僅是示例性的,在實際應(yīng)用中,一個時序數(shù)據(jù)集合包含的元素的數(shù)量是巨大的。例如,如果傳感器的采樣頻率是10赫茲(Hz)的傳感器,則該傳感器I分鐘就可以生成600個時間戳/原始值對。
[0041]現(xiàn)在返回圖2,在步驟210后,執(zhí)行步驟220。
[0042]在步驟220,按照預(yù)定的單調(diào)數(shù)值壓縮編碼方案,將每個原始值轉(zhuǎn)換成占用更小存儲空間的編碼值。
[0043]以下舉例說明步驟220的各種實施方式。
[0044]數(shù)值壓縮,是指將一個原始值轉(zhuǎn)換成一個編碼值,使得存儲編碼值所需的存儲空間比存儲原始值所需的存儲空間更小。單調(diào)數(shù)值壓縮編碼方案,指的是原始值與經(jīng)過數(shù)值壓縮轉(zhuǎn)換成的編碼值之間,具有一一對應(yīng)的關(guān)系,換言之,采用同樣的單調(diào)數(shù)值壓縮編碼方案,可以將編碼值還原成原始值。
[0045]按照本發(fā)明一個實施例,所述預(yù)定的單調(diào)數(shù)值壓縮編碼方案,是標(biāo)量壓縮(quantization compression)編碼方案。
[0046]標(biāo)量壓縮編碼方案是一種單調(diào)數(shù)值壓縮編碼方案,采用標(biāo)量壓縮,可以將占用8個字節(jié)的雙精度浮點數(shù)壓縮成一個只占用2個字節(jié)的整數(shù)。標(biāo)量壓縮編碼方案的一個算法,如下面的公式(I)所示:
[0047]CV =[ (OV-LB) / (UB-LB) *65536]......公式(I)
[0048]公式(I)中,符號“CV”代表編碼值或壓縮值(compressed value),“0V”代表原始值,“UB”代表一個上限值(Upper Bound), “LB”代表一個下限值(Lower Bound), “ []表示四舍五入運算。
[0049]原始值OV可以是任意的值,例如可以一個占用8個字節(jié)的雙精度浮點數(shù)。而上限值UB和下限值LB都是常數(shù),在具體實施本發(fā)明時,可以根據(jù)具體的應(yīng)用(例如采樣值的范圍)、經(jīng)驗數(shù)據(jù)和精度要求,為常數(shù)UB和LB設(shè)置適當(dāng)?shù)闹怠?br>
[0050]例如,表411時序數(shù)據(jù)集合S,表示的是由一個溫度傳感器生成的、涉及不同采樣時間的溫度值的數(shù)據(jù)。在這種情況下,根據(jù)溫度值的特點,可以設(shè)定LB = -50,UB = 200。
[0051]例如,時序數(shù)據(jù)集合S的第I個元素的原始值OV = 32.0,按照公式(I)將其轉(zhuǎn)換為編碼值CV的過程如下所示:
[0052]CV= [((32.0-(-50) )/(200-(-50)) *65536] = [21495.808] = 21496
[0053]“32.0”是一個雙精度浮點數(shù),長度為8 (字節(jié)),即存儲原始值“32.0”需要8個字節(jié)的存儲空間,編碼值CV =“21496”的十六進制為“0X53F8”,長度是2(字節(jié))。這意味著,原始值和相應(yīng)的編碼值二者的長度相差6個字節(jié)。
[0054]為了方便說明,以下說明中提及的數(shù)值的“長度”,指的是存儲該數(shù)值所需的字節(jié)(Byte)數(shù)。符號“0X”是一個前綴,表示緊隨其后的數(shù)值是十六進制格式的,例如,“0X53F8”表示一個2字節(jié)長的十六進制值“53F8”,可以將其記為B1B2 = 0X53F8,即高位字節(jié)BI =0X53,低位字節(jié) B2 = 0XF8。
[0055]以類似方式,可以將表411所示的其它原始值轉(zhuǎn)換成對應(yīng)的編碼值,結(jié)果圖5中的表521的第3列所示。例如,原始值OV = 32.0被轉(zhuǎn)換為編碼值CV = 21496,原始值OV =
31.8被轉(zhuǎn)換為編碼值CV = 21443......原始值OV = 32.2被轉(zhuǎn)換為編碼值CV = 21548。
第4列所示的是各個編碼值的十六進制表示,其中表頭中的符號“B1B2”表示長度為兩個字節(jié)的十六進制值。例如,編碼值CV = 21496的十六進制表示為B1B2 = 0X53F8,其中高位字節(jié) BI = 0X53,低位字節(jié) B2 = 0XF8。
[0056]標(biāo)量壓縮編碼方案的特點是,可以將一個占用8個字節(jié)的雙精度浮點數(shù)格式的原始值OV轉(zhuǎn)換成一個占用2個字節(jié)的整數(shù)編碼值CV,也可以將編碼值CV還原成原始值0V??梢则炞C,雖然公式(I)采用了四舍五入運算,通過根據(jù)具體應(yīng)用以及經(jīng)驗設(shè)置適當(dāng)?shù)膮?shù),可以使由于四舍五入運算而損失的精度,減小到可以忽略不計的程度。
[0057]以上說明的是用標(biāo)量壓縮編碼方案作為所述預(yù)定的單調(diào)數(shù)值壓縮編碼方案,但是,本發(fā)明不限于此。按照本發(fā)明一個實施例,步驟220中的預(yù)定的單調(diào)數(shù)值壓縮編碼方案,可以是反正切壓縮編碼方案。
[0058]反正切壓縮編碼也是一種單調(diào)數(shù)值壓縮編碼方法,可以將占用8個字節(jié)的雙精度浮點數(shù)壓縮成一個只占用3個字節(jié)的存儲空間的整數(shù)。反正切壓縮編碼的一個算法,如下面的公式(2)所示:
[0059]CV = [256*256*256*arctan(0V/100)/ji ]......公式(2)
[0060]其中,符號“CV”代表編碼值,“0V”代表原始值,“arctanO”是反正切函數(shù),“ π ”
是圓周率,“ □”表示四舍五入運算。
[0061]以時序數(shù)據(jù)集合S中的一個原始值OV = 32.0,為例,
[0062]CV = [256*256*256*arctan(32.0/100)/π] = 1653925。
[0063]值1653925的十六進制格式為0X193CA5,占用3個字節(jié)。
[0064]以類似方式,可以將表411中的其它原始值轉(zhuǎn)換成對應(yīng)的編碼值,結(jié)果如圖5的表522所示。表522結(jié)構(gòu)與表521的類似,只是第4列所示的表頭中的符號“B1B2B3”表示長度為3個字節(jié)的十六進制值。例如,編碼值CV = 1653925的十六進制表示為B1B2B3 =0X193CA5,其中高位字節(jié)BI = 0X19,低位字節(jié)B2B3 = 0X3CA5。
[0065]采用反余切壓縮編碼方案,可以將一個占用8個字節(jié)的雙精度浮點數(shù)格式的原始值OV轉(zhuǎn)換成一個占用3個字節(jié)的整數(shù)編碼值CV,也可以將編碼值CV還原成原始值0V。
[0066]以上舉例說明了單調(diào)壓縮編碼方案的兩種實施例,所屬【技術(shù)領(lǐng)域】的技術(shù)人員應(yīng)當(dāng)明白,本發(fā)明并不限于此,在實施本發(fā)明時,也可以采用任何其它的單調(diào)壓縮編碼方案。采用單調(diào)壓縮編碼方案的好處是,在通過編碼方案從原始值得到編碼值后,通過同一個編碼方案可以從編碼值導(dǎo)出原始值,而無需額外的存儲空間來存儲原始值與編碼值之間的映射關(guān)系,從而能節(jié)省存儲空間。
[0067]在步驟220之后,執(zhí)行步驟230。
[0068]在步驟230,將所有的時間戳所表示的時間劃分成多個預(yù)定長度的時間區(qū)間。
[0069]以時序數(shù)據(jù)集合S為例,假設(shè)預(yù)定長度為I分鐘,那么,可以將集合S的所有時間戳所表示的時間(20120716.10:47:00,20120716.10:47:10,......)劃分成多個I分鐘長度的時間區(qū)間,例如,20120716.10:47:00至20120716.10:48:00(不含)是一個I分鐘長度的時間區(qū)間。表411中顯示的時間戳的個數(shù)有限,但是顯然可以將未予顯示的時間戳所表示的時間劃分成更多的I分鐘長度的時間區(qū)間,例如:
[0070]20120716.10:48:00 至 20120716.10:49:00(不含)
[0071]在步驟440,將每個時間區(qū)間內(nèi)的所有的時間戳對應(yīng)的編碼值裝配成一個數(shù)據(jù)包,使得該數(shù)據(jù)包中包含按照時間戳順序排列的編碼值。
[0072]編碼值是通過轉(zhuǎn)換一個有對應(yīng)的時間戳的原始值而生成的,根據(jù)原始值與時間戳之間的關(guān)聯(lián)關(guān)系,編碼值與原始值對應(yīng)的時間戳之間也有相同的關(guān)聯(lián)關(guān)系。
[0073]例如,處于時間區(qū)間20120716.10:47:00 至 20120716.10:48:00(不含)”內(nèi)的時間戳對應(yīng)的編碼值CV是21496、21443、21470、21417、21548、21548,因此,將這些編碼值裝配成一個數(shù)據(jù)包(TVP),使該數(shù)據(jù)包TVP包含按照時間戳順序排列的編碼值21496、21443、21470、21417、21548、21548。
[0074]參看圖6,圖6示例性表示按照本發(fā)明一個實施例的用于存儲時序數(shù)據(jù)的各種數(shù)據(jù)結(jié)構(gòu)。
[0075]圖6的標(biāo)記641所指示的是一例數(shù)據(jù)包。具體來說,數(shù)據(jù)包641包含在時間區(qū)間20120716.10:47:00至20120716.10:48:00(不含)內(nèi)的時間戳對應(yīng)的6個編碼值21496、21443、21470、21417、21548、21548,它們按照時間戳的順序排列,每個占用兩個字節(jié)。
[0076]在步驟240后,過程轉(zhuǎn)至步驟250,將每個數(shù)據(jù)包及其相關(guān)聯(lián)的時間區(qū)間的標(biāo)識,存儲在一個數(shù)據(jù)庫記錄中。
[0077]參看圖6,圖6的標(biāo)記651所指示的是一例數(shù)據(jù)庫記錄。如圖所示,一個數(shù)據(jù)庫記錄651,至少包含兩個字段:時間區(qū)間標(biāo)識ST和數(shù)據(jù)包TVP。
[0078]由于一個預(yù)定長度的時間區(qū)間可以用該時間區(qū)間的起始時間來標(biāo)識,按照本發(fā)明一個實施例,用一個時間區(qū)間的起始時間ST(Start Time),作為該時間區(qū)間的標(biāo)識,即時間區(qū)間標(biāo)識。
[0079]圖6所示的數(shù)據(jù)庫記錄651中的數(shù)據(jù)包TVP字段的相關(guān)聯(lián)的時間區(qū)間為20120716.10:47:00至20120716.10:48:00 (不含),因此將該時間區(qū)間的起始時間20120716.10:47:00,作為該時間區(qū)間的標(biāo)識ST,表示該時間區(qū)間是從20120716.10:47:00開始、長度I分鐘的時間區(qū)間。
[0080]所屬【技術(shù)領(lǐng)域】的技術(shù)人員應(yīng)當(dāng)明白,在時間戳表不的時間構(gòu)成一個具有固定時間間隔(例如10秒)的時間序列的情況下,采用這樣的數(shù)據(jù)結(jié)構(gòu),可以導(dǎo)出數(shù)據(jù)包中包含的任何編碼值對應(yīng)的時間戳。
[0081]例如,數(shù)據(jù)包TVP中的第I個編碼值21496對應(yīng)的時間戳,等于起始時間ST+0*10,即20120716.10:47:00 ;第2個編碼值21443對應(yīng)的時間戳,等于起始時間ST+1*10秒,即20120716.10:47:10,...以此類推。
[0082]參看圖6,圖6的標(biāo)記Table_650所指示的是一例數(shù)據(jù)庫表,數(shù)據(jù)庫表Table_650是一個與表411對應(yīng)的數(shù)據(jù)庫表。如圖所示的數(shù)據(jù)庫表Table_650包含多個具有如標(biāo)記651所示的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)庫記錄,例如,一個數(shù)據(jù)庫記錄包含起始時間ST =20120716.10:47:00,以及相應(yīng)的數(shù)據(jù)包 TVP =〈21496,21443,21470,21417,21548,21548〉。[0083]所屬【技術(shù)領(lǐng)域】的技術(shù)人員應(yīng)當(dāng)明白,在具體實施本發(fā)明時,可以用其它方式表征時間區(qū)間,例如,也可以用一個時間區(qū)間的結(jié)束時間來表征一個固定長度的時間區(qū)間。因此,用起始時間來表征一個固定長度的時間區(qū)間的實施例,僅僅是示例性的,并不構(gòu)成對本發(fā)明各種實施例的限制。
[0084]按照本發(fā)明一個實施例,在每個數(shù)據(jù)庫記錄中還可以包含一個計數(shù)值,表示數(shù)據(jù)包中包含的編碼值的個數(shù)。這樣的數(shù)據(jù)庫記錄的結(jié)構(gòu)如標(biāo)記652所示。該數(shù)據(jù)庫記錄中,包含一個計數(shù)字段CTR,表示數(shù)據(jù)包VTP中包含的編碼值的個數(shù),例如,所示的數(shù)據(jù)庫記錄的數(shù)據(jù)包TVP中包含6個編碼值,相應(yīng)地,字段CTR的值為6。
[0085]以上描述的用于處理時序數(shù)據(jù)的方法的過程,涉及對時序數(shù)據(jù)的存儲。需要指出的是,圖2所示的方法中的步驟的次序,僅僅是示例性的,在實踐中可以有很多變化,例如,即使改變步驟820與步驟830的先后次序,也不影響本發(fā)明方法實施例的效果,因此,圖2所示的各個步驟的順序,并不構(gòu)成對本發(fā)明的嚴格限定。采用上述方法,既能降低為存儲時序數(shù)據(jù)所需的存儲空間,也能存儲時序數(shù)據(jù)的數(shù)據(jù)庫記錄的個數(shù),因此能減少為訪問所存儲的時序數(shù)據(jù)而執(zhí)行的磁盤I/O操作的次數(shù),從而提高整個數(shù)據(jù)庫系統(tǒng)的性能。
[0086]在按照上述方法存儲了時序數(shù)據(jù)后,可以響應(yīng)對時序數(shù)據(jù)的查詢請求,執(zhí)行查詢。
[0087]圖2中示例性地表示了按照本發(fā)明一個實施例的用于處理時序數(shù)據(jù)的查詢的過程,該過程包含以下步驟262至268。
[0088]在步驟262,接收對時序數(shù)據(jù)中的原始值的查詢,所述查詢包含基于時間戳的查詢條件。
[0089]所接收的查詢,例如是一個對設(shè)備標(biāo)識符為“9093”的傳感器的原始值的查詢Ql:
[0090]“getValueResult(*, Temperature,20120716.10:47:00,20120716.10:50)”
[0091]查詢Ql包含基于時間戳的查詢條件“20120716.10:47:00,20120716.10:50”,即“時間戳在012:07:16:10:47:00至20120716.10:50:00(不含)之間”。換言之,查詢Ql相當(dāng)于要以時間戳TS為入口,在表411所示的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)庫表中,查詢符合所述查詢條件的原始值0V,即“溫度”(temperature)。
[0092]在步驟264,根據(jù)所接收的查詢Ql,生成相應(yīng)的對數(shù)據(jù)包的查詢。
[0093]例如,根據(jù)查詢Ql,生成對數(shù)據(jù)包TVP的查詢Q2:
[0094]“select TVP from Table_650 where TS> = 20120716.10: 47: OOandTS〈20120716.10:50:00”
[0095]查詢Q2表示要在圖6所示的數(shù)據(jù)庫表Table_650中,查詢起始時間ST在20120716.10:47:00 至 20120716.10:50:00(不含)之間的數(shù)據(jù)包 TVP。
[0096]在步驟266,執(zhí)行所生成的查詢,獲得數(shù)據(jù)包。
[0097]例如,對于圖4B所示的數(shù)據(jù)庫表,可以獲得3個數(shù)據(jù)包,它們分別是起始時間為20120716.10:47:00,20120716.10:48:00,20120716.10:49:00 的記錄的數(shù)據(jù)包。
[0098]在步驟268,按照預(yù)定的單調(diào)數(shù)值壓縮編碼方案,將所獲得的數(shù)據(jù)包中滿足所述查詢條件的編碼值,還原成對應(yīng)的原始值,作為所接收的查詢的結(jié)果。
[0099]例如,起始時間為20120716.10:47:00的記錄的數(shù)據(jù)包滿足所述查詢條件的編碼值為21496、21443、21470、21417、21548和21548,它們都是按公式(I)從各個原始值生成的,因此,按照相同的公式(I),將這些編碼值分別還原成對應(yīng)的原始值。[0100]例如,以編碼值21496為例,此時CV = 21496,根據(jù)公式(I)進行如下的逆運算:
[0101]OV= [CV/65536*(200-(-50))-50] = [32.0007] = 32.0
[0102]OV = 32.0是按照預(yù)定的單調(diào)數(shù)值壓縮編碼方案對編碼值21496進行還原所得到的原始值。
[0103]上式中,“ □”表示四舍五入運算。
[0104]不難驗證,以同樣的方式,可以將起始時間為20120716.10:47:00的數(shù)據(jù)庫記錄的數(shù)據(jù)包中的 21443、21470、21417、21548 和 21548 分別還原成 31.8,31.9,31.7,32.2 和
32.2。
[0105]類似地,可以將起始時間為20120716.10:48:00,20120716.10:49:00的記錄的數(shù)
據(jù)包(未予示出)中滿足所述查詢條件的編碼值分別還原成相應(yīng)的原始值,這里不再贅述。
[0106]需要指出的是,在以上的說明中,對諸如查詢Ql和查詢Q2的描述、以及對查詢的過程的描述都是示意性的。所屬【技術(shù)領(lǐng)域】的技術(shù)人員基于圖7所示的數(shù)據(jù)結(jié)構(gòu),可以設(shè)計出各種查詢及其執(zhí)行方式的各種實施方式。
[0107]需要指出的是,以上在按照本發(fā)明實施例的方法的存儲時序數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上在對時序數(shù)據(jù)進行查詢的方式,由于減少了需要輸出的數(shù)據(jù)庫記錄的數(shù)目,從而減少了磁盤I/o操作的次數(shù)。由于CPU速度遠遠大于磁盤I/O操作速度,上述過程中因處理數(shù)值變換所花費的時間與減少磁盤I/o操作的次數(shù)所節(jié)省的時間相比,微不足道。
[0108]以上結(jié)合實施例,說明了一種用于存儲和查詢時序數(shù)據(jù)的方法。按照同一個發(fā)明構(gòu)思,本發(fā)明還公開另一種用于處理時序數(shù)據(jù)的方法。
[0109]圖3示意性表示按照本發(fā)明另一個實施例的用于處理時序數(shù)據(jù)的方法的流程圖。
[0110]以下結(jié)合各附圖,詳細說明圖3所示的方法的各種實施方式。
[0111]如圖所示,所述用于處理時序數(shù)據(jù)的方法,始于步驟310。
[0112]在步驟310,接收一個時序數(shù)據(jù)集合,其中,時序數(shù)據(jù)集合的每個元素包含一個時間戳和一個與時間戳相關(guān)聯(lián)的原始值。
[0113]步驟310與圖2所示的方法的步驟210基本相同,不再贅述。以下仍然以圖4A中的時序數(shù)據(jù)集合S,作為步驟310中所接收的時序數(shù)據(jù)集合的例子。
[0114]在步驟320,按照預(yù)定的單調(diào)數(shù)值壓縮編碼方案,將每個原始值轉(zhuǎn)換成占用更小存儲空間的編碼值。
[0115]同樣,步驟320與圖2所示的步驟320也基本相同,結(jié)果也如圖5中的表521和表522所示,在此不再贅述。
[0116]步驟330,為編碼值劃分編碼值區(qū)間。
[0117]按照本發(fā)明一個實施例,所述為編碼值劃分編碼值區(qū)間,包含將具有相同的高位字節(jié)的編碼值的劃分在一個編碼值區(qū)間,并將該高位字節(jié)作為編碼值區(qū)間標(biāo)識。
[0118]例如,以圖5中的表521的第4列所示的編碼值B1B2為例,由于0X53F8,0X53C3,0X53DE的高位字節(jié)BI為0X53,因此,將0X53F8,0X53C3,0X53DE劃分在同一個編碼值區(qū)間,并用BI = 0X53作為該編碼值區(qū)間的編碼值區(qū)間標(biāo)識。
[0119]同理,由于X5446,0X542C,0X542C 的高位字節(jié) BI 為 0X54,因此,將 X5446,0X542C,0X542C劃分在同一個編碼值區(qū)間,并用BI = 0X54作為該編碼值區(qū)間的編碼值區(qū)間標(biāo)識。
[0120]再例如,以圖5中的表522的第4列所示的編碼值B1B2B3為例,可以將高位字節(jié)BI為0X19的,因此,將0X193CA5、0X1916C6,0X1929B6…劃分在同一個編碼值區(qū)間,并用0X19
作為該編碼值區(qū)間的編碼值區(qū)間標(biāo)識。
[0121]步驟340,針對每個編碼值區(qū)間,將處于該編碼值區(qū)間中的每個編碼值及其時間戳裝配成數(shù)據(jù)包,使數(shù)據(jù)包中包含每個編碼值的低位字節(jié)和該編碼值對應(yīng)的時間戳。
[0122]參看圖7,圖7示例性表示按照本發(fā)明一個實施例的用于存儲時序數(shù)據(jù)的各種數(shù)據(jù)結(jié)構(gòu)。 [0123]圖7的標(biāo)記741所指示的是一例由BI = 0X53表征的編碼值區(qū)間中的每個編碼值及其時間戳裝配成的數(shù)據(jù)包VTP。如上文所述,BI = 0X53表征的編碼值區(qū)間包含3個編碼值,它們的低位字節(jié)分別是0XF8、0XC3和0XDE。數(shù)據(jù)包VTP 741包含BI = 0X53表征的編碼值區(qū)間中的每個編碼值的低位字節(jié)和該編碼值對應(yīng)的時間戳〈0XF8,20120716.10:47:00〉、〈0XC3,20120716.10:47:10>、〈0XDE,20120716.10:47:20〉。
[0124]按照本發(fā)明一個實施例,時序數(shù)據(jù)集合中所有的時間戳表示的時間,構(gòu)成一個具有固定時間間隔的時間序列。在這種情況下,由編碼值區(qū)間中的每個編碼值及其時間戳裝配成的數(shù)據(jù)包,包含以下數(shù)據(jù):基準(zhǔn)時間戳,每個編碼值的低位字節(jié)(圖5的表521中的B2,或者圖5的表522中的B2B3)和該編碼值對應(yīng)的時間戳與基準(zhǔn)時間戳之間的時間差Λ。
[0125]圖7的標(biāo)記742所指示的是另一例由BI = 0X53表征的編碼值區(qū)間中的每個編碼值及其時間戳裝配成的數(shù)據(jù)包VTP。
[0126]標(biāo)記742所示的數(shù)據(jù)包包含兩部分:
[0127]-基準(zhǔn)時間戳ST,例如 20120716.10:47:00 ;以及
[0128]-每個編碼值的低位字節(jié)Β2和該編碼值對應(yīng)的時間戳與基準(zhǔn)時間戳之間的時間差 Λ,即 <0XF8,00>、〈0XC 3,10>、〈0XDE,20>。
[0129]時間差Λ可以是一個表示時間間隔個數(shù)的值,例如,Δ = 10 (個時間間隔)可以表示一個編碼值對應(yīng)的時間戳與與基準(zhǔn)時間戳ST相差10個時間間隔,由于每個時間間隔的時間長度L是固定的,因此可以由基準(zhǔn)時間戳ST、Δ和L導(dǎo)出該編碼值對應(yīng)的時間戳為
ST+Δ 女 Lo
[0130]時間差Λ也可以是一個時間值,例如Λ = 10 (秒),在這種情況下,該編碼值對應(yīng)的時間戳為ST+Λ。
[0131]總之,從數(shù)據(jù)對<0XF8,00>、〈0XC3,10>、<0XDE,20>可以導(dǎo)出每個編碼值及其對應(yīng)的時間戳。以下以時間差Λ是時間值為例,說明本發(fā)明的各種實施方式。
[0132]例如,數(shù)據(jù)對<0XF8,00>中,B2 = 0XF8,由于該目標(biāo)的高位字節(jié)BI =“0X53”,由此可以導(dǎo)出其所表示的編碼值為B1B2 = “0X53F8” ;Δ = O是該編碼值對應(yīng)的時間戳與基準(zhǔn)時間戳之間的時間差,由于基準(zhǔn)時間戳是20120716.10:47:00,由此可以導(dǎo)出該編碼值對應(yīng)的時間戳為 20120716.10:47:00+0,即 “20120716.10:47:00”。
[0133]同理,由〈0XC3,10>,可導(dǎo)出其代表一個編碼值0X53C3和對應(yīng)的時間戳20120716.10:47:00 ;由〈0XDE,20>,可導(dǎo)出其代表一個編碼值0X53DE和對應(yīng)的時間戳20120716.10:47:20。
[0134]步驟350,將數(shù)據(jù)包和編碼值區(qū)間,存儲在一個數(shù)據(jù)庫記錄中。
[0135]參看圖7,圖7的標(biāo)記751所指示的是一例數(shù)據(jù)庫記錄。如圖所示,一個數(shù)據(jù)庫記錄751,至少包含兩個字段:編碼值區(qū)間標(biāo)識BI和數(shù)據(jù)包VTP。[0136]這里的編碼值區(qū)間標(biāo)識,采用該編碼值區(qū)間中所有編碼值共同的高位字節(jié)BI =0X53。
[0137]參看圖7,圖7的標(biāo)記Table_750所指示的是一例數(shù)據(jù)庫表,數(shù)據(jù)庫表Table_750是一個與表411對應(yīng)的數(shù)據(jù)庫表。如圖所示的數(shù)據(jù)庫表Table_750包含多個具有如標(biāo)記751所示的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)庫記錄,例如,一個數(shù)據(jù)庫記錄包含編碼值區(qū)間標(biāo)識BI = 0X53,以及相應(yīng)的數(shù)據(jù)包 VTP = 20120716.10:47:00,<0XF8,0>,〈0XC3,10>,<0XDE,20>。
[0138]按照本發(fā)明一個實施例,在每個數(shù)據(jù)庫記錄中還可以包含一個計數(shù)值,表示數(shù)據(jù)包中包含的編碼值的個數(shù)。這樣的數(shù)據(jù)庫記錄的結(jié)構(gòu)如標(biāo)記752所示。該數(shù)據(jù)庫記錄中,包含一個計數(shù)字段CTR,表示數(shù)據(jù)包VTP中表示的編碼值的個數(shù),例如,所示的數(shù)據(jù)庫記錄的數(shù)據(jù)包VTP中表示了 3個編碼值,相應(yīng)地,字段CTR的值為3。
[0139]所屬【技術(shù)領(lǐng)域】的技術(shù)人員應(yīng)當(dāng)明白,在具體實施本發(fā)明時,可以用其它方式表示編碼值區(qū)間,例如可以用編碼值的一個或多個高位(bit),或者用三字節(jié)的編碼值B1B2B3的兩個高位字節(jié)來表征編碼值區(qū)間。因此,本例中用二字節(jié)的編碼值B1B2的高位字節(jié)BI表征代表一個編碼值區(qū)間的的實施例,僅僅是示例性的,并不構(gòu)成對本發(fā)明各種實施例的限制。
[0140]與結(jié)合圖2所示的用于處理時序數(shù)據(jù)的方法類似,以上描述的用于處理時序數(shù)據(jù)的方法,也涉及對時序數(shù)據(jù)的存儲。采用上述方法,既能降低為存儲時序數(shù)據(jù)所需的存儲空間,也能存儲時序數(shù)據(jù)的數(shù)據(jù)庫記錄的個數(shù),因此能減少為訪問所存儲的時序數(shù)據(jù)而執(zhí)行的磁盤I/o操作的次數(shù),從而提高整個數(shù)據(jù)庫系統(tǒng)的性能。
[0141]在按照上述方法存儲了時序數(shù)據(jù)后,可以響應(yīng)對時序數(shù)據(jù)的查詢請求,執(zhí)行查詢。
[0142]圖3中示例性地表示了按照本發(fā)明一個實施例的用于處理時序數(shù)據(jù)的查詢的過程,該過程包含以下步驟36·2至368。
[0143]在步驟362,接收對時序數(shù)據(jù)中時間戳的查詢,所述查詢包含基于原始值的查詢條件。
[0144]所接收的查詢,例如是一個對設(shè)備號為9093的傳感器的時間戳的查詢Q3:
[0145]^getTSResult (*,TS, 32.0, 32.5) ”
[0146]查詢請求Q3包含基于原始值的查詢條件“32.0,32.5”,即原始值在32.0至32.5的范圍。換言之,查詢Q3相當(dāng)于要在表411所示的數(shù)據(jù)庫表中,以原始值OV為入口,查詢符合所述查詢條件的所有原始值對應(yīng)的時間戳。
[0147]在步驟364,按照預(yù)定的單調(diào)數(shù)值壓縮編碼方案,將所述對時序數(shù)據(jù)中時間戳的查詢轉(zhuǎn)換為對數(shù)據(jù)包中的時間戳的查詢。
[0148]例如,范圍查詢Q3中的查詢鍵值為32.0和32.5,根據(jù)查詢Q3,生成對數(shù)據(jù)庫表Table_750的數(shù)據(jù)包VTP的查詢Q4
[0149]按照公式(I),將原始值32.0轉(zhuǎn)換為0X53F8,將原始值32.5轉(zhuǎn)換為0X547B。
[0150]Q4 = “select TS from Table_750 where BI〉= 0X53 and BK = 0X54”
[0151]該查詢Q4表示要查詢數(shù)據(jù)庫表Table_4中,表征編碼值區(qū)間的高位字節(jié)在0X53至0X54之間的數(shù)據(jù)包VTP。
[0152]在步驟366,執(zhí)行所生成的查詢Q4,獲得數(shù)據(jù)包,將數(shù)據(jù)包中包含的符合所述查詢條件的每個編碼值的對應(yīng)的時間戳作為查詢結(jié)果。[0153]例如,對于圖7所示的數(shù)據(jù)庫表Table_750,可以獲得2個數(shù)據(jù)包:
[0154]第I 個數(shù)據(jù)包 VTP 的內(nèi)容是〈20120716.10:47:00>、〈0XF8,00>、〈0XC3,10>、〈0XDE,20>,由這個數(shù)據(jù)包,可以導(dǎo)出符合Q 3中規(guī)定的查詢條件時間戳20120716.10:47:00、20120716.10:47:10,20120716.10:47:20。
[0155]第2 個數(shù)據(jù)包 VTP 的內(nèi)容是〈20120716.10:47:00〉、<0X1903D3,30>、<0X0X196276,40>,<0X0X196276, 50>,由這個數(shù)據(jù)包,可以導(dǎo)出時間戳 20120716.10:47:30、20120716.10:47:40,20120716.10:47:50。
[0156]需要指出的是,在以上的說明中,對諸如時序數(shù)據(jù)集合S、數(shù)據(jù)庫表Table_750、查詢Q3和查詢Q4等實例的描述、以及對相應(yīng)的查詢的過程的描述都是示意性的。所屬【技術(shù)領(lǐng)域】的技術(shù)人員在實施本發(fā)明時,可以基于上述描述,針對圖7所示的數(shù)據(jù)結(jié)構(gòu),為各種應(yīng)用環(huán)境設(shè)計對上述各種實施例的其它變體。
[0157]以上說明了本發(fā)明的用于處理時序數(shù)據(jù)的方法的各種實施方式。按照同一個發(fā)明構(gòu)思,本發(fā)明還提供用于處理時序數(shù)據(jù)的裝置。
[0158]參看圖8,該圖示意性表示按照本發(fā)明一個實施例的用于處理時序數(shù)據(jù)的裝置的框圖。
[0159]圖8所示的用于處理時序數(shù)據(jù)的裝置800,包含數(shù)據(jù)接收模塊810、數(shù)據(jù)壓縮模塊820、時間劃分模塊830、數(shù)據(jù)裝配模塊840和數(shù)據(jù)存儲模塊850。
[0160]數(shù)據(jù)接收模塊810被配置用于接收一個時序數(shù)據(jù)集合,其中,時序數(shù)據(jù)集合的每個元素包含一個時間戳和一個與時間戳相關(guān)聯(lián)的原始值,并且,所有的時間戳表示的時間,構(gòu)成一個具有固定時間間隔的時間序列。
[0161]數(shù)據(jù)壓縮模塊820被配置用于按照預(yù)定的單調(diào)數(shù)值壓縮編碼方案,將每個原始值轉(zhuǎn)換成占用更小存儲空間的編碼值。
[0162]時間劃分模塊830被配置用于將所有的時間戳所表示的時間劃分成多個預(yù)定長度的時間區(qū)間。
[0163]數(shù)據(jù)裝配模塊840被配置用于將每個時間區(qū)間內(nèi)的所有的時間戳對應(yīng)的編碼值裝配成一個數(shù)據(jù)包,使得該數(shù)據(jù)包中包含按照時間戳順序排列的編碼值。
[0164]數(shù)據(jù)存儲模塊850被配置用于將每個數(shù)據(jù)包及其相關(guān)聯(lián)的時間區(qū)間的標(biāo)識,存儲在一個數(shù)據(jù)庫記錄中。
[0165]按照本發(fā)明一個實施例,所述預(yù)定的單調(diào)壓縮編碼方案包括以下的任何之一:標(biāo)量壓縮編碼方案;反正切壓縮編碼方案。
[0166]按照本發(fā)明一個實施例,裝置800進一步包含查詢接收模塊862、查詢轉(zhuǎn)換模塊864、查詢執(zhí)行模塊866和數(shù)據(jù)解壓模塊868。
[0167]查詢接收模塊862被配置用于接收對時序數(shù)據(jù)中的原始值的查詢,所述查詢包含基于時間戳的查詢條件。
[0168]查詢轉(zhuǎn)換模塊864被配置用于根據(jù)所接收的查詢,生成相應(yīng)的對數(shù)據(jù)包的查詢。
[0169]查詢執(zhí)行模塊866被配置用于執(zhí)行所生成的查詢,獲得數(shù)據(jù)包。
[0170]數(shù)據(jù)解壓模塊868被配置用于按照預(yù)定的單調(diào)數(shù)值壓縮編碼方案,將所獲得的數(shù)據(jù)包中符合查詢條件的編碼值,還原成對應(yīng)的原始值,作為所接收的查詢的結(jié)果。
[0171]按照本發(fā)明一個實施例,裝置800的數(shù)據(jù)存儲模塊進一步被配置用于在數(shù)據(jù)庫記錄中存儲數(shù)據(jù)包中包含的編碼值的個數(shù)。
[0172]按照本發(fā)明一個實施例,所述時序數(shù)據(jù)集合包含從傳感器接收的時序數(shù)據(jù),其中,時序數(shù)據(jù)集合的每個元素包含的時間戳和與時間戳相關(guān)聯(lián)的值,分別是來自傳感器的采樣時間和與采樣時間相關(guān)聯(lián)的值。
[0173]參看圖9,該圖示意性表示按照本發(fā)明另一個實施例的用于處理時序數(shù)據(jù)的裝置的框圖。
[0174]圖9所示的用于處理時序數(shù)據(jù)的裝置900,包含數(shù)據(jù)接收模塊910、數(shù)據(jù)壓縮模塊920、編碼值分組模塊930、數(shù)據(jù)裝配模塊940和數(shù)據(jù)存儲模塊950。
[0175]數(shù)據(jù)接收模塊910被配置用于接收一個時序數(shù)據(jù)集合,其中,時序數(shù)據(jù)集合的每個元素包含一個時間戳和一個與時間戳相關(guān)聯(lián)的原始值,并且,所有的時間戳表示的時間,構(gòu)成一個具有固定時間間隔的時間序列;
[0176]數(shù)據(jù)壓縮模塊920被配置用于按照預(yù)定的單調(diào)數(shù)值壓縮編碼方案,將每個原始值轉(zhuǎn)換成占用更小存儲空間的編碼值。
[0177]編碼值分組模塊930被配置用于為編碼值劃分編碼值區(qū)間。
[0178]數(shù)據(jù)裝配模塊940被配置用于針對每個編碼值區(qū)間,將處于該編碼值區(qū)間中的每個編碼值及其時間戳裝配成數(shù)據(jù)包,使數(shù)據(jù)包中包含每個編碼值的低位字節(jié)和該編碼值對應(yīng)的時間戳。
[0179]數(shù)據(jù)存儲模塊950被配置用于將每個數(shù)據(jù)包連同表征對應(yīng)的編碼值區(qū)間的標(biāo)識,存儲在一個數(shù)據(jù)庫記錄中。
[0180]按照本發(fā)明一個實施例,其中,所述預(yù)定的單調(diào)壓縮編碼方案包括以下的任何之一:標(biāo)量壓縮編碼方案;反正切壓縮編碼方案。
[0181]按照本發(fā)明一個實施例,其中,編碼值分組模塊930進一步被配置用于將具有相同的高位字節(jié)的編碼值的劃分在一個編碼值區(qū)間,數(shù)據(jù)存儲模塊950進一步被配置用于并將該高位字節(jié)作為編碼值區(qū)間標(biāo)識。
[0182]按照本發(fā)明一個實施例,其中,時序數(shù)據(jù)集合中所有的時間戳表示的時間,構(gòu)成一個具有固定時間間隔的時間序列,并且,數(shù)據(jù)裝配模塊940進一步被配置用于使數(shù)據(jù)包中包含基準(zhǔn)時間戳、以及每個編碼值的低位字節(jié)和該編碼值對應(yīng)的時間戳與基準(zhǔn)時間戳之間的時間差。
[0183]按照本發(fā)明一個實施例,裝置900進一步包含:查詢接收模塊962、查詢轉(zhuǎn)換模塊964和查詢執(zhí)行模塊966。
[0184]查詢接收模塊962被配置用于接收對時序數(shù)據(jù)中時間戳的查詢,所述查詢包含基于原始值的查詢條件。
[0185]查詢轉(zhuǎn)換模塊964被配置用于按照預(yù)定的單調(diào)數(shù)值壓縮編碼方案,將所述對時序數(shù)據(jù)中時間戳的查詢轉(zhuǎn)換為對數(shù)據(jù)包中時間戳的查詢;
[0186]查詢執(zhí)行裝置966被配置用于執(zhí)行所生成的查詢,獲得數(shù)據(jù)包,將數(shù)據(jù)包中包含的符合所述查詢條件的每個編碼值的對應(yīng)的時間戳作為查詢結(jié)果。
[0187]以上說明了本發(fā)明的用于處理時序數(shù)據(jù)的裝置的各種實施方式。由于上文已經(jīng)詳細說明了本發(fā)明的用于處理時序數(shù)據(jù)的方法的各種實施方式,在對用于處理時序數(shù)據(jù)的裝置的各種實施方式的說明中,省略了與對用于處理時序數(shù)據(jù)的方法的各種實施方式的說明中重復(fù)的、或者可以從中導(dǎo)出的內(nèi)容。
[0188]以上已經(jīng)描述了本發(fā)明的各實施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實施例。在不偏離所說明的各實施例的范圍和精神的情況下,對于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來說許多修改和變更都是顯而易見的。本文中所用術(shù)語的選擇,旨在最好地解釋各實施例的原理、實際應(yīng)用或?qū)κ袌鲋械募夹g(shù)的改進,或者使本【技術(shù)領(lǐng)域】的其它普通技術(shù)人員能理解本文披露的各實施例。
【權(quán)利要求】
1. 一種用于處理時序數(shù)據(jù)的方法,包含: 接收一個時序數(shù)據(jù)集合,其中,時序數(shù)據(jù)集合的每個元素包含一個時間戳和一個與時間戳相關(guān)聯(lián)的原始值,并且,所有的時間戳表示的時間,構(gòu)成一個具有固定時間間隔的時間序列; 按照預(yù)定的單調(diào)數(shù)值壓縮編碼方案,將每個原始值轉(zhuǎn)換成占用更小存儲空間的編碼值; 將所有的時間戳所表示的時間劃分成多個預(yù)定長度的時間區(qū)間; 將每個時間區(qū)間內(nèi)的所有的時間戳對應(yīng)的編碼值裝配成一個數(shù)據(jù)包,使得該數(shù)據(jù)包中包含按照時間戳順序排列的編碼值; 將每個數(shù)據(jù)包及其相關(guān)聯(lián)的時間區(qū)間的標(biāo)識,存儲在一個數(shù)據(jù)庫記錄中。
2.權(quán)利要求1的方法,所述預(yù)定的單調(diào)壓縮編碼方案包括以下的任何之一: 標(biāo)量壓縮編碼方案; 反正切壓縮編碼方案。
3.權(quán)利要求2的方法,進一步包含: 接收對時序數(shù)據(jù)中的原始值的查詢,所述查詢包含基于時間戳的查詢條件; 根據(jù)所接收的查詢,生成相應(yīng)的對數(shù)據(jù)包的查詢; 執(zhí)行所生成的查詢,獲得數(shù)據(jù)包; 按照預(yù)定的單調(diào)數(shù)值壓縮編碼方案,將所獲得的數(shù)據(jù)包中符合查詢條件的編碼值,還原成對應(yīng)的原始值,作為所接收的查詢的結(jié)果。
4.權(quán)利要求1的方法,所述將每個數(shù)據(jù)包及其相關(guān)聯(lián)的時間區(qū)間的標(biāo)識存儲在一個數(shù)據(jù)庫記錄中進一步包含,在數(shù)據(jù)庫記錄中存儲數(shù)據(jù)包中包含的編碼值的個數(shù)。
5.權(quán)利要求1的方法,其中,所述時序數(shù)據(jù)集合包含從傳感器接收的時序數(shù)據(jù),其中,時序數(shù)據(jù)集合的每個元素包含的時間戳和與時間戳相關(guān)聯(lián)的值,分別是來自傳感器的采樣時間和與采樣時間相關(guān)聯(lián)的值。
6.一種用于處理時序數(shù)據(jù)的方法,包含: 接收一個時序數(shù)據(jù)集合,其中,時序數(shù)據(jù)集合的每個元素包含一個時間戳和一個與時間戳相關(guān)聯(lián)的原始值; 按照預(yù)定的單調(diào)數(shù)值壓縮編碼方案,將每個原始值轉(zhuǎn)換成占用更小存儲空間的編碼值; 為編碼值劃分編碼值區(qū)間; 針對每個編碼值區(qū)間,將處于該編碼值區(qū)間中的每個編碼值及其時間戳裝配成數(shù)據(jù)包,使數(shù)據(jù)包中包含每個編碼值的低位字節(jié)和該編碼值對應(yīng)的時間戳; 將每個數(shù)據(jù)包連同表征對應(yīng)的編碼值區(qū)間的標(biāo)識,存儲在一個數(shù)據(jù)庫記錄中。
7.權(quán)利要求6的方法,其中,所述預(yù)定的單調(diào)壓縮編碼方案包括以下的任何之一: 標(biāo)量壓縮編碼方案; 反正切壓縮編碼方案。
8.權(quán)利要求7的方法,其中,將具有相同的高位字節(jié)的編碼值的劃分在一個編碼值區(qū)間,并將該高位字節(jié)作為編碼值區(qū)間的標(biāo)識。
9.權(quán)利要求8的方法,其中,所述時序數(shù)據(jù)集合中所有的時間戳表示的時間,構(gòu)成一個具有固定時間間隔的時間序列,所述數(shù)據(jù)包中包含基準(zhǔn)時間戳、以及每個編碼值的低位字節(jié)和該編碼值對應(yīng)的時間戳與基準(zhǔn)時間戳之間的時間差。
10.權(quán)利要求9的方法,進一步包含: 接收對時序數(shù)據(jù)中時間戳的查詢,所述查詢包含基于原始值的查詢條件; 按照預(yù)定的單調(diào)數(shù)值壓縮編碼方案,將所述對時序數(shù)據(jù)中時間戳的查詢轉(zhuǎn)換為對數(shù)據(jù)包中時間戳的查詢; 執(zhí)行所生成的查詢,獲得數(shù)據(jù)包,將數(shù)據(jù)包中包含的符合所述查詢條件的每個編碼值的對應(yīng)的時間戳作為查詢結(jié)果。
11.一種用于處理時序數(shù)據(jù)的裝置,包含: 數(shù)據(jù)接收模塊,被配置用于接收一個時序數(shù)據(jù)集合,其中,時序數(shù)據(jù)集合的每個元素包含一個時間戳和一個與時 間戳相關(guān)聯(lián)的原始值,并且,所有的時間戳表示的時間,構(gòu)成一個具有固定時間間隔的時間序列; 數(shù)據(jù)壓縮模塊,被配置用于按照預(yù)定的單調(diào)數(shù)值壓縮編碼方案,將每個原始值轉(zhuǎn)換成占用更小存儲空間的編碼值; 時間劃分模塊,被配置用于將所有的時間戳所表示的時間劃分成多個預(yù)定長度的時間區(qū)間; 數(shù)據(jù)裝配模塊,被配置用于將每個時間區(qū)間內(nèi)的所有的時間戳對應(yīng)的編碼值裝配成一個數(shù)據(jù)包,使得該數(shù)據(jù)包中包含按照時間戳順序排列的編碼值; 數(shù)據(jù)存儲模塊,被配置用于將每個數(shù)據(jù)包及其相關(guān)聯(lián)的時間區(qū)間的標(biāo)識,存儲在一個數(shù)據(jù)庫記錄中。
12.權(quán)利要求11的裝置,其中,所述預(yù)定的單調(diào)壓縮編碼方案包括以下的任何之一: 標(biāo)量壓縮編碼方案; 反正切壓縮編碼方案。
13.權(quán)利要求12的裝置,進一步包含: 查詢接收模塊,被配置用于接收對時序數(shù)據(jù)中的原始值的查詢,所述查詢包含基于時間戳的查詢條件; 查詢轉(zhuǎn)換模塊,被配置用于根據(jù)所接收的查詢,生成相應(yīng)的對數(shù)據(jù)包的查詢; 查詢執(zhí)行模塊,被配置用于執(zhí)行所生成的查詢,獲得數(shù)據(jù)包; 數(shù)據(jù)解壓模塊,被配置用于按照預(yù)定的單調(diào)數(shù)值壓縮編碼方案,將所獲得的數(shù)據(jù)包中符合查詢條件的編碼值,還原成對應(yīng)的原始值,作為所接收的查詢的結(jié)果。
14.權(quán)利要求11的裝置,其中,數(shù)據(jù)存儲模塊進一步被配置用于在數(shù)據(jù)庫記錄中存儲數(shù)據(jù)包中包含的編碼值的個數(shù)。
15.權(quán)利要求11的裝置,其中,所述時序數(shù)據(jù)集合包含從傳感器接收的時序數(shù)據(jù),其中,時序數(shù)據(jù)集合的每個元素包含的時間戳和與時間戳相關(guān)聯(lián)的值,分別是來自傳感器的采樣時間和與采樣時間相關(guān)聯(lián)的值。
16.一種用于處理時序數(shù)據(jù)的裝置,包含: 數(shù)據(jù)接收模塊,被配置用于接收一個時序數(shù)據(jù)集合,其中,時序數(shù)據(jù)集合的每個元素包含一個時間戳和一個與時間戳相關(guān)聯(lián)的原始值; 數(shù)據(jù)壓縮模塊,被配置用于按照預(yù)定的單調(diào)數(shù)值壓縮編碼方案,將每個原始值轉(zhuǎn)換成占用更小存儲空間的編碼值; 編碼值分組模塊,被配置用于為編碼值劃分編碼值區(qū)間; 數(shù)據(jù)裝配模塊,被配置用于針對每個編碼值區(qū)間,將處于該編碼值區(qū)間中的每個編碼值及其時間戳裝配成數(shù)據(jù)包,使數(shù)據(jù)包中包含每個編碼值的低位字節(jié)和該編碼值對應(yīng)的時間戳; 數(shù)據(jù)存儲模塊,被配置用于將每個數(shù)據(jù)包連同表征對應(yīng)的編碼值區(qū)間的標(biāo)識,存儲在一個數(shù)據(jù)庫記錄中。
17.權(quán)利要求16的裝置,其中,所述預(yù)定的單調(diào)壓縮編碼方案包括以下的任何之一: 標(biāo)量壓縮編碼方案; 反正切壓縮編碼方案。
18.權(quán)利要求17的裝置,其中,編碼值分組模塊進一步被配置用于將具有相同的高位字節(jié)的編碼值的劃分在一個編碼值區(qū)間,數(shù)據(jù)存儲模塊進一步被配置用于并將該高位字節(jié)作為編碼值區(qū)間的標(biāo)識。
19.權(quán)利要求18的裝置,其中,所述時序數(shù)據(jù)集合中所有的時間戳表示的時間,構(gòu)成一個具有固定時間間隔的時間序列,數(shù)據(jù)裝配模塊進一步被配置用于使數(shù)據(jù)包中包含基準(zhǔn)時間戳、以及每個編碼值的低位字節(jié)和該編碼值對應(yīng)的時間戳與基準(zhǔn)時間戳之間的時間差。
20.權(quán)利要求19的裝置,進一步包含: 查詢接收模塊,被配置用于接收對時序數(shù)據(jù)中時間戳的查詢,所述查詢包含基于原始值的查詢條件; 查詢轉(zhuǎn)換模塊,被配置用于按照預(yù)定的單調(diào)數(shù)值壓縮編碼方案,將所述對時序數(shù)據(jù)中時間戳的查詢轉(zhuǎn)換為對數(shù)據(jù)包中時間戳的查詢; 查詢執(zhí)行裝置,被配置用于執(zhí)行所生成的查詢,獲得數(shù)據(jù)包,將數(shù)據(jù)包中包含的符合所述查詢條件的每個編碼值的對應(yīng)的時間戳作為查詢結(jié)果。
【文檔編號】G06F17/30GK103577456SQ201210271367
【公開日】2014年2月12日 申請日期:2012年7月31日 優(yōu)先權(quán)日:2012年7月31日
【發(fā)明者】黃勝, 王晨, 劉凱, 陳曉艷 申請人:國際商業(yè)機器公司