寧鄉(xiāng)市職業(yè)中專學校 劉錦鈴
本文從特點與關鍵技術角度,簡述實時數(shù)據(jù)庫,并以索引技術為例,分析EMS中的實時數(shù)據(jù)庫,具體涉及到哈希索引、B+樹結構、T-樹、AVL樹等。以供相關人士探討。
EMS系統(tǒng)為當代電網(wǎng)調度中,裝配的自動化系統(tǒng),所能提供的功能包括基礎及應用兩類,前者有計算機及操作系統(tǒng)等;后者涉及到SCADA、AGC等。其運行核心為實時數(shù)據(jù)庫,滿足數(shù)據(jù)記錄的全程、不間斷地集成信息,給有關電網(wǎng)調度管理,予以可靠依據(jù),促使從生產至決策;從管理至實地操作等的數(shù)據(jù)無縫銜接。
對于實時數(shù)據(jù)庫而言,其所能展現(xiàn)的正確度,并非僅憑借邏輯結果,還借助形成邏輯結果的時長,與常規(guī)數(shù)據(jù)庫比較,其的突出特點可概括為:(1)實時數(shù)據(jù)庫內,一般是基于設定周期,獲取被管理方的數(shù)據(jù)資料,由此要求控制系統(tǒng)能夠按照周期間隔,完成信息處理與必要響應。(2)錄入信息的合法性,應當帶有時間特點,錄入信息的動作會根據(jù)時間調整。在相同的時長間隔中,錄入信息,表示被管理方目前狀態(tài),也就是信息和時間需保持同步。(3)所有系統(tǒng)均無法實現(xiàn)對被管理方,進行絕對性的時間同步管控。實際上,在獲取到被管理方變化,到執(zhí)行分析處理等動作之間,勢必會經(jīng)過一段時間,也就是由接收至響應,會形成時間延遲,而所謂的“實時”,是要將該延遲盡可能縮小,處于限定區(qū)間中。(4)管理系統(tǒng)應當在獲取信息后,在特定時長間隔內,采取所需動作。如果超出其對應時長,則不屬于實時相應,便無法滿足實時管理的意圖。
基于RTDB的運用價值與性能,能概括出其幾項關鍵技術。(1)數(shù)據(jù)組織,對于數(shù)據(jù)上的不同處理,是RTDB與常規(guī)數(shù)據(jù)庫的最大差異,設定時間限制,存在明顯的復雜性。RTDB設計中,為應對實時性的要求,通常把關系數(shù)據(jù)庫中表結構及關系加以簡化,以達到提升性能的效果。另外,相較于磁盤數(shù)據(jù)庫,內存數(shù)據(jù)庫在信息處理上的表現(xiàn)更佳,可供RTDB應用。在系統(tǒng)設計中,會融合內存數(shù)據(jù)庫特征,以其為支撐,使全部操作動作均保存其中,利于各操作之間的信息共享,使得達到實時的效果。(2)索引技術,其是提升數(shù)據(jù)庫應用效率的關鍵技術,巧妙應用索引手段,能滿足效率需求。比較常見的索引技術包括AVL樹、T樹、B+樹等此類樹形索引,以及隨機型的Hash等。其中,T樹與Hash可較好地運用在內容上。本文會重點討論該項技術。(3)并發(fā)控制協(xié)議,支持面對若干任務一同適應數(shù)據(jù)庫,可維護數(shù)據(jù)庫基本的執(zhí)行效果。為達到實時性的目的,會合理放寬可串行性[1]。
2.1.1 樹形結構
AVL樹結構的索引技術,也就是平衡二叉樹,執(zhí)行插入及刪除動作中,有可能出現(xiàn)失衡的現(xiàn)象,對此會借助旋轉維持平衡。而旋轉處理方式包括四類,分別是單向右旋、單向左旋、先左后右和先右后左。選擇AVL索引,可收獲較優(yōu)存取功能,但應用內存的效果有限,各節(jié)點對應一個信息元素,并配備指針及其他控制數(shù)據(jù)。
B-樹結構,屬于動態(tài)調整的平衡樹,是一種外查找機制。其所有節(jié)點均包括2m數(shù)據(jù)域與2m+1的指針域,其節(jié)點內信息通常超過m個,且存儲空間不會被占滿,消除插入信息后引發(fā)分裂問題[2]。同時,其左子樹的節(jié)點信息均小于父節(jié)點,右子樹則正好相反,如圖1所示。
圖1 B-樹結構圖Fig.1 B-tree structure diagram
在此樹形結構下進行查找動作,會先確定節(jié)點,和二叉排序樹相似,而后基于節(jié)點鎖定關鍵字,通常為二分查找法,倘若在葉子節(jié)點處還未確定對應內容,表示檢索失敗。在插入關鍵字中,會從底層非終端處加入,在關鍵字數(shù)目不足(m-1)個,支持立即插入,反之,會加以調整,進行分裂處理。其刪除動作相對復雜,會面臨三種情況:對應節(jié)點關鍵字數(shù)目至少達到m/2個,支持立即刪除,如果數(shù)目等于(m/2-1)個,同時,相鄰節(jié)點數(shù)目超過(m/2-1)個,則會刪掉相鄰節(jié)點的最小或者最大關鍵字,并轉移至父節(jié)點,將后者內部與之相近的關鍵字轉移到原節(jié)點,完成整體操作。假設刪除節(jié)點和相鄰節(jié)點的數(shù)目均等于(m/2-1)個,會在刪除動作完成后,把剩下關鍵字與指針,和父節(jié)點對應關鍵字,一同轉移至相鄰節(jié)點內。B+樹結構是根據(jù)B-樹結構得來,帶有2個頭指針,其中1個指向根節(jié)點,1個則對應關鍵字的最小葉子節(jié)點。T樹結構把上述類型整合起來,形成的數(shù)據(jù)框架,其不僅為二叉樹,其各項節(jié)點還有若干實際元素。其和AVL樹更為接近,分成左右兩個子樹,并且深度差在1以內。其內部各節(jié)點均對應若干個鍵值域。單就該結構的插入算法為例,需先確定節(jié)點狀態(tài),如果是“空”,立即創(chuàng)建T樹,并插入信息,成為鍵值,“不空”會按照檢索算法進行定位,確定插入的位置,同時保留查找期間涉及到的節(jié)點。在查找成功的情況下,需判斷對應節(jié)點有無剩余空間,倘若有,便只需進行節(jié)點移動即可,反之會把其內部最小鍵值,轉移至左子樹上。如果沒有子樹,便重新確定節(jié)點。T*樹結構,屬于T樹的改良版,是為更加突出此類結構用于數(shù)據(jù)庫內的長處,提升范圍查詢水平。其和T樹的節(jié)點結構大致相同,但T*在各節(jié)點處均配備指針,起到優(yōu)化范圍查詢的作用。T-tail樹結構,在插入節(jié)點中,不會執(zhí)行平衡操作,添加的是附屬節(jié)點,借此能簡化平衡操作[3]。
2.1.2 隨機哈希索引
根據(jù)樹形結構,查找應用效率立足于表次數(shù),因而記錄屬于隨機狀態(tài),與對應關鍵詞無固定聯(lián)系,而執(zhí)行查找動作中,會通過與關鍵字加以比較,才能成功檢索。但Hash處于理想條件下,無需進行比較,把關鍵字直接映射至相應位置,實現(xiàn)一次鎖定目標。相關常見的散列方式有:(1)桶散布算法,假設L為散列桶的數(shù)量,按照對應函數(shù),參數(shù)是查找鍵,獲得從0至L-1的整數(shù),并產生數(shù)組,內部包括若干L個鏈表頭,分別和數(shù)組內某個桶。假設查找鍵是X,則對應桶號是h(K),直接保存,其中h表示散列函數(shù)。(2)可擴展算法,分成二層結構,包括目錄與葉節(jié)點。其中,目錄包括指向深度的目錄頭及目錄項構成。(3)線性可擴展算法,是將以上兩個方式融合而來,包含可擴展目錄以及桶散布的快拉鏈。(4)多目錄散發(fā),把關鍵字直接映射為地址,分成目錄及目錄項,此處目錄數(shù)量不變,全部目錄擴展方法類似于葉大小是1的方式,單一目錄項能涉及到一項內容[4]。其結構如圖2所示。
圖2 多目錄Hash結構圖Fig.2 Multi-directory Hash structure diagram
2.2.1 索引方法
訪問方式對應不同存儲形式,對于嵌入式結構,可選用四類訪問方式。首先是B+樹,在關鍵字為有序狀態(tài)中,其算法相對適宜,例如范圍查找。根據(jù)確定次序,關鍵字排序有默認規(guī)則,而此通常是數(shù)據(jù)庫在創(chuàng)建中選定的比較函數(shù)確定,能根據(jù)所需改動。在頁面分裂后,該結構能不平均處理頁面,同時能擁有較佳的查詢效果。而且B+樹無需借助轉移記錄,維持基本平衡。在大部分條件下,能縮短查找時長,但由于代碼相對復雜,會造成更新效率放緩,甚至出現(xiàn)死鎖的情況。另外,節(jié)點與硬盤的頁面基本相同,在取讀記錄內容中,其對應信息會讀入內容中。而且關鍵詞之間有聯(lián)系,在執(zhí)行下一步查找中,也能取讀頁面的其他內容[5]。Hash在數(shù)據(jù)庫內主要選擇線性可擴展的算法,按照表數(shù)量可加以調整。保存的關鍵字支持任何信息結構,通常在工作集規(guī)模偏大,并且關鍵字大多數(shù)是隨機分布,便會應用該算法。另外,Recno中,所有記錄均會有對應的邏輯記錄號,其從算法本身而來。其是基于B+算法形成,擁有保存有序信息的接口,數(shù)據(jù)長度能設置。Queue則和Recno類似,但其進行進行定長記錄,而且插入動作僅能從尾部插入,但效率更高,處于并發(fā)操作狀態(tài)下,其效率更佳[6]。
2.2.2 試驗研究
在確定相同的數(shù)據(jù)庫條件下,針對不同索引方法加以比較分析,連續(xù)重復十次后,選擇平均值作為最后的結果。試驗條件為:32位RedHat Linux系統(tǒng);1G內存;2800MHz CPU。以插入操作為例,不同索引方式的試驗表現(xiàn)如表1所示:
表1 插入操作性能Tab.1 Insert operation performance
通過試驗研究,能得到嵌入式的數(shù)據(jù)庫擁有較的讀寫性能。其支持特殊使用操作,挑選更匹配的訪問方式,而且代碼務必過多調整。
EMS使用期間,出現(xiàn)頻率較多的動作為查找實時信息,其一般包括兩種操作,即單一等值動作;范圍與等值一同查找。按照嵌入式的數(shù)據(jù)庫索引方法設置方式來看,結合EMS特征,筆者提出兩個索引建議,即從T樹改良形成的T-st;桶散布的哈希方法。前者對于單一鍵值檢索,和T樹及T*樹大體上一致。該結構運行算法為:先確定根節(jié)點,假設關鍵字不足最小元素值,會繼續(xù)向下查找左子樹,如果超過最大元素值,便向下查找右子樹。如果上述條件均不滿足,會選擇二分查找。哈希索引的檢索算法為:先導入需要檢索內容的關鍵字,借助哈希函數(shù)進行轉換,以獲得相應地址。基于關聯(lián)性記錄號,鎖定關鍵字,評估其和所需查找關鍵字是否匹配,以判斷檢索成功與否。
單就插入操作來看,測試結果和T-樹比較,T-st在插入動作的時間表現(xiàn)上更好,原因在于后者運用附屬節(jié)點,使得維持平衡的頻率下降,省去部分時間。比較來看,哈希索引在插入動作效率上的表現(xiàn)均較佳。
EMS運行中,訪問數(shù)據(jù)庫內信息記錄中,能按照數(shù)據(jù)庫狀況,選擇適宜的索引方式。由此筆者提出,能進行配置索引方法的模式。具體為:enum Indextype{HashIndex,TstIndex};//Indextype,確定是0,則應用哈希索引,如果為1,則應選擇T-st樹。另外,在EMS中,如果參數(shù)狀態(tài)及數(shù)據(jù)信息等沒有關系的表記錄查找,能盡量選擇桶散布的哈希方式,利于進行隨機查找等值,能保持較好的運行狀態(tài)。
通過上文整合分析,結合EMS的實時數(shù)據(jù)庫運用特點,對比各項索引技術,對實踐中索引方法選擇,起到參考價值。基于嵌入式的數(shù)據(jù)庫在索引方法上的表現(xiàn),對比T樹與哈希索引,佐證二者都有可用價值,具體操作應用根據(jù)需求挑選即可。
引用
[1] 王魏,蔡振江,劉少飛.基于反饋能量管理系統(tǒng)的PHEV實時控制設計[J].現(xiàn)代電子技術,2021(9):129-135.
[2] 徐婷婷.離網(wǎng)型交流微電網(wǎng)能量管理系統(tǒng)研究[D].杭州:浙江大學,2021.
[3] 劉廣一,戴仁昶,劉克文,等.基于圖計算的能量管理系統(tǒng)實時網(wǎng)絡分析應用研發(fā)[J].電工技術學報,2020(11):2339-2348.
[4] 賈斌.小型區(qū)域能源能量管理系統(tǒng)研究與應用[D].濟南:山東大學,2020.
[5] 李玉剛,王宏洋.基于物聯(lián)網(wǎng)技術的印刷企業(yè)能量管理系統(tǒng)設計與實現(xiàn)[J].機械設計與制造工程,2019(6):98-102.
[6] 成蒙,關欣,吳文瀟,等.面向智能電網(wǎng)的家庭能量管理系統(tǒng)綜述[J].建筑節(jié)能,2019(10):117-121+131.