寧鄉市職業中專學校 劉錦鈴
本文從特點與關鍵技術角度,簡述實時數據庫,并以索引技術為例,分析EMS中的實時數據庫,具體涉及到哈希索引、B+樹結構、T-樹、AVL樹等。以供相關人士探討。
EMS系統為當代電網調度中,裝配的自動化系統,所能提供的功能包括基礎及應用兩類,前者有計算機及操作系統等;后者涉及到SCADA、AGC等。其運行核心為實時數據庫,滿足數據記錄的全程、不間斷地集成信息,給有關電網調度管理,予以可靠依據,促使從生產至決策;從管理至實地操作等的數據無縫銜接。
對于實時數據庫而言,其所能展現的正確度,并非僅憑借邏輯結果,還借助形成邏輯結果的時長,與常規數據庫比較,其的突出特點可概括為:(1)實時數據庫內,一般是基于設定周期,獲取被管理方的數據資料,由此要求控制系統能夠按照周期間隔,完成信息處理與必要響應。(2)錄入信息的合法性,應當帶有時間特點,錄入信息的動作會根據時間調整。在相同的時長間隔中,錄入信息,表示被管理方目前狀態,也就是信息和時間需保持同步。(3)所有系統均無法實現對被管理方,進行絕對性的時間同步管控。實際上,在獲取到被管理方變化,到執行分析處理等動作之間,勢必會經過一段時間,也就是由接收至響應,會形成時間延遲,而所謂的“實時”,是要將該延遲盡可能縮小,處于限定區間中。(4)管理系統應當在獲取信息后,在特定時長間隔內,采取所需動作。如果超出其對應時長,則不屬于實時相應,便無法滿足實時管理的意圖。
基于RTDB的運用價值與性能,能概括出其幾項關鍵技術。(1)數據組織,對于數據上的不同處理,是RTDB與常規數據庫的最大差異,設定時間限制,存在明顯的復雜性。RTDB設計中,為應對實時性的要求,通常把關系數據庫中表結構及關系加以簡化,以達到提升性能的效果。另外,相較于磁盤數據庫,內存數據庫在信息處理上的表現更佳,可供RTDB應用。在系統設計中,會融合內存數據庫特征,以其為支撐,使全部操作動作均保存其中,利于各操作之間的信息共享,使得達到實時的效果。(2)索引技術,其是提升數據庫應用效率的關鍵技術,巧妙應用索引手段,能滿足效率需求。比較常見的索引技術包括AVL樹、T樹、B+樹等此類樹形索引,以及隨機型的Hash等。其中,T樹與Hash可較好地運用在內容上。本文會重點討論該項技術。(3)并發控制協議,支持面對若干任務一同適應數據庫,可維護數據庫基本的執行效果。為達到實時性的目的,會合理放寬可串行性[1]。
2.1.1 樹形結構
AVL樹結構的索引技術,也就是平衡二叉樹,執行插入及刪除動作中,有可能出現失衡的現象,對此會借助旋轉維持平衡。而旋轉處理方式包括四類,分別是單向右旋、單向左旋、先左后右和先右后左。選擇AVL索引,可收獲較優存取功能,但應用內存的效果有限,各節點對應一個信息元素,并配備指針及其他控制數據。
B-樹結構,屬于動態調整的平衡樹,是一種外查找機制。其所有節點均包括2m數據域與2m+1的指針域,其節點內信息通常超過m個,且存儲空間不會被占滿,消除插入信息后引發分裂問題[2]。同時,其左子樹的節點信息均小于父節點,右子樹則正好相反,如圖1所示。

