宁乡市职业中专学校 刘锦铃
本文从特点与关键技术角度,简述实时数据库,并以索引技术为例,分析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.