周嘉麗 師靚

摘 要:本文從闡釋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.