圖1 B-樹結構圖Fig.1 B-tree structure diagram
在此樹形結構下進行查找動作,會先確定節點,和二叉排序樹相似,而后基于節點鎖定關鍵字,通常為二分查找法,倘若在葉子節點處還未確定對應內容,表示檢索失敗。在插入關鍵字中,會從底層非終端處加入,在關鍵字數目不足(m-1)個,支持立即插入,反之,會加以調整,進行分裂處理。其刪除動作相對復雜,會面臨三種情況:對應節點關鍵字數目至少達到m/2個,支持立即刪除,如果數目等于(m/2-1)個,同時,相鄰節點數目超過(m/2-1)個,則會刪掉相鄰節點的最小或者最大關鍵字,并轉移至父節點,將后者內部與之相近的關鍵字轉移到原節點,完成整體操作。假設刪除節點和相鄰節點的數目均等于(m/2-1)個,會在刪除動作完成后,把剩下關鍵字與指針,和父節點對應關鍵字,一同轉移至相鄰節點內。B+樹結構是根據B-樹結構得來,帶有2個頭指針,其中1個指向根節點,1個則對應關鍵字的最小葉子節點。T樹結構把上述類型整合起來,形成的數據框架,其不僅為二叉樹,其各項節點還有若干實際元素。其和AVL樹更為接近,分成左右兩個子樹,并且深度差在1以內。其內部各節點均對應若干個鍵值域。單就該結構的插入算法為例,需先確定節點狀態,如果是“空”,立即創建T樹,并插入信息,成為鍵值,“不空”會按照檢索算法進行定位,確定插入的位置,同時保留查找期間涉及到的節點。在查找成功的情況下,需判斷對應節點有無剩余空間,倘若有,便只需進行節點移動即可,反之會把其內部最小鍵值,轉移至左子樹上。如果沒有子樹,便重新確定節點。T*樹結構,屬于T樹的改良版,是為更加突出此類結構用于數據庫內的長處,提升范圍查詢水平。其和T樹的節點結構大致相同,但T*在各節點處均配備指針,起到優化范圍查詢的作用。T-tail樹結構,在插入節點中,不會執行平衡操作,添加的是附屬節點,借此能簡化平衡操作[3]。
2.1.2 隨機哈希索引
根據樹形結構,查找應用效率立足于表次數,因而記錄屬于隨機狀態,與對應關鍵詞無固定聯系,而執行查找動作中,會通過與關鍵字加以比較,才能成功檢索。但Hash處于理想條件下,無需進行比較,把關鍵字直接映射至相應位置,實現一次鎖定目標。相關常見的散列方式有:(1)桶散布算法,假設L為散列桶的數量,按照對應函數,參數是查找鍵,獲得從0至L-1的整數,并產生數組,內部包括若干L個鏈表頭,分別和數組內某個桶。假設查找鍵是X,則對應桶號是h(K),直接保存,其中h表示散列函數。(2)可擴展算法,分成二層結構,包括目錄與葉節點。其中,目錄包括指向深度的目錄頭及目錄項構成。(3)線性可擴展算法,是將以上兩個方式融合而來,包含可擴展目錄以及桶散布的快拉鏈。(4)多目錄散發,把關鍵字直接映射為地址,分成目錄及目錄項,此處目錄數量不變,全部目錄擴展方法類似于葉大小是1的方式,單一目錄項能涉及到一項內容[4]。其結構如圖2所示。

