周嘉丽 师靓
摘 要:本文从阐释RBAC模型的基本原理入手,针对异地数据库实时通信方案的设计思路进行分析,采用SQL语言分别完成消息规则格式、删除记录、修改记录、插入记录的编写,并基于WinSock程序实现通信。检测结果表明,基于RBAC模型能够有效实现异地数据库的实时通信与数据更新,具备良好应用价值。
关键词:异地数据库;实时通信;分布式站点
引言
当前分布式数据库已基本普及,多数企事业单位均通过构建异地数据库进行数据的保存,保障数据完整性与安全性。但在数据传输的过程中,如何保障通信的实时性与数据精度、实现数据库的同步更新,成为当前亟待解决的问题。
1 RBAC模型原理与实时通信方案
1.1 RBAC模型的基本原理
分布式数据库主要通过传输网络将原数据库中的数据分散存储在相应节点上,扩大数据库容量与并发访问量,在此模式下催生了一种基于角色的访问控制模型(RBAC),用于识别访问信息系统的人员、数据等是否具备合法性,以此实现访问控制与权限管理。RBAC模型由用户、角色、权限三个模块组成,利用角色实现用户与权限间的连接,依据角色的工作职责授予其相应访问权限,再完成角色的分配。该模型实现了系统用户与访问权限间的有效对接,在用户职责发生变动的条件下可通过逻辑分离进行角色权限的修改,减少授权流程及对系统运行状态造成的影响,为系统与数据安全提供保障[1]。
1.2实时通信方案设计
在分布式数据库模式下为实现异地数据库不同站点数据的实时更新,可利用通信技术传送消息,完成异地数据库表的实时修改,由各站点的DBA分别向其余站点发送消息,当其他站点接收到消息后完成消息解码,将结合消息内容进行字段分析与提取,利用数据库功能进行数据的自动修改与对表操作,结合操作类别生成相应的通讯编码,完成一轮通信传输[2]。
2实时通信模式下数据库更新机制及一致性检测
2.1消息规则约定
2.1.1消息规则格式
为实现异地数据库的实时通信,需围绕服务器与用户工作站间完成消息规则的约定,基于统一消息规则进行收发消息的解码,并修改表记录。在数据库更新环节,将主动生成修改后的表名、列名以及对应的参数,基于SQL语言编写消息规则格式并进行定义,将“#”设为信息段的分隔号,则消息规则格式为:
表名#对表操作#所需的表字段信息
2.1.2删除表记录
基于SQL语言删除表记录,将其表示为:
Delete From 表名 Where 条件
通常在同一数据库表内的主关键字是唯一的,因此可通过提取主键的字段进行删除表记录时所需满足条件的定义,基于“表名#删除#主键”的约定执行删除表的操作。在此过程中仅需提取出删除表记录对应的主键的列名与参数值,无需考虑其他字段。
2.1.3修改表记录
基于SQL语言修改表记录,将其表示为:
Update表名 Set 列名1=值1,列名2=值2,…Where 条件
由于在同一数据库内的主键是唯一的,因此将主键的字段进行提取,确定为修改表记录所需满足的条件,基于“表名#修改#主键#列名1=值1,列名2=值2,…”的约定执行修改表的操作。在此过程中通过将修改表记录对应的列名、值进行提取,即可实现对各列值的重置。
2.1.4插入表记录
基于SQL语言插入表记录,将其表示为:
Insert Into 表名 [列名1,列名2,…]Values(值1,值2,…)
借鉴主键的唯一性特征提取字段、确定为插入记录所需满足的条件,将各列名和对应的列值进行提取,基于“表名#插入#列名1,列名2,…#值1,值2,…”约定执行插入表记录的操作。在此过程中用户工作站在接收到服务器发送的消息后,仅需依照上述SQL语句将固定语法部分写入,即可完成SQL语句,无需进行消息解析。
2.2通信实现机制
基于Winsock规范进行通信程序的编写,通过调用网络编程接口Windows Sockets的下层网络通信协议与API接口即可实现用户工作站与服务器间的通信。当用户针对服务器中的数据库进行修改处理后,系统将自动将修改指令发送至用户工作站,依据接收到的消息在异地数据库中完成数据的修改,实现同步更新。假设从服务器向用户工作站发送消息,需获取到具体的表名、修改行的列名与列值,以此保障异地数据库中表记录的实时更新。其程序代码为:
string 1s_colcount
1s_colcount=w_input.dw_1.Describe(“DataWindow.Column.Count”)
……
//获得表名,修改行的列名与列值
for ncount=1 to count-1
field_name=w_input.dw_1.Describe(“#”+string(ncount)+“.Name”)
field_value=w_input.dw_1.getitemstring(w_+input.dw_1.getrow(),ncount)
totalstring=totalstring+field_name+“—”+field_value+“,”
next
……
//獲得待发送消息
mle_2.test=xiao_xi+“#”+“修改”+key_name+“=”+key_value+“+”“#”+trim(totalstring)+“#”
服务器端在运行过程中将对用户工作站端进行监听,当监听成功后将发送一个消息,在文本框内输入SQL语句即可将消息发送至用户工作站端,由用户输入IP地址,针对监听到的信息进行解析处理、转换为SQL语句,利用数据库功能实现对用户工作站数据库的修改。
2.3数据一致性检测
为检验该方法的实用性与准确性,拟针对传输数据的一致性进行检测。设服务器端数据块的摘要值为N(c)、变更后的异地数据块摘要值为N(Δc)、异地数据块摘要值为N(ΔC),当出现变更后的异地数据时需将数据发送至服务器端数据库中,利用数据服务中心进行摘要值的计算,并将数据包序列号设为Y。假设在t时刻数据包序列号为Yn=Yn-1+1|Yn∈Y∧Yn-1∈N|,且摘要值、累积摘要值的计算结果分别为N(c)=N(C)c=c和N(C)=N(C)C=C,可判断异地数据库更新的数据与服务器端数据库保持一致,即通过一致性检测。将某服务器端数据库与用户工作站端数据库在数据修改后的具体数值输入到该计算模型中,测试结果表明两数据库的数据相同,符合数据一致性标准,由此说明基于RBAC模型的实时通信更新异地数据库方法具备良好适用价值。
结论:本文结合分布式数据库的站点布设形式,采用RBAC模型实现对服务器与用户工作站端数据库信息的修改,基于SQL语言编码、发送消息,实现异地数据库间的实时通信与数据库表名、列名、列值的同步更新,有效提升数据库操作的便捷性与安全性,简化操作程序,为异地数据库的管理工作提供重要方法。
参考文献
[1] 余杨奎.基于角色的访问控制模型(RBAC)研究[J].计算机技术与发展,2019,(01):198-201.
[2] 喻露,罗森林.RBAC模式下数据库内部入侵检测方法研究[J].信息网络安全,2020,(2):83-90.