屈志堅,吳廣龍,帥誠鵬,梁家敏
(1.華東交通大學軌道交通基礎(chǔ)設(shè)施性能監(jiān)測與保障國家重點實驗室,南昌 330013;2.華東交通大學電氣與自動化工程學院,南昌 330013)
近年來智能電網(wǎng)建設(shè)進程穩(wěn)步推進,太陽能、風電和電動汽車充電樁的接入使配電網(wǎng)規(guī)模不斷增加,配電網(wǎng)監(jiān)測需求提高,導致配電網(wǎng)設(shè)備的狀態(tài)采樣點和監(jiān)測傳感器的數(shù)量也大幅增加;加上設(shè)備采樣頻率的提升,使得配電網(wǎng)監(jiān)控系統(tǒng)采集的數(shù)據(jù)急劇增長,數(shù)據(jù)體量已超過TB級[1?3],遠遠超過了關(guān)系型數(shù)據(jù)庫TB級容量限制。配電網(wǎng)監(jiān)測數(shù)據(jù)的增加不僅增大了系統(tǒng)的維護難度,而且導致產(chǎn)生的延遲越來越大,配電網(wǎng)監(jiān)控系統(tǒng)響應(yīng)時間過長可能導致關(guān)鍵故障信息的遲報甚至界面卡頓。
配電網(wǎng)監(jiān)測數(shù)據(jù)的急劇增加,對配電網(wǎng)監(jiān)測數(shù)據(jù)的快速處理提出了要求,如何高效處理配電網(wǎng)監(jiān)測數(shù)據(jù)從而實現(xiàn)海量數(shù)據(jù)的監(jiān)測和電能質(zhì)量監(jiān)控成為亟待解決的問題。目前,相關(guān)學者在海量數(shù)據(jù)的高效存取研究方向已經(jīng)取得了一定的研究成果,文獻[4]研究的擴展關(guān)系型數(shù)據(jù)庫方法將數(shù)據(jù)存儲在不同主機的磁盤,但關(guān)系型數(shù)據(jù)庫的存儲空間有限,需要通過增加主機數(shù)量來增加數(shù)據(jù)庫容量;文獻[5]研究的基于內(nèi)存計算的內(nèi)存數(shù)據(jù)庫方法能提高數(shù)據(jù)的處理性能,但內(nèi)存數(shù)據(jù)庫存在內(nèi)存容量不足、輸入輸出壓力大、緩存命中率低和數(shù)據(jù)安全性較差等問題;文獻[6]提出基于Hadoop 架構(gòu)存儲反向傳播BP(back propagation)神經(jīng)網(wǎng)絡(luò)的短期負荷預測數(shù)據(jù)的方法;文獻[7]提出基于Hadoop 分布式文件系統(tǒng)HDFS(hadoop distributed file system)的數(shù)據(jù)存儲優(yōu)化技術(shù);文獻[8]提出一種將數(shù)據(jù)自動生成非結(jié)構(gòu)化查詢語言NoSQL(not only structured query language)存儲結(jié)構(gòu)的平臺。
NoSQL以HBase[9]分布式列數(shù)據(jù)庫為主要代表,HBase 分布式鍵值對數(shù)據(jù)庫基于主鍵的查詢很快,但基于非主鍵的查詢需要全表掃描,對系統(tǒng)資源的耗費較大。針對這一問題,文獻[10?11]基于MapRe?duce 進行研究,存儲數(shù)據(jù)時生成元數(shù)據(jù),查詢時讀取元數(shù)據(jù)構(gòu)造查詢樹;文獻[12]提出基于協(xié)處理器的HBase索引構(gòu)建方案,通過協(xié)處理器構(gòu)建二級索引并根據(jù)HBase 表的數(shù)據(jù)更新自動更新索引并持久化索引;文獻[13]驗證了引入緩存技術(shù)能有效提升大數(shù)據(jù)集群處理性能;文獻[14]提出在數(shù)據(jù)庫系統(tǒng)中基于低延遲和高帶寬的內(nèi)存建立緩存以提升查詢速度并減輕底層磁盤壓力;文獻[15]設(shè)計出一種基于日志結(jié)構(gòu)合并樹LSM?Tree(log structured merge?Tree)的分布式索引方案,該方案采用讀寫分離和批量更新的方法更新索引數(shù)據(jù);文獻[16]描述了瞬態(tài)數(shù)據(jù)緩存策略性能的基本限制,測試了瞬態(tài)數(shù)據(jù)使用傳統(tǒng)緩存策略的性能,并提出一種新的緩存策略,該策略同時使用流行度和剩余生命期(數(shù)據(jù)變得冗余之前剩余的時間)進行緩存決策,測試顯示新的緩存策略優(yōu)于傳統(tǒng)的緩存策略;文獻[17]對數(shù)據(jù)設(shè)計了特殊的緩存結(jié)構(gòu),有效提高了搜索引擎的查詢性能。
海量數(shù)據(jù)的主流處理方法為NoSQL索引集群,本文將監(jiān)測數(shù)據(jù)存儲在NoSQL分布式索引集群中,通過緩存技術(shù)將出現(xiàn)頻繁的數(shù)據(jù)存儲在緩存中,查詢時可以直接從緩存中獲取結(jié)果。但一方面原有的熱數(shù)據(jù)鏈表HDL(hot data linked?list)緩存方法是將數(shù)據(jù)存儲在鏈表中,當緩存空間占滿時,需要通過更新鏈表中存儲的數(shù)據(jù)實現(xiàn)緩存記錄的更新;當緩存記錄更新頻繁時會使鏈表節(jié)點頻繁移動,內(nèi)存消耗較大。另一方面,索引集群啟動初期緩存系統(tǒng)中沒有存儲緩存記錄,使索引系統(tǒng)啟動初期難以命中緩存,無法充分發(fā)揮緩存技術(shù)的優(yōu)勢;若能在索引系統(tǒng)啟動初期將熱點數(shù)據(jù)存入緩存系統(tǒng),可以提高熱點數(shù)據(jù)的查詢速度,加快監(jiān)控系統(tǒng)的響應(yīng)速度。
針對上述問題,本文提出一種配電網(wǎng)監(jiān)測數(shù)據(jù)索引集群的分布緩存方法。首先,構(gòu)建配電網(wǎng)監(jiān)測數(shù)據(jù)的倒排索引結(jié)構(gòu),設(shè)計一種熱點數(shù)據(jù)部分鏈表HDPL(hot data part linked?list)緩存方法,為緩存記錄添加時間戳,通過選取部分數(shù)據(jù)存入鏈表的方式減少鏈表的長度,根據(jù)緩存記錄的訪問時間間隔(HDPL值)大小淘汰緩存記錄,降低內(nèi)存消耗,提高緩存淘汰效率;然后,設(shè)計合理數(shù)目的預熱查詢,將熱點數(shù)據(jù)存入緩存實現(xiàn)索引集群的熱啟動,加快集群的響應(yīng)速度。最后,以工程數(shù)據(jù)為測試算例,驗證了所提方法的有效性。
關(guān)系型數(shù)據(jù)庫是在關(guān)系型數(shù)據(jù)模型的基礎(chǔ)上,借助集合代數(shù)的數(shù)學方法處理數(shù)據(jù)的數(shù)據(jù)庫。關(guān)系型數(shù)據(jù)庫通過行和列的形式存儲數(shù)據(jù),在關(guān)系型數(shù)據(jù)庫中,實體之間的聯(lián)系由單一的結(jié)構(gòu)類型來表示,這種邏輯結(jié)構(gòu)是二維表,多個二維表構(gòu)成了關(guān)系型數(shù)據(jù)庫。笛卡爾積可以表示成一個二維表。一組具有相同類型的值的集合稱為域,給定一組域{E1,E2,???,Em} ,這些域中可以有相同的部分,則該域的笛卡爾積可表示為
式中,(e1,e2,???,em)為域的每個元素,稱為一個m元組,元素中的每一個值ei稱作一個分量。笛卡爾積可以表示成一個二維表,表中每列對應(yīng)一個域,每行對應(yīng)一個元素。
由于關(guān)系型數(shù)據(jù)庫的原子性、一致性、隔離性和持久性,數(shù)據(jù)一致性高,使關(guān)系型數(shù)據(jù)庫廣泛應(yīng)用于輸入輸出IO(Input Output)讀寫密集型系統(tǒng)。但是關(guān)系型數(shù)據(jù)庫的容量主要通過增加服務(wù)器上的磁盤空間來擴展,隨著數(shù)據(jù)的增長,需要不斷增加硬盤空間,并且需要更快的機器來運行,具有一定的局限性。
綜上,本文基于NoSQL數(shù)據(jù)庫搭建配電網(wǎng)監(jiān)測數(shù)據(jù)索引集群,將配電網(wǎng)監(jiān)測數(shù)據(jù)結(jié)構(gòu)改變?yōu)榈古潘饕?;引入緩存技術(shù)加快查詢速度,針對原緩存方法效率低的問題提出HDPL 緩存方法來提高緩存效率;設(shè)計預熱查詢結(jié)構(gòu)提高索引系統(tǒng)啟動初期的緩存命中概率,實現(xiàn)更高效率的查詢。具體數(shù)據(jù)處理流程如圖1所示。
圖1 配電網(wǎng)監(jiān)控系統(tǒng)的數(shù)據(jù)處理Fig.1 Data processing of distribution network monitoring system
本文搭建倒排索引集群處理配電網(wǎng)海量監(jiān)測數(shù)據(jù)。為了掌握供電設(shè)備的狀態(tài),需要收集各站所設(shè)備的運行參數(shù)信息。由于傳感器數(shù)量的增加及測控終端采樣頻率的增加,導致配電網(wǎng)數(shù)據(jù)中心的監(jiān)測數(shù)據(jù)急劇增加。傳感器采集的數(shù)據(jù)主要包括現(xiàn)場環(huán)境的測量參數(shù)和現(xiàn)場設(shè)備的狀態(tài)數(shù)據(jù),采集的數(shù)據(jù)通過光纖通道傳輸至配電網(wǎng)數(shù)據(jù)中心。配電網(wǎng)數(shù)據(jù)中心由應(yīng)用服務(wù)器、存儲設(shè)備、網(wǎng)絡(luò)設(shè)備等構(gòu)成。在數(shù)據(jù)庫集群中將數(shù)據(jù)改變?yōu)榈古潘饕Y(jié)構(gòu),監(jiān)測數(shù)據(jù)的倒排索引結(jié)構(gòu)如圖2所示。
圖2 監(jiān)測數(shù)據(jù)的倒排索引結(jié)構(gòu)Fig.2 Inverted index structure of monitoring data
運行狀態(tài)數(shù)據(jù)的屬性包括站所號、采樣名、采樣值、采樣時間戳等。通過映射的方式將所有數(shù)據(jù)組成的多個文檔映射為倒排索引結(jié)構(gòu),左邊為原始文檔,右邊為映射后的倒排索引結(jié)構(gòu)。如站所223出現(xiàn)位置為id:1_station字段。
考慮到監(jiān)測數(shù)據(jù)的高重復度,引入緩存能夠避免對高頻數(shù)據(jù)重復查詢從而增加查詢的工作效率。當緩存空間占滿時,緩存系統(tǒng)按照HDL更新緩存記錄。該方法通過鏈表結(jié)構(gòu)存儲緩存記錄,具體淘汰方法如圖3所示。
圖3 HDL 淘汰方法Fig.3 HDL elimination method
當?shù)? 次查詢station:站所236 時,緩存空間中存在站所236 的記錄,則命中緩存;此時將進行緩存記錄的更新,將查詢結(jié)果站所236 存入鏈表的表頭位置,鏈表內(nèi)站所223 記錄需后移一位,完成緩存記錄的更新。當執(zhí)行第2 次查詢時,查analog?name:遙測16387,未命中緩存,查詢結(jié)果存入緩存空間;此時緩存空間已占滿,依照HDL 方法更新緩存,接著將第2 次查詢結(jié)果存入鏈表表頭,鏈表內(nèi)的緩存記錄依次后移一位。第3 次查詢未命中緩存,同樣按照上述過程更新緩存記錄。
在HDL方法更新緩存記錄時,將鏈表內(nèi)所有的緩存記錄更新,若緩存記錄更新頻繁,該操作會占用大量集群資源,影響集群的查詢響應(yīng)時間。
針對原有的HDL 緩存方法更新緩存時需要將鏈表結(jié)構(gòu)中的緩存數(shù)據(jù)移動,從而出現(xiàn)緩存更新效率低的問題。本文設(shè)計了一種HDPL 方法管理緩存,實現(xiàn)更高效的緩存淘汰。具體實現(xiàn)過程如下。
(1)查詢結(jié)果存入緩存中時會被添加時間戳,假如該查詢記錄存入緩存后一直未被命中,則該緩存記錄的時間戳始終不變;假如后續(xù)查詢命中該緩存,則更新該緩存記錄的時間戳為當前時間節(jié)點t。隨機選取一定的緩存記錄,根據(jù)當前時間節(jié)點t和緩存記錄的時間戳ti計算第i個預熱查詢選取的緩存記錄訪問時間間隔Δt為
式中,l為預熱查詢的總次數(shù)。
(2)根據(jù)訪問時間間隔計算緩存記錄的HDPL值crHDPL為
crHDPL=t?Δt,即
(3)將式(3)化簡后可得
crHDPL=ti
緩存記錄的時間戳越小,則緩存記錄的HDPL值越小。根據(jù)HDPL 值的大小將選取的緩存記錄依次存入鏈表結(jié)構(gòu),當緩存空間占滿需要淘汰緩存記錄時,將鏈表中HDPL 值最小的緩存記錄淘汰,同時將新的查詢結(jié)果存入緩存空間。之后每次淘汰緩存記錄時,隨機從緩存空間中選取5條緩存記錄,計算緩存記錄的HDPL 值,只要選舉的緩存記錄比鏈表中的任意一條緩存記錄的HDPL 值小,則根據(jù)HDPL 值的大小將緩存記錄插入到鏈表的適當位置,將鏈表表尾的HDPL 值最小的緩存記錄淘汰,同時將新的查詢結(jié)果存入緩存空間;若選舉的緩存記錄比鏈表中的任意一條緩存記錄的HDPL值都大,則直接將鏈表表尾的HDPL 值最小的緩存記錄淘汰,同時將新的查詢結(jié)果存入緩存空間,完成緩存淘汰。
HDPL緩存方法只針對選取的緩存記錄執(zhí)行緩存淘汰,通過淘汰局部最小HDPL 值的緩存記錄代替淘汰全局HDPL 值最小的緩存記錄。相較于原本的HDL 方法,無需維護一個很長的鏈表,更新緩存記錄時無需將鏈表中所有的緩存記錄移位,降低了內(nèi)存的操作復雜度,提升了緩存性能。
在索引集群中,數(shù)據(jù)以文檔的方式存儲,文檔存儲在集群分片中,分片在不同的集群節(jié)點中。集群使用哈希算法對文檔唯一標識ID(identification)字段的散列值進行計算,根據(jù)計算得到的唯一ID字段的散列值將文檔分配至對應(yīng)的分片,使得每個分片上的文檔數(shù)量大致均衡。
執(zhí)行分布式查詢時,客戶端向集群的任意節(jié)點發(fā)送查詢請求,接收到查詢請求的節(jié)點充當查詢控制器。查詢控制器獲取集群其他節(jié)點的身份,構(gòu)造分布式查詢的子查詢并將子查詢?nèi)蝿?wù)分發(fā)給其他分片的副本。副本是指當集群的一個分片有2 個以上節(jié)點時,1 個節(jié)點通過選舉成為該分片的領(lǐng)導者,該分片的其他節(jié)點成為副本。其他分片的副本完成子查詢?nèi)蝿?wù)后將子查詢結(jié)果發(fā)送給查詢控制器,查詢控制器匯總所有子查詢結(jié)果并將最終的查詢結(jié)果返回給客戶端完成分布式查詢。
設(shè)集群節(jié)點接收客戶端發(fā)送查詢請求后,構(gòu)造分布式查詢的子查詢并將子查詢?nèi)蝿?wù)分發(fā)給其他分片的副本時間為tr。
先考慮查詢未命中緩存。執(zhí)行查詢時,由于各節(jié)點性能差異的影響,不同分片的查詢時間會有差異,當最慢子查詢和最快子查詢完成查詢的時間段內(nèi)沒有查詢結(jié)果通過網(wǎng)絡(luò)傳輸至查詢控制器時,即等待所有子查詢完成后,再依次將數(shù)據(jù)通過網(wǎng)絡(luò)傳輸至查詢控制器進行總查詢結(jié)果的構(gòu)建,此時得到索引集群的最大查詢時間Tmax可表示為
式中:tr為子查詢?nèi)蝿?wù)分發(fā)r個查詢結(jié)果的副本時間;n為索引集群的分片數(shù);tq(k)為不同分片k各自完成子查詢的時間;v為不同分片傳輸查詢結(jié)果至查詢控制器的速度;r為所有分片傳輸?shù)目偛樵兘Y(jié)果數(shù);tε為查詢控制器匯總各分片的查詢結(jié)果并形成最終查詢結(jié)果的時間;ts為集群將查詢結(jié)果返回給客戶端的時間。
當最慢子查詢和最快子查詢完成查詢的時間段內(nèi)都有查詢結(jié)果通過網(wǎng)絡(luò)傳輸至查詢控制器時,此時索引集群的查詢時間為最小值,即
將式(5)化簡后可得
由于不同子查詢完成的過程具有隨機性,在子查詢執(zhí)行過程中,不一定所有時間都進行查詢結(jié)果的網(wǎng)絡(luò)傳輸,此處需要引入調(diào)節(jié)因子α(0 ~1),用來描述網(wǎng)絡(luò)傳輸?shù)睦寐?,引入該調(diào)節(jié)因子后,得到查詢時間表達式為
經(jīng)過上述分析可知,在未命中緩存的情況下,索引集群的查詢時間Tc取值為[]Tmin,Tmax區(qū)間的一個隨機值。為了便于后續(xù)比較,將式(7)改寫為
當查詢命中緩存時,索引集群從緩存中獲取數(shù)據(jù)。設(shè)索引集群從緩存中獲取數(shù)據(jù)的時間為tqh,此時索引集群的查詢時間Th為
索引集群啟動初期,緩存未存儲緩存記錄,導致系統(tǒng)啟動初期緩存命中率低。本文設(shè)計了一種預熱查詢結(jié)構(gòu),解決索引集群啟動初期緩存命中率低的問題。在索引集群啟動初期,設(shè)置熱點數(shù)據(jù)的預熱查詢,將熱點數(shù)據(jù)提前加載至索引集群緩存中。通過搜索管理器統(tǒng)計查詢數(shù)據(jù)的熱度排名,對排名較高的數(shù)據(jù)設(shè)計預熱查詢。
在初始階段,緩存空間存在大量空閑,設(shè)置預熱查詢的數(shù)據(jù)可以直接存入緩存空間,隨著查詢結(jié)果逐步存入緩存,緩存空間被逐步占滿。當緩存占滿時,需要更新緩存記錄,將訪問熱度最低的數(shù)據(jù)塊從緩存中剔除,以便將熱度高的數(shù)據(jù)調(diào)入緩存,此時按照HDL緩存方法更新緩存記錄,然后將新的查詢結(jié)果存入緩存空間,完成緩存更新。
構(gòu)建預熱查詢后熱點數(shù)據(jù)存儲在緩存中,后續(xù)查詢命中緩存的查詢時間為式(9)中的Th,未命中緩存的查詢時間為式(8)中的Tc。將兩者做減法運算得到命中一次預熱查詢帶來的查詢時間增益Tg,可表示為
泊松分布用于描述單位時間內(nèi)隨機事件發(fā)生的次數(shù),設(shè)計預熱查詢的熱點數(shù)據(jù)單位時間內(nèi)被多次訪問的概率服從參數(shù)為λ的泊松分布,泊松分布的概率函數(shù)為
由式(11)可得設(shè)計預熱查詢的熱點數(shù)據(jù)單位時間內(nèi)查詢的次數(shù)等于λ。對集群設(shè)計預熱查詢,用預熱查詢產(chǎn)生的查詢時間增益減去構(gòu)建預熱查詢花費的時間可得
式中,Φ(i)為第i條預熱查詢時間函數(shù),其為i的單調(diào)增函數(shù)。由式(12)可得,隨著預熱查詢數(shù)目i的增加,存在以下3種情況:
(1)當i較小時,λTg>Φ(i),即預熱查詢產(chǎn)生的延遲小于帶來的時間增益。
(2)當i增加,Φ(i)增加,會使λTg=Φ(i),即預熱查詢產(chǎn)生的延遲與帶來的時間增益相等。
(3)當i增加到一定值,會使λTg<Φ(i),即預熱查詢產(chǎn)生的延遲大于帶來的時間增益。
由上述分析可知,預熱查詢數(shù)目i存在極值點,此時設(shè)置預熱查詢減少的查詢時間最多。測試時不斷增加預熱查詢數(shù)目,當繼續(xù)增加預熱查詢數(shù)目導致查詢時間增加時,則未增加前的預熱查詢數(shù)目為最佳預熱查詢數(shù)目io,此時產(chǎn)生的時間增益最大。
鐵路配電網(wǎng)也屬于電力系統(tǒng)的一部分,運行期間會產(chǎn)生大量的監(jiān)測數(shù)據(jù),本文以某鐵路10 kV 配電網(wǎng)的數(shù)據(jù)采集與監(jiān)控SCADA(supervisory control and data acquisition)系統(tǒng)導出的監(jiān)測數(shù)據(jù)為數(shù)據(jù)源,建立數(shù)據(jù)源中站所號、遙測名、遙測值、時間戳等非主鍵屬性的倒排索引集群,該配電網(wǎng)監(jiān)測系統(tǒng)示意如圖4所示。
圖4 配電網(wǎng)監(jiān)測系統(tǒng)示意Fig.4 Schematic of distribution network monitoring system
采用4 臺計算機構(gòu)建倒排索引集群,4 臺計算機的操作系統(tǒng)均為Linux(Centos7)系統(tǒng),將數(shù)據(jù)導入索引集群,測試所提技術(shù)的實際效果。索引集群的4臺計算機節(jié)點的詳細配置如表1所示。
表1 集群節(jié)點詳細配置Tab.1 Detailed configuration of cluster nodes
1)不同查詢條件下不同方法的查詢時間
在配電網(wǎng)監(jiān)測數(shù)據(jù)索引集群正常運行時,分別向集群導入1×107、4×107、8×107、1.2×108、1.6×108條記錄,使用掃描查詢(無緩存)、HDL緩存查詢、關(guān)系型數(shù)據(jù)庫方法和HDPL 緩存查詢對不同重復度的數(shù)據(jù)進行查詢性能測試。進行3 組不同條件的測試,單線程為只執(zhí)行一個查詢?nèi)蝿?wù),多線程為執(zhí)行多個查詢?nèi)蝿?wù)。第1組單線程下執(zhí)行單條件,站所223的查詢;第2組單線程下執(zhí)行雙條件,站所223&遙測值16390的查詢;第3組多線程下執(zhí)行單條件,站所223的查詢。每組進行12次測試,舍棄最小值和最大值,剩下的10次測試結(jié)果取平均,測試結(jié)果如圖5所示。
圖5 不同方法對比結(jié)果Fig.5 Comparison results of different methods
由圖5 可知,在單條件?單線程查詢條件下,當集群數(shù)據(jù)規(guī)模為1× 107條時,HDPL 緩存查詢與HDL緩存查詢時間相差1 ms,但當數(shù)據(jù)規(guī)模增加至1.2×108、1.6×108條時,HDPL 緩存查詢相比于HDL緩存查詢分別減少78 ms、135 ms的查詢時間;在多條件?單線程查詢條件下,當數(shù)據(jù)規(guī)模為1.2×108條時,HDPL 緩存查詢相比于HDL 緩存查詢、關(guān)系型數(shù)據(jù)庫方法和掃描查詢分別減少了134 ms、192 ms、203 ms,HDPL 緩存查詢的查詢時間最短;在單條件?多線程查詢條件下,在數(shù)據(jù)規(guī)模分別為1.2×108、1.6×108條時,HDPL緩存查詢相比于HDL緩存查詢的查詢耗時分別減少84 ms、140 ms。
綜上表明,在不同實驗條件下,HDPL緩存查詢的查詢性能始終優(yōu)于其他3種方法。HDPL緩存查詢通過尋找局部最優(yōu)解的方式代替尋找全局最優(yōu)解,僅將一部分數(shù)據(jù)存儲在鏈表中,減少了緩存空間中存儲數(shù)據(jù)的鏈表長度及緩存更新時節(jié)點移動操作,避免了額外空間的浪費,降低了內(nèi)存的消耗。HDPL緩存查詢能夠提高配電網(wǎng)海量監(jiān)測數(shù)據(jù)索引集群基于非主鍵查詢的查詢性能。
2)數(shù)據(jù)更新時間間隔對查詢性能的影響
在配電網(wǎng)監(jiān)測數(shù)據(jù)索引集群正常運行時,向集群導入1.6×108條監(jiān)測數(shù)據(jù),持續(xù)向集群導入監(jiān)測數(shù)據(jù),導入監(jiān)測數(shù)據(jù)的時間間隔分別為8 ms、16 ms、24 ms、32 ms、40 ms、48 ms和56 ms,使用HDL、HD?PL 方法對不同重復度的關(guān)鍵詞數(shù)據(jù)進行查詢性能測試,測試結(jié)果如圖6所示。
圖6 不同數(shù)據(jù)更新間隔時查詢性能比較Fig.6 Comparison of query performance at different data update intervals
由圖6 可知,在不同的數(shù)據(jù)更新間隔時,HDPL緩存查詢的查詢時間始終在21 ms左右,波動較小,而HDL 緩存查詢的查詢時間為125 ms 左右,查詢時間在一定的范圍內(nèi)波動;HDPL 緩存方法始終優(yōu)于HDL 緩存方法,且在間隔時間為16 ms 時,HDPL緩存查詢相比于HDL 緩存查詢能夠節(jié)省111 ms 查詢時間。相比于HDL 緩存方法,HDPL 緩存方法在存儲部分緩存記錄的鏈表中更新緩存記錄,降低內(nèi)存的消耗,節(jié)省內(nèi)存空間。
執(zhí)行查詢請求,利用查詢管理器獲取熱點數(shù)據(jù);之后針對熱點數(shù)據(jù)設(shè)置預熱查詢,改變預熱查詢的設(shè)置數(shù)目,測試查詢時間的變化。在集群數(shù)據(jù)規(guī)模為1.6×108條時進行4組不同條件的測試:第1組未設(shè)置預熱查詢;第2 組構(gòu)建3 條熱點數(shù)據(jù)的預熱查詢,分別為站所223、遙測16390、3 400.000 00;第3 組構(gòu)建4 條熱點數(shù)據(jù)的預熱查詢,分別為站所223、遙測16390、3 400.000 00 和站所443;第4 組構(gòu)建5條熱點數(shù)據(jù)的預熱查詢,分別為站所223、遙測16390、3 400.000 00、站所443和遙測16391。
預熱查詢數(shù)目對查詢性能影響的測試結(jié)果如圖7 所示。單條件查詢?yōu)檎舅?23,雙條件查詢?yōu)檎舅?23&遙測16390,三條件查詢?yōu)檎舅?23&遙測16390&3 400.000 00。
圖7 預熱查詢數(shù)目對查詢時間的影響Fig.7 Impact of the number of preheated queries on query time
圖7(a)為在單線程下對比設(shè)置不同預熱查詢數(shù)目和未設(shè)置預熱查詢的查詢時間。由圖7(a)可知,在單線程、單條件查詢且未設(shè)置預熱查詢時,查詢時間為301 ms,設(shè)置3條預熱查詢時,查詢時間為277 ms;增加預熱查詢數(shù)目至4、5條,查詢時間分別增長至287 ms、292 ms;設(shè)置3條預熱查詢減少的查詢時間最多,對應(yīng)式(12)的情況(1)。在三條件查詢時,預熱數(shù)目為5 條時,對應(yīng)式(12)的情況(2),此時預熱查詢產(chǎn)生的時間增益和產(chǎn)生的延遲相等。對于雙條件、三條件查詢,均為設(shè)置3 條預熱查詢時查詢時間最短,減少的查詢時間最大值為48 ms。預熱查詢條數(shù)i=3、4、5 時均能減少查詢時間,其中,i=3 時減少的查詢時間最多。
圖7(b)為多線程下對比設(shè)置不同預熱查詢數(shù)目和未設(shè)置預熱查詢的查詢時間。由圖7(b)可知,在多線程下,三條件查詢且未設(shè)置預熱查詢時,查詢時間為752 ms,設(shè)置3 條預熱查詢時的查詢時間為712 ms;在預熱查詢數(shù)目為4條時,對比設(shè)置3條預熱查詢,查詢時間有所增加;在預熱查詢數(shù)目為5條時,查詢時間大于未設(shè)置預熱查詢的查詢時間,對應(yīng)式(12)的情況(3)。上述結(jié)果說明多線程下三條件查詢的最佳預熱數(shù)目為3 條;雙條件查詢時,i=3 為最佳預熱查詢數(shù)目,減少的查詢時間為72 ms;在單條件查詢時,最佳預熱查詢數(shù)目為i=4,此時減少80 ms的查詢時間。
通過熱點數(shù)據(jù)部分鏈表緩存方法的研究,算例測試了不同條件的查詢和預熱查詢的影響,測試結(jié)果表明以下結(jié)論。
(1)在不同查詢條件下,HDPL方法均優(yōu)于其他3 種方法;在不同數(shù)據(jù)更新間隔下,HDPL 緩存查詢的查詢時間波動較小,且始終優(yōu)于HDL 緩存查詢,在數(shù)據(jù)更新間隔為16 ms時,HDPL緩存查詢相比于HDL 緩存查詢能夠節(jié)省111 ms 的查詢時間。測試結(jié)果驗證了所設(shè)計的HDPL 分布緩存方法能有效減少集群的查詢時間。
(2)單線程下均為在預熱數(shù)目i=3 時減少的查詢時間最多;多線程下,雙條件、三條件查詢時,均為i=3 時減少的查詢時間最多;單條件查詢時,i=4 減少的查詢時間最多。測試結(jié)果驗證了設(shè)計的預熱查詢存在最佳數(shù)目,且能夠?qū)崿F(xiàn)搜索器的熱啟動,有效減少查詢時間,提高集群工作效率。