用于處理多個傳感器的時序數據的方法和裝置制造方法
【專利摘要】本發明涉及時序數據處理,公開一種用于處理來自多個傳感器的時序數據的方法和裝置,其中,所述多個傳感器被劃分成多個傳感器組,每個時序數據包含一個時間戳和一個值,該值與該時間戳相關聯,該方法包含:數據接收步驟,接收來自多個傳感器的各個傳感器的時序數據;數據分組步驟,將接收的各個傳感器的時序數據分派到所述多個傳感器組中該個傳感器所屬的傳感器組;第一存儲步驟,在第一存儲器的第一數據庫存儲時序數據,使得被分派到所述多個傳感器組中的同一個傳感器組的多個時序數據被存儲在第一數據庫的至少一個數據庫記錄中;數據重組步驟,從第一數據庫中獲取多個傳感器的各個傳感器的時序數據。第二存儲步驟,在第二存儲器的第二數據庫存儲時序數據,使得同一個傳感器的多個時序數據被存儲在第二數據庫的至少一個數據庫記錄中。
【專利說明】用于處理多個傳感器的時序數據的方法和裝置
【技術領域】
[0001]本發明涉及時序數據處理,更具體地,涉及在數據庫中存儲來自傳感器的時序數據。
【背景技術】
[0002]在各種工業應用中,需要處理來自大量傳感器的海量時序數據-亦稱“時間序列數據”(Time Series Data),例如股價波動、氣溫變化等等。時序數據包含時間戳和與時間戳相關聯的值,例如包含來自傳感器的采樣時間和采樣值。在能源系統、智能電網等應用中,往往部署數以千萬計的傳感器,這些傳感器產生海量的時序數據,需要將它們持久地存儲在數據庫中以便查詢。在持久存儲時序數據之前,首先要從傳感器實時接收時序數據,并在臨時存儲器的數據庫中暫存所接收的時序數據。通常是按傳感器組織暫存時序數據,這種方式雖然直截了當,但是對緩存的利用效率不高,在處理來自大量低頻采樣的傳感器的海量時序數據時,尤其如此。
【發明內容】
[0003]針對現有技術的狀況,本發明的一個目的是提供一種用于處理來自多個傳感器的時序數據的改進的方法和裝置。
[0004]一方面,提供一種用于處理來自多個傳感器的時序數據的方法,其中,所述多個傳感器被劃分成多個傳感器組,每個時序數據包含一個時間戳和一個值,該值與該時間戳相關聯,該方法包含:數據接收步驟,接收來自多個傳感器的各個傳感器的時序數據;數據分組步驟,將接收的各個傳感器的時序數據分派到所述多個傳感器組中該個傳感器所屬的傳感器組;第一存儲步驟,在第一存儲器的第一數據庫存儲時序數據,使得第一數據庫的各個數據庫記錄包含被分派到所述多個傳感器組中的同一個傳感器組的多個時序數據;數據重組步驟,從第一數據庫中獲取多個傳感器的各個傳感器的時序數據;第二存儲步驟,在第二存儲器的第二數據庫存儲時序數據,使得第二數據庫的各個數據庫記錄包含同一個傳感器的多個時序數據。
[0005]另一方面,提供一種用于處理來自多個傳感器的時序數據的裝置,其中,所述多個傳感器被劃分成多個傳感器組,每個時序數據包含一個時間戳和一個值,該值與該時間戳相關聯,該裝置包含:數據接收模塊,被配置得用于接收來自多個傳感器的各個傳感器的時序數據;數據分組模塊,被配置得用于將接收的各個傳感器的時序數據分派到所述多個傳感器組中該個傳感器所屬的傳感器組;第一存儲控制模塊,被配置得用于在第一存儲器的第一數據庫存儲時序數據,使得第一數據庫的各個數據庫記錄包含被分派到所述多個傳感器組中的同一個傳感器組的多個時序數據;數據重組模塊,被配置得用于從第一數據庫中獲取多個傳感器的各個傳感器的時序數據;第二存儲控制模塊,被配置得用于在第二存儲器的第二數據庫存儲時序數據,使得第二數據庫的各個數據庫記錄包含同一個傳感器的多個時序數據。【專利附圖】
【附圖說明】
[0006]通過結合附圖對本公開示例性實施方式進行更詳細的描述,本公開的上述以及其它目的、特征和優勢將變得更加明顯,其中,在本公開示例性實施方式中,相同的參考標號通常代表相同部件。
[0007]圖1示出了適于用來實現本發明實施方式的示例性計算系統100的框圖;
[0008]圖2是按照本發明一個實施例的方法的示意性流程圖;
[0009]圖3是按照本發明一個實施例的裝置的示意性框圖;
[0010]圖4示意性地表示來自傳感器的時序數據的例子;
[0011]圖5A和5B示意性地表示按照本發明實施例、在第一存儲器中存儲來自多個傳感器的時序數據的數據庫記錄;
[0012]圖6A和6B示意性地表示按照本發明一個實施例的用于第二存儲器中存儲時序數據的數據庫記錄;
[0013]圖7示意性地表示按照本發明另一個實施例的用于第二存儲器中存儲時序數據的數據庫記錄;
[0014]圖8是傳感器的時序數據的一種圖示。
【具體實施方式】
[0015]下面將參照附圖更詳細地描述本公開的優選實施方式。雖然附圖中顯示了本公開的優選實施方式,然而應該理解,可以以各種形式實現本公開而不應被這里闡述的實施方式所限制。相反,提供這些實施方式是為了使本公開更加透徹和完整,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。
[0016]圖1示出了適于用來實現本發明實施方式的示例性計算系統100的框圖。如圖1所示,計算機系統100可以包括:CPU(中央處理單元)101、RAM(隨機存取存儲器)102、ROM(只讀存儲器)103、系統總線104、硬盤控制器105、鍵盤控制器106、串行接口控制器107、并行接口控制器108、顯示控制器109、硬盤110、鍵盤111、串行外部設備112、并行外部設備113和顯示器114。在這些設備中,與系統總線104耦合的有CPUlOl、RAM102、R0M103、硬盤控制器105、鍵盤控制器106、串行控制器107、并行控制器108和顯示控制器109。硬盤110與硬盤控制器105耦合,鍵盤111與鍵盤控制器106耦合,串行外部設備112與串行接口控制器107耦合,并行外部設備113與并行接口控制器108耦合,以及顯示器114與顯示控制器109耦合。應當理解,圖1所述的結構框圖僅僅是為了示例的目的,而不是對本發明范圍的限制。在某些情況下,可以根據具體情況增加或減少某些設備。
[0017]所屬【技術領域】的技術人員知道,本發明可以實現為系統、方法或計算機程序產品。因此,本公開可以具體實現為以下形式,即:可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結合的形式,本文一般稱為“電路”、“模塊”或“系統”。此外,在一些實施例中,本發明還可以實現為在一個或多個計算機可讀介質中的計算機程序產品的形式,該計算機可讀介質中包含計算機可讀的程序代碼。
[0018]可以采用一個或多個計算機可讀的介質的任意組合。計算機可讀介質可以是計算機可讀信號介質或者計算機可讀存儲介質。計算機可讀存儲介質例如可以是一但不限于一電、磁、光、電磁、紅外線、或半導體的系統、裝置或器件,或者任意以上的組合。計算機可讀存儲介質的更具體的例子(非窮舉的列表)包括:具有一個或多個導線的電連接、便攜式計算機磁盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質可以是任何包含或存儲程序的有形介質,該程序可以被指令執行系統、裝置或者器件使用或者與其結合使用。
[0019]計算機可讀的信號介質可以包括在基帶中或者作為載波一部分傳播的數據信號,其中承載了計算機可讀的程序代碼。這種傳播的數據信號可以采用多種形式,包括——但不限于——電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號介質還可以是計算機可讀存儲介質以外的任何計算機可讀介質,該計算機可讀介質可以發送、傳播或者傳輸用于由指令執行系統、裝置或者器件使用或者與其結合使用的程序。
[0020]計算機可讀介質上包含的程序代碼可以用任何適當的介質傳輸,包括一但不限于一無線、電線、光纜、RF等等,或者上述的任意合適的組合。
[0021]可以以一種或多種程序設計語言或其組合來編寫用于執行本發明操作的計算機程序代碼,所述程序設計語言包括面向對象的程序設計語言一諸如Java、Smalltalk、C++,還包括常規的過程式程序設計語言一諸如”C”語言或類似的程序設計語言。程序代碼可以完全地在用戶計算機上執行、部分地在用戶計算機上執行、作為一個獨立的軟件包執行、部分在用戶計算機上部分在遠程計算機上執行、或者完全在遠程計算機或服務器上執行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網絡一包括局域網(LAN)或廣域網(WAN)-連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網服務提供商來通過因特網連接)。
[0022]下面將參照本發明實施例的方法、裝置(系統)和計算機程序產品的流程圖和/或框圖描述本發明。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數據處理裝置的處理器,從而生產出一種機器,這些計算機程序指令通過計算機或其它可編程數據處理裝置執行,產生了實現流程圖和/或框圖中的方框中規定的功能/操作的裝置。
[0023]也可以把這些計算機程序指令存儲在能使得計算機或其它可編程數據處理裝置以特定方式工作的計算機可讀介質中,這樣,存儲在計算機可讀介質中的指令就產生出一個包括實現流程圖和/或框圖中的方框中規定的功能/操作的指令裝置(instructionmeans)的制造品(manufacture)。
[0024]也可以把計算機程序指令加載到計算機、其它可編程數據處理裝置、或其它設備上,使得在計算機、其它可編程數據處理裝置或其它設備上執行一系列操作步驟,以產生計算機實現的過程,從而使得在計算機或其它可編程裝置上執行的指令能夠提供實現流程圖和/或框圖中的方框中規定的功能/操作的過程。
[0025]附圖中的流程圖和框圖顯示了根據本發明的多個實施例的系統、方法和計算機程序產品的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現規定的邏輯功能的可執行指令。也應當注意,在有些作為替換的實現中,方框中所標注的功能也可以以不同于附圖中所標注的順序發生。例如,兩個連續的方框實際上可以基本并行地執行,它們有時也可以按相反的順序執行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執行規定的功能或操作的專用的基于硬件的系統來實現,或者可以用專用硬件與計算機指令的組合來實現。
[0026]本發明涉及時序數據的處理,對時序數據的處理可以在圖1所示的計算機系統100上執行。
[0027]本發明的總體構思,是針對來自多個低頻采樣的傳感器的時序數據的特點,首先以較高的效率暫存從多個傳感器接收的時序數據,然后重組所暫存的時序數據,并按相應的數據結構永久性地存儲時序數據。進一步,以壓縮方式存儲時序數據,由此降低存儲時序數據所需的存儲空間。
[0028]下面參照附圖,說明本發明的各種實施方式。
[0029]首先參看圖2。圖2示意性地表示按照本發明一個實施例的用于處理來自多個傳感器的時序數據的方法的流程圖。
[0030]圖2所示的方法處理的時序數據,來自多個傳感器(未予示出),例如來自1000個傳感器。作為初始化步驟(未予示出),將所述多個傳感器劃分成多個傳感器組,例如,將1000個傳感器劃分成100個傳感器組,每個傳感器組包含10個傳感器,記錄傳感器組與傳感器之間的映射關系如下:
[0031]Gl = {1,2,...10},—G10 = {91,92,...100},—G100 = {991,992,...1000} [0032]即傳感器組Gl包含傳感器1、2、…10 ;傳感器組GlO包含傳感器91、92、…100 ;傳感器組GlOO包含傳感器991、992、…1000。當然,這樣的分組只是示例性的,在具體實踐中,傳感器的數量可能數以千萬計,可以根據實際情況,例如根據傳感器的采樣頻率,適當地配置分組參數,使每個傳感器組包含更多的、例如數百乃至數千個傳感器。
[0033]圖2所示的方法處理的時序數據,均包含一個時間和一個與時間戳關聯的值。時間戳代表值的采樣時間,簡記為“TS”或“T”,與時間戳相關聯的值也稱采樣值,簡記為“V”。說明書中也用二元組“〈時間戳,值〉”來表示一對相互關聯的時間戳和值,稱為“時間戳-值對”。為了方便敘述,在不致引起混淆的情況下,以下也將傳感器的時序數據包含的值稱為“傳感器的值”,將傳感器的時序數據包含的時間或時間戳,稱為“傳感器的時間”。
[0034]概括來說,如圖2所示的方法包含以下步驟:數據接收步驟210、數據分組步驟220、第一存儲步驟230、數據重組步驟240和第二存儲步驟250。現在結合其它附圖,詳細說明各個步驟的操作。
[0035]該方法的過程始于數據接收步驟210,該步驟接收來自多個傳感器(未予示出)的各個傳感器的時序數據。
[0036]圖4示意性地表示來自傳感器的時序數據,其中的表411示意性地表示來自多個傳感器的一部分時序數據,其中表頭“ID”、“TS”和“V”所在欄的內容,分別是傳感器標識符、傳感器的時間戳和值。例如,第I行表示標識符為“I”的傳感器(傳感器I)在時間“20120716.10:47:00” 測量的溫度值 “32.0”。
[0037]在步驟210后,執行數據分組步驟220,將接收的各個傳感器的時序數據分派到所述多個傳感器組中該個傳感器所屬的傳感器組。[0038]例如,將來自1000個傳感器的各個傳感器的時序數據分派到傳感器組G1、G2、…GlO0假設在某一時刻,分配到傳感器組Gl的時序數據如圖4的表411所示。
[0039]表411所示的時序數據,以及上述對傳感器的分組,僅僅是示例性的。步驟210可以接收來自更多的傳感器的時序數據,在將多個傳感器劃分成多個傳感器組的情況下,每個被接收的時序數據都屬于一個傳感器組。
[0040]在步驟220之后,執行第一存儲步驟230,在第一存儲器的第一數據庫DBl存儲時序數據,使得第一數據庫的各個數據庫記錄包含被分派到所述多個傳感器組中的同一個傳感器組的多個時序數據。
[0041]按照本發明一個實施例,第一存儲器是一個用于臨時存儲數據的臨時存儲器,可以是易失性存儲器,也可以是非易失性存儲器。第一數據庫例如可以是一個關系數據庫(RDB)。
[0042]下面參照圖5A和5B,進一步說明步驟230的實現方式。
[0043]圖5A示意性地表示按照本發明一個實施例的數據庫記錄的結構。圖5A所示的數據庫記錄包含:
[0044](I)組標識符(G_ID)501A,是一個數據庫記錄對應的傳感器組的標識符。
[0045](2)數據部分504A,包含多個三元組〈ID,V,T>,其中,ID表示傳感器標識符,V和T分別表示傳感器的值和時間戳,即傳感器的時序數據中的值和時間戳。可以通過在數據庫記錄中設置一個額外的計數器,表示數據部分504Α所包含的三元組的個數。
[0046]例如,假設一個數據庫記錄包含表411所示的分派到傳感器組Gl的時序數據,則該數據庫記錄可以表示為:
[0047]{G1,<1,32.0,20120716.10:47:00〉,...<10,32.2,20120716.10:47:40〉}
[0048]其中,G_ID=“61”,三元組〈1,32.0,20120716.10:47:00> 表示傳感器 I (ID = I)、傳感器I的時序數據中的值(V) “32.0”以及該值對應的時間戳(T) “20120716.10:47:00”。
[0049]在該數據庫記錄中存儲了來自多個傳感器的時序數據。
[0050]按照本發明一個實施例,在第一存儲步驟230之前,可以對時序數據進行壓縮,產生壓縮的時序數據。相應地,在第一存儲步驟中,所述在第一存儲器的第一數據庫存儲時序數據,包含在第一存儲器的第一數據庫存儲壓縮的時序數據。
[0051]對時序數據進行壓縮,是指將原始時序數據轉換成壓縮的時序數據。而存儲壓縮的時序數據所需的存儲空間,比存儲原始時序數據所需的存儲空間更小。可以采用現有技術中各種數據壓縮方法,對表411的時序數據進行壓縮,產生壓縮的時序數據。
[0052]按照本發明一個實施例,所述對時序數據進行壓縮,包含對時序數據中的時間戳進行壓縮。
[0053]圖5B示意性地表示按照本發明一個實施例的用于以壓縮方式存儲數據的數據庫記錄的結構。圖5B所示的數據庫記錄包含以下字段:
[0054](I)組標識符(G_ID) 501,表示傳感器組的標識符;
[0055](2)基準時間戳(Base_TS)502,表示一個基準時間;
[0056](3)點數據包(P_Blob)504,由多個多個三元組〈ID,V,At>504_l構成。三元組<ID,V,At〉中的“ID”和“V”的含義與圖5A所示的三元組〈I D,V,T>中的“ID”和“V”的含義分別相同,“At”是值“V”對應的時間戳與基準時間戳502之間的偏差量。由At和基準時間戳502,可以導出值V對應的時間戳。
[0057](4)計數器(P_Counter) 503,表示三元組504_1的個數。例如,如果P_Counter503的值為10,則表示點數據包504包含10個三元組504_1。點數據包504中可容納的三元組的個數,除了受限于數據庫記錄的最大長度,也與數據庫記錄中的數據或三元組中的數據被壓縮的程度有關,數據壓縮率越大,可容納的三元組的個數越多。
[0058]例如,假設一個數據庫記錄包含表411所示的分派到傳感器組Gl的時序數據,則圖5B所示結構數據庫記錄可以表示為:
[0059]{61,20120716.10:47:00,10,P_Blob},其中
[0060]P_Blob = <1,32.0,0>,<2,31.8,10>,<3,31.0,10>…〈10,32.2,40>。
[0061]與圖5A所示的數據庫記錄相比,圖5B所示的數據庫記錄的數據,是經過對時序數據中的時間戳進行壓縮而產生壓縮的時序數據。采用圖5B所示的壓縮方式,可以在一個數據庫記錄中存儲更多的時序數據。
[0062]需要指出的是,圖5B所示的數據壓縮方式只是示意性的,所屬【技術領域】的技術人員應當明白,可以采用其他數據壓縮方式,對圖5A所示結構的數據庫記錄的數據進行進一步壓縮。對圖5B所示結構的數據庫記錄的數據,也可以進行進一步壓縮。
[0063]按照本發明一個實施例,所述對時序數據進行壓縮,包含對各個傳感器的時序數據中的值進行線性壓縮。對各個傳感器的時序數據中的值進行線性壓縮,可以減少所需存儲的如圖5A或5B所示的三元組的個數。
[0064]為了避免影響對圖2所示的過程的描述的連貫性,對傳感器的值進行線性壓縮的實施方式,將在后文將結合附圖加以詳細說明。
[0065]需要指出的是,圖5A和圖5B所示的第一存儲器中的每個數據庫記錄都唯一地對應一個傳感器組;而一個傳感器組,則可以對應多個圖5A或圖5B所示的數據庫記錄。
[0066]來自多個傳感器的時序數據,是按照時間順序接收的。按照常規的方式,在永久性地存儲時序數據永久地之前,要在臨時存儲器中按傳感器存儲所接收的時序數據,即按傳感器在臨時存儲器的數據庫記錄中存儲時序數據,其中,對應一個傳感器的一個數據庫記錄中,只記錄一個時序數據。在傳感器數量大,采樣頻率低的應用中,需要大量的緩存空間才能支持這種存儲方式。
[0067]按照本發明實施例的方法,則按傳感器組存儲所接收的時序數據,其中,第一存儲器中的第一數據庫的每個數據庫記錄包含屬于該數據庫記錄對應的傳感器組的傳感器的時序數據,換言之,該步驟將來自一個傳感器組所屬的多個傳感器的時序數據存儲在一個數據庫記錄中,這可以有效地利用數據庫記錄的最大長度,由此可以節省所需緩存的空間。
[0068]此外,第一存儲步驟230不但按傳感器組存儲所接收的時序數據,而且可以以壓縮方式存儲所接收的時序數據,從而可以節省存儲空間,使得在一個數據庫記錄中能存儲更多的時序數據。
[0069]按照本發明一個實施例,可以通過在第一數據庫的數據庫記錄中設置適當的字段,為數據庫記錄建立各種索引,例如:最大值索引,該索引包含數據庫記錄中的時序數據中的最大值與數據庫記錄之間的映射關系;最小值索引,該索引包含數據庫記錄中的時序數據中的最小值與數據庫記錄之間的映射關系 ;起始時間索引,該索引包含數據庫記錄中的時序數據中的最早時間戳與數據庫記錄之間的映射關系;結束時間索引,該索引包含數據庫記錄中的時序數據中的最晚時間戳與數據庫記錄之間的映射關系。上述索引可以用于對第一數據庫上存儲的時序數據進行各種檢索。
[0070]現在返回圖2,在步驟230后,執行數據重組步驟240,從第一數據庫中獲取多個傳感器的各個傳感器的時序數據。
[0071]例如,可以在用于存儲來自傳感器的時序數據的第一存儲器充滿時,或者在第一存儲器開始存儲時序數據后的預定時間,從第一數據庫中獲取多個傳感器的各個傳感器的時序數據。具體來說,可以按照傳感器組與傳感器之間的映射關系,從一個傳感器所屬的傳感器組所在的數據庫記錄中,抽取該傳感器的時序數據。
[0072]轉看圖4,圖中的表412示意性地表示數據重組步驟240從第一數據庫獲取的一個傳感器的一部分時序數據。表412中的表頭“TS”和“V”的含義與表411的相同,在此無須贅述。為了便于說明,假設表412所示的26個時序數據,是屬于傳感器組GlO的傳感器100的一部分時序數據。
[0073]在數據重組步驟240之后,執行第二存儲步驟250,在第二存儲器的第二數據庫DB2存儲時序數據,使得同一個傳感器的多個時序數據被存儲在第二數據庫的至少一個數據庫記錄中。
[0074]第二存儲器可以是非易失性存儲器,例如磁盤、光盤等。第二數據庫可以是關系數據庫。
[0075]第二數據庫中的數據庫記錄可以用下面的表達式(I)表示:
[0076]{ID,〈V,T>,〈V,Τ>,…} (I)其中,ID表示傳感器標識符,多個二元組〈V,Τ>表示屬于該傳感器標識符代表的傳感器的多個時序數據。例如,假設第二數據庫的一個數據庫記錄包含表412所示的時序數據,則該數據庫記錄的內容可以表示為: [0077]{G10, <3,20120806.10:00:00), …〈5,20120806.10:00:25>}其中,GlO 是傳感器標識符,<3,20120806.10:00:00〉分別代表表412中的第I行的時序數據,〈5,20120806.10:00:25>代表最后一行的時序數據。
[0078]需要指出的是,表達式(I)僅僅是示意性的。第二數據庫的數據庫記錄可以包含更多的字段,數據庫記錄中存儲的時序數據,可以包含比表412所示的更多或更少的時序數據,并且,一個傳感器可以對應于多個存儲其時序數據的數據庫記錄。所屬【技術領域】的技術人員在具體實踐中,可以針對可能的需要,例如對第二數據庫進行檢索的需要,對表達式
(I)所示的結構作出各種修改,例如增加字段。
[0079]按照本發明一個實施例,所述第二存儲步驟250進一步包含:在第二存儲器的第二數據庫按時間戳存儲時序數據。換言之,在按傳感器存儲時序數據的基礎上進一步按時間存儲時序數據,這可以方便以后在第二數據庫中進行基于傳感器和時間的檢索。
[0080]按照本發明一個實施例,在第二存儲步驟250之前,甚至在第一步驟230之前,可以對時序數據進行壓縮,產生壓縮的時序數據。相應地,在第二存儲步驟中,所述在第二存儲器的第二數據庫存儲時序數據,包含在第二存儲器的第二數據庫存儲壓縮的時序數據。
[0081]按照本發明一個實施例,所述對時序數據進行壓縮,包含對時序數據中的時間戳進行壓縮。
[0082]圖6Α示意性地表示按照本發明一個實施例用于以壓縮方式按時間戳存儲時序數據的數據庫記錄的結構。圖6Α所示的數據庫記錄與圖5Β所示的數據庫記錄相比,除了傳感器標識符601與組標識符501之間以及二元組〈V,Δ t>與三元組〈ID,V,Δ t>之間的差另IJ外,其它部分基本相同。具體來說,包含以下字段:
[0083]-傳感器標識符(ID)601,表不一個傳感器的標識符;
[0084]-基準時間戳(Base_TS)602,表示一個基準時間;
[0085]-計數器(V_Counter)603 ;
[0086]-值數據包(V_Blob)604,由多個二元組〈V,Δt>604_l構成,二元組〈V,At〉中的“V”表示值,“At”表示值“V”對應的時間戳與基準時間戳602之間的偏差量,由〈V,Δ t>和基準時間戳602,可以導出二元組〈V,At〉對應的〈時間戳,值〉對。
[0087]計數器603的值表示二元組604_1的個數。
[0088]例如,按照圖6A所示的結構,可以在一個數據庫記錄中存儲表412所示的時序數據,其內容可以示意性地表示如下:
[0089]{100,20120816.10:00:00,26,〈3,0>,<3.3,1>,<3.6,2>,…〈5,25>}
[0090]按照本發明一個實施例,所述對時序數據進行壓縮,包含對各個傳感器的時序數據中的值進行線性壓縮。
[0091]按照本發明一個實施例,可以通過在表達式(I)或圖6A所示的結構的數據庫記錄中設置適當的字段,為數據庫記錄建立各種索引,例如:起始時間索引,該索引包含數據庫記錄中的時序數據中的最早時間戳與數據庫記錄之間的映射關系;結束時間索引,該索引包含數據庫記錄中的時序數據中的最晚時間戳與數據庫記錄之間的映射關系。上述索引可以用于對第二數據庫上存儲的時序數據進行基于時間的各種檢索。
[0092]按照本發明一個實施例,所述第二存儲步驟250進一步包含:在第二存儲器的第二數據庫按值存儲時序數據。`
[0093]按照本發明一個實施例,在第二存儲步驟250之前,可以對時序數據進行壓縮,產生壓縮的時序數據。相應地,在第二存儲步驟中,所述在第二存儲器的第二數據庫存儲時序數據,包含在第二存儲器的第二數據庫存儲壓縮的時序數據。
[0094]按照本發明一個實施例,所述對時序數據進行壓縮,包含對時序數據中的時間戳進行壓縮。
[0095]圖7示意性地表示按照本發明另一個實施例的用于以壓縮方式按時間戳存儲時序數據的數據庫記錄的結構。圖7所示的數據庫記錄包含以下字段:
[0096]-傳感器標識符(ID)701,表示一個傳感器的標識符;
[0097]-值范圍鍵(RangeJfey)702,表示該數據庫記錄中存儲的值的范圍;
[0098]-基準時間戳(Base_ST)704,表示一個基準時間;
[0099]-時間戳數據包(TS_Blob)703,包含:
[0100]-多個二元組〈V,At>703_2,二元組〈V,Λt>中的“V”表示值,“ Λ t”表示值“V”對應的時間戳與基準時間戳704之間的偏差量,因此,〈V,Δ t>和基準時間戳Base_TS704,可以表示二元組〈V,At〉對應的〈時間戳,值〉對。
[0101]-計數器(TS_Counter)703_l,其值表示二元組703_2的個數。
[0102]圖7與圖6A所示的數據庫記錄的結構的主要差別是,圖7中包含一個值范圍鍵(RangeJfey) 702字段,用于指示數據庫記錄中包含的時序數據的值的值范圍。由于傳感器在不同時間的值的差別可能很大,在數據庫記錄中限定所存儲的時序數據的值的值范圍,有助于提高在第二存儲器中進行基于傳感器和值的檢索的速度。
[0103]可以用各種方式劃分來自傳感器的時序數據中的值的值范圍。以傳感器100為例,假設該傳感器的時序數據的值的范圍為[_20,20],可以簡單地把這個范圍劃分為20個值范圍,即[-20,-18]、[-18,-16]…[16,18]、[18,20]。這種劃分方式的缺點是,在實際情況中,傳感器的值在每個值范圍上的分布不均勻,就是說,傳感器的值在有的值范圍內很多,在有的值范圍內很少。
[0104]每個傳感器的值,都有一定的分布規律。可以利用每個傳感器的值的實際分布,來劃分每個傳感器的值的值范圍。
[0105]按照本發明一個實施例,圖2所示的方法進一步包含:計算來自每個傳感器的值的概率分布函數PDF (Probability DistributionFunction),相應地,所述在第二存儲器的第二數據庫按值存儲時序數據包含:
[0106]根據所計算的HF,為每個傳感器的值劃分多個值范圍;
[0107]按所劃分的值范圍存儲時序數據,使得一個數據庫記錄中包含屬于同一個值范圍的值對應的時序數據。
[0108]按照本發明一個實施例,可以在第一存儲步驟230之前,通過統計每個傳感器的時序數據,計算每個傳感器的時序數據的值的HF。例如,通過統計來自傳感器100的時序數據,可以計算出傳感器100的值的概率分布函數TOF:
[0109]
【權利要求】
1.一種用于處理來自多個傳感器的時序數據的方法,其中,所述多個傳感器被劃分成多個傳感器組,每個時序數據包含一個時間戳和一個值,該值與該時間戳相關聯,該方法包含: 數據接收步驟,接收來自多個傳感器的各個傳感器的時序數據; 數據分組步驟,將接收的各個傳感器的時序數據分派到所述多個傳感器組中該個傳感器所屬的傳感器組; 第一存儲步驟,在第一存儲器的第一數據庫存儲時序數據,使得被分派到所述多個傳感器組中的同一個傳感器組的多個時序數據被存儲在第一數據庫的至少一個數據庫記錄中; 數據重組步驟,從第一數據庫中獲取多個傳感器的每個傳感器的時序數據; 第二存儲步驟,在第二存儲器的第二數據庫存儲時序數據,使得同一個傳感器的多個時序數據被存儲在第二數據庫的至少一個數據庫記錄中中。
2.權利要求1的方法,所述第二存儲步驟進一步按時間戳存儲時序數據。
3.權利要求1的方法,所述第二存儲步驟進一步按值存儲時序數據。
4.權利要求3的方法,進一步包含:計算來自每個傳感器的值的概率分布函數HF,并且 所述按值存儲時序數據包含: 根據所計算的roF,為每個傳感器的值劃分多個值范圍; 按所劃分的值范圍存儲時序數據,使得一個數據庫記錄中包含屬于同一個值范圍的值對應的時序數據。
5.權利要求1至4的任何之一的方法,進一步包含: 數據壓縮步驟,針對每個傳感器,對時序數據進行壓縮,產生壓縮的時序數據。
6.權利要求5的方法,其中,所述對時序數據進行壓縮,包含以下的一個或多個: 對時序數據中的時間戳進行壓縮; 對每個傳感器的時序數據中的值進行線性壓縮。
7.權利要求6的方法,其中,所述在第一存儲器的第一數據庫存儲時序數據,包含在第一存儲器的第一數據庫存儲壓縮的時序數據。
8.權利要求6的方法,所述對時序數據進行壓縮,包含對每個傳感器的時序數據中的值進行線性壓縮,所述在第二存儲器的第二數據庫存儲時序數據,包含在第二存儲器的第二數據庫存儲壓縮的時序數據。
9.權利要求5的方法,進一步包含: 查詢接收步驟,接收對時序數據的查詢; 查詢步驟,在第二存儲器中執行對時序數據的查詢。
10.權利要求9的方法,其中,所述查詢步驟包含: 查詢轉換步驟,將所接收的查詢轉換為對第二存儲器中壓縮的時序數據的查詢; 壓縮數據查詢步驟,執行對第二存儲器中壓縮的時序數據的查詢,獲得查詢結果; 解壓步驟,將所獲得的查詢結果中壓縮的時序數據進行解壓。
11.一種用于處理來自多個傳感器的時序數據的裝置,其中,所述多個傳感器被劃分成多個傳感器組,每個時序數據包含一個時間戳和一個值,該值與該時間戳相關聯,該裝置包含: 數據接收模塊,被配置得用于接收來自多個傳感器的各個傳感器的時序數據; 數據分組模塊,被配置得用于將接收的各個傳感器的時序數據分派到所述多個傳感器組中該個傳感器所屬的傳感器組; 第一存儲控制模塊,被配置得用于在第一存儲器的第一數據庫存儲時序數據,使得被分派到所述多個傳感器組中的同一個傳感器組的多個時序數據被存儲在第一數據庫的至少一個數據庫記錄中; 數據重組模塊,被配置得用于從第一數據庫中獲取多個傳感器的每個傳感器的時序數據; 第二存儲控制模塊,被配置得用于在第二存儲器的第二數據庫存儲時序數據,使得同一個傳感器的多個時序數據被存儲在第二數據庫的至少一個數據庫記錄中。
12.權利要求11的裝置,所述第二存儲控制模塊被配置得用于進一步按時間戳存儲時序數據。
13.權利要求11的裝置,所述第二存儲控制模塊被配置得用于進一步按值存儲時序數據。
14.權利要求13的裝置,進一步包含用于計算來自每個傳感器的值的概率分布函數PDF的模塊,并且 所述第二存儲控制模塊被進一步配置得用于: 根據所計算的roF,為每個傳`感器的值劃分多個值范圍; 按所劃分的值范圍存儲時序數據,使得一個數據庫記錄中包含屬于同一個值范圍的值對應的時序數據。
15.權利要求11至14的任何之一的裝置,進一步包含: 數據壓縮模塊,被配置得用于針對每個傳感器,對時序數據進行壓縮,產生壓縮的時序數據。
16.權利要求15的裝置,其中,所述數據壓縮模塊包含以下的一個或多個: 用于對時序數據中的時間戳進行壓縮的模塊; 用于對每個傳感器的時序數據中的值進行線性壓縮的模塊。
17.權利要求16的裝置,其中,所述第一存儲控制模塊被進一步配置得用于在第一存儲器的第一數據庫存儲壓縮的時序數據。
18.權利要求16的裝置,其中,所述第二存儲控制模塊被進一步配置得用于在第二存儲器的第二數據庫存儲壓縮的時序數據。
19.權利要求15的裝置,進一步包含: 查詢接收模塊,被配置得用于接收對時序數據的查詢; 查詢模塊,被配置得用于在第二存儲器中執行對時序數據的查詢。
20.權利要求19的裝置,其中,所述查詢模塊包含: 查詢轉換模塊,被配置得用于將所接收的查詢轉換為對第二存儲器中壓縮的時序數據的查詢; 壓縮數據查詢模塊,被配置得用于執行對第二存儲器中壓縮的時序數據的查詢,獲得查詢結果;解壓模塊,被配 置得用于將所獲得的查詢結果中壓縮的時序數據進行解壓。
【文檔編號】G07F17/30GK103794006SQ201210429532
【公開日】2014年5月14日 申請日期:2012年10月31日 優先權日:2012年10月31日
【發明者】陳曉艷, 黃勝, 王晨, 劉凱 申請人:國際商業機器公司