圖2 多目錄Hash結構圖Fig.2 Multi-directory Hash structure diagram
2.2.1 索引方法
訪問方式對應不同存儲形式,對于嵌入式結構,可選用四類訪問方式。首先是B+樹,在關鍵字為有序狀態中,其算法相對適宜,例如范圍查找。根據確定次序,關鍵字排序有默認規則,而此通常是數據庫在創建中選定的比較函數確定,能根據所需改動。在頁面分裂后,該結構能不平均處理頁面,同時能擁有較佳的查詢效果。而且B+樹無需借助轉移記錄,維持基本平衡。在大部分條件下,能縮短查找時長,但由于代碼相對復雜,會造成更新效率放緩,甚至出現死鎖的情況。另外,節點與硬盤的頁面基本相同,在取讀記錄內容中,其對應信息會讀入內容中。而且關鍵詞之間有聯系,在執行下一步查找中,也能取讀頁面的其他內容[5]。Hash在數據庫內主要選擇線性可擴展的算法,按照表數量可加以調整。保存的關鍵字支持任何信息結構,通常在工作集規模偏大,并且關鍵字大多數是隨機分布,便會應用該算法。另外,Recno中,所有記錄均會有對應的邏輯記錄號,其從算法本身而來。其是基于B+算法形成,擁有保存有序信息的接口,數據長度能設置。Queue則和Recno類似,但其進行進行定長記錄,而且插入動作僅能從尾部插入,但效率更高,處于并發操作狀態下,其效率更佳[6]。
2.2.2 試驗研究
在確定相同的數據庫條件下,針對不同索引方法加以比較分析,連續重復十次后,選擇平均值作為最后的結果。試驗條件為:32位RedHat Linux系統;1G內存;2800MHz CPU。以插入操作為例,不同索引方式的試驗表現如表1所示:

表1 插入操作性能Tab.1 Insert operation performance
通過試驗研究,能得到嵌入式的數據庫擁有較的讀寫性能。其支持特殊使用操作,挑選更匹配的訪問方式,而且代碼務必過多調整。
EMS使用期間,出現頻率較多的動作為查找實時信息,其一般包括兩種操作,即單一等值動作;范圍與等值一同查找。按照嵌入式的數據庫索引方法設置方式來看,結合EMS特征,筆者提出兩個索引建議,即從T樹改良形成的T-st;桶散布的哈希方法。前者對于單一鍵值檢索,和T樹及T*樹大體上一致。該結構運行算法為:先確定根節點,假設關鍵字不足最小元素值,會繼續向下查找左子樹,如果超過最大元素值,便向下查找右子樹。如果上述條件均不滿足,會選擇二分查找。哈希索引的檢索算法為:先導入需要檢索內容的關鍵字,借助哈希函數進行轉換,以獲得相應地址。基于關聯性記錄號,鎖定關鍵字,評估其和所需查找關鍵字是否匹配,以判斷檢索成功與否。
單就插入操作來看,測試結果和T-樹比較,T-st在插入動作的時間表現上更好,原因在于后者運用附屬節點,使得維持平衡的頻率下降,省去部分時間。比較來看,哈希索引在插入動作效率上的表現均較佳。
EMS運行中,訪問數據庫內信息記錄中,能按照數據庫狀況,選擇適宜的索引方式。由此筆者提出,能進行配置索引方法的模式。具體為:enum Indextype{HashIndex,TstIndex};//Indextype,確定是0,則應用哈希索引,如果為1,則應選擇T-st樹。另外,在EMS中,如果參數狀態及數據信息等沒有關系的表記錄查找,能盡量選擇桶散布的哈希方式,利于進行隨機查找等值,能保持較好的運行狀態。
通過上文整合分析,結合EMS的實時數據庫運用特點,對比各項索引技術,對實踐中索引方法選擇,起到參考價值。基于嵌入式的數據庫在索引方法上的表現,對比T樹與哈希索引,佐證二者都有可用價值,具體操作應用根據需求挑選即可。
引用
[1] 王魏,蔡振江,劉少飛.基于反饋能量管理系統的PHEV實時控制設計[J].現代電子技術,2021(9):129-135.
[2] 徐婷婷.離網型交流微電網能量管理系統研究[D].杭州:浙江大學,2021.
[3] 劉廣一,戴仁昶,劉克文,等.基于圖計算的能量管理系統實時網絡分析應用研發[J].電工技術學報,2020(11):2339-2348.
[4] 賈斌.小型區域能源能量管理系統研究與應用[D].濟南:山東大學,2020.
[5] 李玉剛,王宏洋.基于物聯網技術的印刷企業能量管理系統設計與實現[J].機械設計與制造工程,2019(6):98-102.
[6] 成蒙,關欣,吳文瀟,等.面向智能電網的家庭能量管理系統綜述[J].建筑節能,2019(10):117-121+131.