一種適用于截面訪問模式的電網(wǎng)海量時序數(shù)據(jù)存取方法
【專利摘要】本發(fā)明公開了一種適用于截面訪問模式的電網(wǎng)海量時序數(shù)據(jù)存取方法,以實現(xiàn)在不影響寫入性能的情況下同時兼顧時間序列查詢及時間截面查詢場景下的查詢效率。本發(fā)明在系統(tǒng)中建立三張表,分別為Uid表、Time-series時間序列數(shù)據(jù)表、Time-point時間截面數(shù)據(jù)表,將電網(wǎng)時序數(shù)據(jù)分別存入時間序列數(shù)據(jù)表以及時間截面數(shù)據(jù)表中,使得相同時間段的電網(wǎng)數(shù)據(jù)在物理磁盤位置相鄰,另外,同一時間點不同電網(wǎng)設備的電網(wǎng)數(shù)據(jù)在磁盤位置也相鄰,這樣可以保證按照時間序列以及按照時間截面這兩種方式查詢的效率。
【專利說明】-種適用于截面訪問模式的電網(wǎng)海量時序數(shù)據(jù)存取方法
【技術領域】
[0001] 本發(fā)明涉及一種數(shù)據(jù)存取方法,屬于海量數(shù)據(jù)處理、新型數(shù)據(jù)庫【技術領域】,特別適 用于智能電網(wǎng)領域中海量時序數(shù)據(jù)實時處理的場景。
【背景技術】
[0002] 隨著智能電網(wǎng)的不斷發(fā)展,數(shù)據(jù)處理規(guī)模日益海量,已經(jīng)出現(xiàn)了數(shù)千萬乃至上億 數(shù)據(jù)采集規(guī)模的應用需求。W電力系統(tǒng)為例,一方面是測點規(guī)模越來越大,預計將達到千萬 級甚至億級W上;另一方面是歷史時序數(shù)據(jù)量規(guī)模越來越大,預計將達到PB字節(jié)W上。海 量信息存儲的方法很多,化acle和EMC提供了存儲系統(tǒng)及硬件,比較經(jīng)典的是RAC (Real Application Cluster), RAC已經(jīng)在工業(yè)和信息界得到廣泛應用。然而該些數(shù)據(jù)庫都是基 于關系和對象模型的,對復雜數(shù)據(jù)存儲有較好的表現(xiàn),但是存儲代價W及系統(tǒng)消耗比較大。 電網(wǎng)時序數(shù)據(jù)類型單一,是按時間分布的單列數(shù)據(jù),而分布式列式數(shù)據(jù)庫技術在處理電網(wǎng) 時序數(shù)據(jù)該種單列類型數(shù)據(jù)上比關系數(shù)據(jù)庫有更好的效率,能夠處理大量的并發(fā)數(shù)據(jù)操作 的同時滿足電網(wǎng)時序數(shù)據(jù)實時性要求。因此引入分布式列式數(shù)據(jù)庫技術是當前解決電網(wǎng)海 量時序數(shù)據(jù)實時處理的有效方法。
[0003] 構建電網(wǎng)時序數(shù)據(jù)的分布式列式數(shù)據(jù)庫系統(tǒng)的設計關鍵在于模式設計,模式設計 的好壞直接影響該系統(tǒng)的插入與查詢性能。模式設計的出發(fā)點是訪問模式,根據(jù)電網(wǎng)時序 數(shù)據(jù)特征,對其訪問模式可歸納為按時間序列方式查詢與按時間截面方式查詢兩種。合理 的模式設計應該做到不影響寫入性能的同時兼顧時間序列方式與時間截面方式該兩種查 詢性能。對于電網(wǎng)時序數(shù)據(jù)信息存儲,通常設計上僅僅考慮到時間序列數(shù)據(jù)在物理磁盤上 位置相鄰,該樣雖然保證了按時間序列方式查詢的效率,但是并不能解決時間截面查詢場 景性能問題。經(jīng)初步檢索,暫未發(fā)現(xiàn)有解決上述問題的相關專利。
【發(fā)明內(nèi)容】
[0004] 為了解決上述問題,實現(xiàn)在不影響寫入性能的情況下同時兼顧時間序列查詢及時 間截面查詢場景下的查詢效率,本發(fā)明提供了一種適用于截面訪問模式的電網(wǎng)海量時序數(shù) 據(jù)存取方法,采用如下技術方案:
[0005] 根據(jù)電網(wǎng)時序數(shù)據(jù)特征,將一條時序數(shù)據(jù)記錄格式表示為: <metric><timestamp><valueXtagkl = tagvl[tagk2 = tagv2*** tagkN = tagvN]>
[0006] 其中各項代表的含義:
[0007] Metric (量測項,比如溫度,電壓等);
[0008] Timestamp (時間戳,比如UNIX時間戳);
[0009] Value (量測值,比如64位整數(shù)或雙精度浮點值);
[0010] Tags(-組標簽,用于標識該個數(shù)據(jù)記錄的一組標記,每個標簽分別由標簽 鍵(tagk)與標簽值(tagv)組成,對于每一個電網(wǎng)時序數(shù)據(jù)記錄,都會有一個標簽鍵為 device,該標簽鍵用來表示電網(wǎng)設備名稱,比如device = myammeter,表示該電網(wǎng)設備為某 電流表)。
[0011] 據(jù)此,在系統(tǒng)中建立H張表,分別為化d表、Time-series時間序列數(shù)據(jù)表、 Time-point時間截面數(shù)據(jù)表,其模式設計(包括行鍵、列族W及列限定符設計)如下:
[0012] 化 d 表
[0013] 該表是time-series與time-point表的輔助表,任一量測項metric W及標簽tag 在該表中有自己唯一的ID,即UID。Uid表用于管理UID,使用固定4個字節(jié)寬,作為時間序 列數(shù)據(jù)表W及截面數(shù)據(jù)表的外鍵聯(lián)系使用。
[0014] 注冊一個新UID會在該表里添加兩行,一行是從Name映射到UID,另一行從UID映 射到Name。該里的Name可W是某量測項(metric)名稱,也可W是某標簽鍵(tagk)或者是 某標簽值(tagv)。
[0015] 該表的意義在于將字符串類型的測量項名稱W及標簽鍵值名稱都統(tǒng)一映射成固 定的4個字節(jié)數(shù)組中,該樣一定程度上可W節(jié)省存儲空間,另一方面便于對查詢數(shù)據(jù)進行 解析。
[0016] Time-series時間序列數(shù)據(jù)表
[0017] 該表存儲時間序列數(shù)據(jù),用來支持按時間序列方式查詢請求,比如:按照日期范 圍和標簽進行過濾的數(shù)據(jù)查詢。其行鍵布局包含4字節(jié)的量測項UID、4字節(jié)的高序時 間戳和各4字節(jié)的標簽名ID和標簽值ID, row k巧格式為;<metric_uid〉<timestamp_ hi曲Xta址l_uidXtagvl_uid〉[…<tagkN_uidXtagvN_ui d>],列族名設為 t,列限定符由 時間戳低序位和掩碼組成,掩碼用于表示量測值數(shù)據(jù)類型及其存儲占用字節(jié)個數(shù)。
[0018] 該表的意義在于將連續(xù)的時間段的時序數(shù)據(jù)在磁盤存儲位置相鄰,W便讀寫操作 時節(jié)省硬盤尋道時間,從而保證時間序列訪問模式的效率。此外在寫入過程中將該表中相 同rowkey下的多個列進行合并處理可W節(jié)省存儲空間的同時進一步提高時間序列訪問效 率。
[0019] Time-point時間截面數(shù)據(jù)表
[0020] 該表存儲截面數(shù)據(jù),用來支持按時間截面方式查詢請求,比如按照時間點和 標簽進行過濾的數(shù)據(jù)查詢。其行鍵布局包含4字節(jié)的量測項UID、4字節(jié)的時間戳、 設備分組編號、各4字節(jié)標簽名ID和標簽值ID,row k巧格式可描述為;<metric_ uid><timestamp><groupID><tagkl_uid><tagvl_uid> [--? <tagkN_uid><tag vN_uid>],列 族名設為u,列限定符由某電網(wǎng)設備對應的UID和掩碼組成,掩碼用于表示量測值的數(shù)據(jù)類 型及其存儲占用字節(jié)個數(shù)。其中groupID是對電網(wǎng)設備進行分組,該里W電網(wǎng)設備對應的 UID的前兩位字節(jié)為分組編號,避免出現(xiàn)一行存在過多列情形。
[0021] 該表的意義在于將同一時間點來自不同電網(wǎng)設備的截面數(shù)據(jù)在底層物理磁盤上 位置相鄰,W便讀寫操作時節(jié)省硬盤尋道時間,從而保證時間截面訪問模式的效率,此外在 寫入過程中將該表中相同rowkey下的多個列進行合并處理可W節(jié)省存儲空間的同時進一 步提高截面訪問模式效率。
[0022] 應用本發(fā)明方法的系統(tǒng)的架構如下:
[0023] 該系統(tǒng)將數(shù)據(jù)采集、數(shù)據(jù)存儲和時序數(shù)據(jù)服務進程分開,其中數(shù)據(jù)存儲基于分布 式列式數(shù)據(jù)庫實現(xiàn),時序數(shù)據(jù)服務進程用于處理與分布式列式數(shù)據(jù)庫讀寫交互,并W簡單 的HTTP接口對外提供查詢服務;數(shù)據(jù)采集負責收集外部設備各種量測值,并傳遞數(shù)據(jù)給時 序數(shù)據(jù)服務進程,最終時序數(shù)據(jù)服務進程將數(shù)據(jù)存儲到分布式列式數(shù)據(jù)庫中。
[0024] 本發(fā)明方法的讀寫運行流程為:
[0025] 查詢模式分為按時間序列查詢與按時間截面查詢兩種,分別對時間序列數(shù)據(jù)表和 時間截面數(shù)據(jù)表進行查詢操作,該個操作關鍵在于從分布式列式數(shù)據(jù)庫中讀取滿足用戶查 詢條件的數(shù)據(jù),所W首先需要確定行鍵范圍,然后構造過濾器,最后執(zhí)行掃描請求。
[0026] 寫入一條電網(wǎng)時序數(shù)據(jù)記錄需要分別寫入時間序列數(shù)據(jù)表和時間截面數(shù)據(jù)表中, 該個操作的關鍵在于按照表的模式設計構造記錄寫入分布式列式數(shù)據(jù)庫中。所W首先構造 行鍵,然后確定列族和列限定符W及存儲單元的內(nèi)容,將同屬于相同rowkey的多個列進行 合并成一個列,最后執(zhí)行寫入請求。其中合并處理方法為:將若干個列中的列限定符字節(jié)數(shù) 組合并一個新列限定符字節(jié)數(shù)組,新的列限定符字節(jié)數(shù)組長度等于原先若干個列限定符數(shù) 組長度之和,存儲單元合并方法與列限定符合并方法相同。
[0027] 本發(fā)明方法將電網(wǎng)時序數(shù)據(jù)分別存入時間序列數(shù)據(jù)表W及時間截面數(shù)據(jù)表中,使 得相同時間段的電網(wǎng)數(shù)據(jù)在物理磁盤位置相鄰,另外,同一時間點不同電網(wǎng)設備的電網(wǎng)數(shù) 據(jù)在磁盤位置也相鄰,該樣可W保證按照時間序列W及按照時間截面該兩種方式查詢的效 率。
【專利附圖】
【附圖說明】
[0028] 圖1是數(shù)據(jù)查詢運行示意圖。
[0029] 圖2是數(shù)據(jù)寫入運行示意圖。
【具體實施方式】
[0030] 下面結合附圖和實施例對本發(fā)明作進一步詳細說明。
[0031] 本實施例W智能電表監(jiān)控場景中傳感器數(shù)據(jù)實例來描述本發(fā)明。
[0032] 根據(jù)前面描述電網(wǎng)時序數(shù)據(jù)特征,假設某條傳感器數(shù)據(jù)記錄如下:
[0033] electric_energy. forward_direction 1292148123476 device = myammeter device_type = ammeter.
[0034] 該里時間戳1292148123是按照UNIX格式描述的,其對應時刻為2010年12月12 日10:02:03,所W該條傳感器數(shù)據(jù)記錄表示;在2010年12月12日10:02:03該個時刻電 流表myammeter的正向有功電能量值為476。
[00巧]為了展示【具體實施方式】,該里W皿ase分布式列式數(shù)據(jù)庫為例進行說明,首 先創(chuàng)建H張表,分別為Uid表、時間序列數(shù)據(jù)表(Time-series) W及時間截面數(shù)據(jù)表 (time-point),接下來圍繞該條傳感器數(shù)據(jù)實例展示一下具體的數(shù)據(jù)寫入W及查詢流程。 [003引 (1)數(shù)據(jù)寫入
[0037] 寫入整體流程如圖2所示,首先在UID表中分別記錄下name到UID映射W及UID 到name映射,該里name包括metric, tagk W及tagv。最終在Uid表中記錄如表1所示:
[0038]
【權利要求】
1. 一種適用于截面訪問模式的電網(wǎng)海量時序數(shù)據(jù)存取方法,其特征在于,根據(jù)電網(wǎng)時 序數(shù)據(jù)特征,將一條時序數(shù)據(jù)記錄格式表示為: <metric><timestamp><value><tagkl = tagvl[tagk2 = tagv2***tagkN = tagvN]> ; 據(jù)此,在系統(tǒng)中建立三張表,分別為Uid表、Time-series時間序列數(shù)據(jù)表、Time-point 時間截面數(shù)據(jù)表,其模式設計為: Uid表:該表是time-series與time-point表的輔助表,任一量測項metric以及標簽 tag在該Uid表中有自己唯一的ID,即WD,Uid表用于管理WD ;注冊一個新UID會在該 Uid表里添加兩行,一行是從Name映射到MD,另一行從MD映射到Name ; Time-series時間序列數(shù)據(jù)表:該表存儲時間序列數(shù)據(jù),用來支持按時間序列方式查 詢請求,其行鍵布局包含量測項WD、高序時間戳、標簽名ID和標簽值ID,row key格式為: <metric_uid><timestamp_high><tagkl_uid><tagvl_uid>[--?<tagkN_uid><tagv N_ uid>],列族名設為t,列限定符由時間戳低序位和掩碼組成,掩碼用于表示量測值數(shù)據(jù)類型 及其存儲占用字節(jié)個數(shù); Time-point時間截面數(shù)據(jù)表:該表存儲截面數(shù)據(jù),用來支持按時間截面方式查詢請 求,其行鍵布局包含量測項WD、時間戳、設備分組編號、標簽名ID和標簽值ID,row key格 式描述為: <me tr i c_uid>< times tamp >< group IDXtagkl_uid><tagvl_uid> [--? <tagkN_ uid>〈tagvN_uid>],列族名設為u,列限定符由某電網(wǎng)設備對應的UID和掩碼組成,掩碼用 于表示量測值的數(shù)據(jù)類型及其存儲占用字節(jié)個數(shù)。
2. 根據(jù)權利要求1所述的方法,其特征是,所述時間截面數(shù)據(jù)表中groupID是對設備進 行分組,這里以電網(wǎng)設備對應的WD的前兩位字節(jié)為分組編號。
【文檔編號】G06F17/30GK104331432SQ201410567859
【公開日】2015年2月4日 申請日期:2014年10月22日 優(yōu)先權日:2014年10月22日
【發(fā)明者】王遠, 包建國, 袁軍, 劉琛, 吳善新 申請人:江蘇瑞中數(shù)據(jù)股份有限公司