一种关系型内存数据库主键级联关系名称的快速生成方法与流程

文档序号:33556830发布日期:2023-03-22 12:17阅读:26来源:国知局
一种关系型内存数据库主键级联关系名称的快速生成方法与流程

1.本发明涉及实时数据库技术应用,特别是一种关系型内存数据库主键级联关系名称的快速生成方法。


背景技术:

2.随着新一代电网调度控制系统试点工作的推进,电网真实运行数据逐渐正式接入,各类qt图形界面、web画面、采样查询工具和实时库界面工具等逐步部署上线,对实时库主键级联关系名称的访问愈发频繁,对实时库引用显示的生成效率提出了更高的要求。
3.传统的引用显示是基于实时库表的配置信息进行在线提取,根据级联关系外键进行多表查询,逐级获取引用显示内容进行拼接形成完整的级联关系名称。这种方式需要在每次调用时实时生成,在高频访问时存在重复计算和资源浪费,导致不能快速响应客户端调用。


技术实现要素:

4.发明目的:本发明的目的是提供一种关系型内存数据库主键级联关系名称的快速生成方法,从而将设备表主键的引用显示内容和设备表的各个引用显示域名预先生成并缓存起来,客户端访问时基于缓存的方式进行提取,替代实时计算生成的方式。
5.技术方案:本发明所述的一种关系型内存数据库主键级联关系名称的快速生成方法,包括以下步骤:
6.(1)从实时库中的表信息表和域信息表中读取配置信息,确定引用显示缓存表的表结构。
7.(2)根据配置信息提供的表和域结构,通过初始化程序创建级联引用缓存表并从商用库下装生成引用显示需要的数据,同时将生成的主键级联引用显示名称写入级联引用缓存表的域“ref_name”中缓存;
8.(3)创建两级引用显示缓存应用,同时在一级缓存应用和二级缓存应用中都创建快速生成引用显示的缓存表;客户端访问引用显示时,只请求一级缓存应用中的数据,引用显示缓存的更新则在二级缓存应用上进行,从而避免在引用显示缓存周期更新的过程中客户端访问失败;
9.(4)提供实时更新和周期更新两种引用显示缓存更新机制,其中实时更新由引用显示修改服务通过实时接收模型修改消息提供,周期更新由引用显示访问服务提供,两种缓存修改方式都只更新二级缓存应用中的引用显示缓存表,同时将二级缓存应用中的“ref_name”引用显示缓存域周期同步到一级缓存应用中,同步周期可配置;
10.(5)感知缓存表或域的个数是否发生变化,从而针对新的表结构重新生成二级缓存应用中的引用显示缓存表,并且整个过程对客户端访问透明。
11.步骤(1)中所述的配置信息为引用显示缓存表的表结构信息。
12.一种计算机存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实
现上述的一种关系型内存数据库主键级联关系名称的快速生成方法。
13.一种计算机设备,包括储存器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的一种关系型内存数据库主键级联关系名称的快速生成方法。
14.有益效果:与现有技术相比,本发明具有如下优点:本发明所述方法创建两级引用缓存应用,对关系型内存数据库主键级联关系名称引用显示进行缓存,客户端对引用显示的获取不再需要实时计算生成,可根据主键直接从缓存中读取;当引用显示发生修改,客户端从一级缓存应用获取最新引用显示的最长时间周期小于30秒;在线修改引用显示缓存配置后,二级缓存中的引用显示缓存重构时间周期小于5分钟;经现场测试验证50万遥测信息的主键级联关系引用显示的生成时间,传统的实时计算方式耗时120秒,基于缓存的方式耗时12秒。
附图说明
15.图1是主键级联关系名称快速生成架构设计图;
16.图2是引用显示缓存表的表结构图;其中,图2(a)为传统数据表结构,图2(b)为引用显示缓存表结构;
17.图3是接收模型修改消息触发式更新引用显示的流程图;
18.图4是周期更新引用显示的流程图。
具体实施方式
19.下面结合附图对本发明的技术方案作进一步说明。
20.如图1所示,本发明所述的一种关系型内存数据库主键级联关系名称的快速生成方法,包括以下步骤:
21.(1)从实时库中的表信息表和域信息表中读取配置信息,确定引用显示缓存表的表结构;
22.读取实时数据库表信息表中“is_ref_cache”的配置信息,确定需要对引用显示缓存的表,并读取实时库域信息表中需要引用显示缓存的表中“reference_flag”的配置信息,确定需要缓存的域。
23.如图2所示,对于启用引用显示缓存的表需要扩展一个“ref_name”域,存储计算好的主键对应的引用显示名称,这个域只在引用显示缓存的一级缓存应用和二级缓存应用中下装。
24.(2)引用显示缓存的初始化;
25.根据步骤(1)提供的表和域结构,执行初始化程序rtdb_init_ref在实时库的public_ref子场景的一级缓存应用和二级缓存应用下创建快速生成引用显示的缓存表,同时使用传统在线生成引用显示的方式将主键的引用显示写入“ref_name”域中。
26.初始化程序rtdb_init_ref支持通过参数控制从不同数据源获取数据生成引用显示缓存。参数为
“‑
db”,从商用库获取数据生成引用显示数据,参数为
“‑
rtdb”,从scada子场景主机上的public_ref子场景二级缓存应用获取数据生成引用显示。该功能既可以作为引用显示缓存的数据初始化工具,也可以作为数据质量出现问题时的全量恢复工具,修复时
同样也可以选择从商用库还是scada主机为数据源头进行恢复。
27.(3)引用显示缓存数据更新;
28.引用显示刷新包括周期更新和触发式更新两种,由rtdb_modify_ref服务管理。
29.(3.1)触发式更新
30.当引用域的内容发生变化,需要通过接收模型修改消息的方式同步更新。引用显示触发式维护的流程如下图3所示:
31.引用显示更新服务接收到模型修改消息后,根据消息类型有三种处理方式:
32.①
插入
33.a.判断要插入的表是否引用显示缓存;
34.b.如果没有则返回;
35.c.判断表是否有引用显示域;
36.d.如果没有则返回;
37.e.解析消息,根据引用显示缓存表的结构,按偏移计算出主键和引用显示域的域值,将新增加的记录写入public_ref子场景二级缓存应用下对应的表;
38.f.根据主键级联管理递归生成对应记录的引用显示内容,并更新到public_ref子场景二级缓存应用下对应的缓存表。
39.②
修改
40.a.判断要插入的表是否引用显示缓存;
41.b.如果不是则返回;
42.c.判断要修改的域是否设置了引用显示;
43.d.如果不是则返回;
44.e.解析消息,将修改的域值调用修改接口写入public_ref子场景二级缓存应用下对应表的记录中,重新生成这条记录的主键级联关系引用显示,并将生成的结果更新到ref_name域;
45.f.查询域信息表中所有引用该表的表号和域号;
46.在public_ref子场景二级缓存应用中,对每一张缓存表都以修改记录的主键为外键,过滤出对应记录;
47.g.重新生成这谢记录的主键级联关系引用显示,并更新到缓存表的ref_name域。
48.③
删除
49.a.判断要删除的表是否引用显示缓存;
50.b.如果不是则返回;
51.c.解析消息得到删除的设备表主键,删除public_ref子场景二级缓存应用下对应缓存表的记录;
52.d.因为删除设备都是自底向上删除,所以此处不考虑向下递归更新引用显示缓存。
53.(3.2)周期更新
54.考虑引用显示缓存在触发更新的过程中发生数据请求变化或消息丢失等异常情况,增加周期更新机制,为触发式更新过程中的异常情况进行托底。通过在引用显示访问服务rtdb_server_ref中创建后台线程,定时调用rtdb_init_ref程序,实现周期更新public_
ref子场景二级缓存应用下各张表的“ref_name”域,更新周期可配置,通过入参指定,如下图4所示。
55.scada主机采用从商用库同步的方式,执行“rtdb_init_ref-db”;其它应用服务器则从scada主机同步引用显示缓存表,执行“rtdb_init_ref-rtdb”。通过主机与关系库一致,备机与主机一致的机制,保证各应用服务器上public_ref子场景二级缓存应用下引用显示名称的一致性和完整性。
56.(4)一级缓存下ref_name的更新;
57.缓存修改服务rtdb_modify_ref只更新二级缓存中的引用显示缓存表,一级缓存应用中的引用显示名称域“ref_name”由二级缓存应用同步而来,通过在rtdb_modify_ref中创建后台线程,每间隔30秒执行“rtdb_init_ref-sync”,将二级缓存中的“ref_name”引用显示缓存域同步到一级缓存中。
58.(5)在线修改引用显示缓存配置;
59.系统运行中有时需要修改引用显示表或域的个数,rtdb_server_ref在每次周期更新二级缓存应用时会校验引用显示缓存的配置是否修改,从而感知变化并针对新的表结构重新生成二级缓存应用中的引用显示缓存表。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1