• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于RBAC的實(shí)時(shí)通信更新異地?cái)?shù)據(jù)庫(kù)研究

      2018-09-20 10:17:18王芳
      無(wú)線互聯(lián)科技 2018年12期
      關(guān)鍵詞:消息規(guī)則數(shù)據(jù)庫(kù)

      王芳

      摘要:分布式數(shù)據(jù)庫(kù)被分布在不同的站點(diǎn)上,如何保障各站點(diǎn)數(shù)據(jù)庫(kù)的實(shí)時(shí)更新是數(shù)據(jù)庫(kù)管理員考慮的主要問(wèn)題。文章在飛機(jī)庫(kù)數(shù)據(jù)管理系統(tǒng)中提出了一種新的更新異地?cái)?shù)據(jù)庫(kù)的方案,通過(guò)主動(dòng)生成數(shù)據(jù)庫(kù)更新的詳細(xì)內(nèi)容,發(fā)送消息實(shí)時(shí)通信,由異地?cái)?shù)據(jù)庫(kù)管理員決定是否對(duì)異地?cái)?shù)據(jù)庫(kù)更新。

      關(guān)鍵詞:數(shù)據(jù)庫(kù);消息;規(guī)則;SQL

      1 分布式數(shù)據(jù)庫(kù)概述

      分布式數(shù)據(jù)庫(kù)是數(shù)據(jù)庫(kù)主流研究方向。數(shù)據(jù)庫(kù)經(jīng)常被分布在不同的站點(diǎn)上,保障各站點(diǎn)數(shù)據(jù)的實(shí)時(shí)更新是主要問(wèn)題。對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行修改時(shí),一般有兩種方式:(1)用戶可以直接進(jìn)入到其他站點(diǎn)的數(shù)據(jù)庫(kù),對(duì)其修改;(2)通過(guò)傳送消息來(lái)實(shí)時(shí)修改數(shù)據(jù)庫(kù)。

      本文采用介紹第二種方案,可以有效地維護(hù)數(shù)據(jù)庫(kù)的安全問(wèn)題。在這種方案中,如何在數(shù)據(jù)庫(kù)中提取有用字段,生成編碼并發(fā)送消息是課題研究的重點(diǎn)。

      2 異地庫(kù)表的通信

      利用通信技術(shù)實(shí)現(xiàn)對(duì)異地庫(kù)表的修改(見圖1),即每個(gè)站點(diǎn)的DBA發(fā)送消息給其他站點(diǎn),接受消息的站點(diǎn)根據(jù)得到的消息,對(duì)其接受的字段進(jìn)行分析和提取,利用數(shù)據(jù)庫(kù)的主動(dòng)機(jī)制實(shí)現(xiàn)數(shù)據(jù)庫(kù)的自動(dòng)修改,提高了對(duì)數(shù)據(jù)庫(kù)操作的安全性和實(shí)時(shí)性[1]。

      3 實(shí)時(shí)通信更新數(shù)據(jù)庫(kù)

      3.1 消息規(guī)則的約定方法

      實(shí)時(shí)通信時(shí),服務(wù)器和客戶機(jī)之間必須約定消息規(guī)則,以便于對(duì)消息進(jìn)行解析。數(shù)據(jù)庫(kù)更新時(shí),主動(dòng)生成的消息應(yīng)該包含以下內(nèi)容:修改的表名、修改的列名、修改列所對(duì)應(yīng)

      的值。對(duì)規(guī)則格式的設(shè)置采用結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language,SQL)編寫。對(duì)消息規(guī)則格式定義為:

      表名#對(duì)表的操作#所需的表字段信息。(“#”為信息段的分隔號(hào))。

      3.1.1 刪除記錄

      刪除表記錄時(shí),SQL語(yǔ)句為:Delete From表名Where 條件。

      在一個(gè)表中,由于主鍵具有唯一性,所以可以提取主鍵的字段,作為刪除表記錄時(shí)需要滿足的條件。操作時(shí)采用的約定為:表名#刪除#主鍵。只需要對(duì)要?jiǎng)h除表記錄的主鍵的列名和值進(jìn)行提取,其余字段可以忽略。

      3.1.2 修改記錄

      對(duì)表中的已有數(shù)據(jù)進(jìn)行修改的SQL語(yǔ)句為:Update表名Set列名1=值1,列名2=值2,…Where條件。

      同樣由于主鍵的唯一性,提取主鍵的字段,作為修改表記錄滿足的條件。對(duì)修改的表記錄的所有列名和值進(jìn)行提取(而不去管是否修改了該列),對(duì)所有列的值進(jìn)行重置。根據(jù)這種方法,在對(duì)表記錄修改時(shí),采用的約定為:表名#修改#主鍵#列名1=值1,列名2=值2,…

      3.1.3 插入記錄

      向表中插入一行數(shù)據(jù)的SQL語(yǔ)法如下:Insert Into表名[列名1,列名2,…]Values(值1,值2,…);

      同樣把主鍵作為插入記錄滿足的條件,提取所有列名和所輸入的列值。插入表記錄時(shí)的約定為:表名#插入#列名1,列名2-#值1,值2,…客戶機(jī)接收到傳送的消息后,只需要寫入SQL語(yǔ)句中的固定語(yǔ)法部分,即可完成SQL語(yǔ)句,簡(jiǎn)化了客戶機(jī)對(duì)消息的解析過(guò)程[2]。

      3.2 消息機(jī)制的實(shí)現(xiàn)

      在實(shí)現(xiàn)通信時(shí)使用WinSock編寫程序。應(yīng)用程序調(diào)用Windows Sockets的應(yīng)用程序接口(Application Program Interface,API)實(shí)現(xiàn)相互之間的通信。[3]Windows Sockets又利用下層的網(wǎng)絡(luò)通信協(xié)議功能和操作系統(tǒng)調(diào)用實(shí)現(xiàn)實(shí)際的通信工作。用戶修改了服務(wù)器的數(shù)據(jù)庫(kù)記錄后,可以通過(guò)發(fā)送消息到客戶機(jī),客戶機(jī)根據(jù)接收的消息對(duì)其數(shù)據(jù)庫(kù)進(jìn)行相應(yīng)的修改。如圖2所示,以修改飛機(jī)基本參數(shù)表為例。

      (totalstring)+“#”

      窗口消息如圖3所示。在服務(wù)器端運(yùn)行時(shí)候,對(duì)客戶端監(jiān)聽,如果成功,發(fā)出一個(gè)消息。發(fā)送消息的文本框內(nèi)給出了要發(fā)送到客戶機(jī)的消息。用戶可以在“客戶機(jī)IP地址”一欄輸入需要傳輸?shù)目蛻魴C(jī)的IP地址。監(jiān)聽按鈕程序如下:

      如果要發(fā)送消息到客戶機(jī),則需要獲得信息:表名,所修改行的列名和對(duì)應(yīng)值。以對(duì)數(shù)據(jù)庫(kù)中表記錄的修改為例,其程序代碼如下:

      string ls_colcount

      ls_colcount = w_input.dw_l.Describe(“DataWindow.Column.Count”)

      …………

      //取得表名,得到修改的行的列名和值

      for ncount=l to count -1

      field_name=w_input.dw_l.Describe(“#”+string(ncount)+“Name”)

      field_value=w_input.dw_l.getitemstring(w_input.dw_l.getrow(),ncount)

      totalstring=totalstring+field-name+ “一”+field-value+“,”next

      //獲得要發(fā)送的消息mle_2.text=xiao_xi+“#”+

      “修改#”+key_name+“=”+key-value+“+”+trim

      (totalstring)+“#”

      窗口消息如圖3所示。在服務(wù)器端運(yùn)行時(shí)候,對(duì)客戶端監(jiān)聽,如果成功,發(fā)出一個(gè)消息。發(fā)送消息的文本框內(nèi)給出了要發(fā)送到客戶機(jī)的消息。用戶可以在“客戶機(jī)IP地址”一欄輸入需要傳輸?shù)目蛻魴C(jī)的IP地址。監(jiān)聽按鈕程序如下:

      transport myaccept //定義全局變量

      long ll_rc

      myaccept=Create transport,

      myaccept.driver=“winsocket”

      myaccept.application:“appserver ”

      ll_rc=myaccept.listen()

      if ll_rc<>0 then

      messageBox(“Unable to Start Server”,myaccept.

      ErrText)

      end if

      客戶機(jī)根據(jù)得到的消息,對(duì)其解析,生成SQL語(yǔ)句,通過(guò)主動(dòng)機(jī)制,對(duì)客戶機(jī)數(shù)據(jù)庫(kù)中表的記錄進(jìn)行修改。

      4 結(jié)語(yǔ)

      本方案可以應(yīng)用在數(shù)據(jù)庫(kù)建立在多個(gè)站點(diǎn)且由不同數(shù)據(jù)庫(kù)管理員管理的情況下,并且可以針對(duì)不同的情況對(duì)具體實(shí)現(xiàn)方式進(jìn)行相應(yīng)的修改,具有可移植性。

      [參考文獻(xiàn)]

      [1]肖迎元.分布式實(shí)時(shí)數(shù)據(jù)庫(kù)技術(shù)[M].北京:科學(xué)出版社,2009.

      [2]郭寶利,康海濤,李冬冬.PowerBuilder 9.0實(shí)用解析[M].北京:電子工業(yè)出版社,2004.

      [3]張英杰.PowerBuilder應(yīng)用工程軟件開發(fā)指南[M].西安:西安交通大學(xué)出版社,2005.

      [4]鄧全良.Winsock網(wǎng)絡(luò)程序設(shè)計(jì)[M].北京:中國(guó)鐵道出版社,2002.

      猜你喜歡
      消息規(guī)則數(shù)據(jù)庫(kù)
      撐竿跳規(guī)則的制定
      數(shù)獨(dú)的規(guī)則和演變
      一張圖看5G消息
      讓規(guī)則不規(guī)則
      Coco薇(2017年11期)2018-01-03 20:59:57
      數(shù)據(jù)庫(kù)
      TPP反腐敗規(guī)則對(duì)我國(guó)的啟示
      數(shù)據(jù)庫(kù)
      數(shù)據(jù)庫(kù)
      數(shù)據(jù)庫(kù)
      消息
      乃东县| 常宁市| 文水县| 额敏县| 舒城县| 西城区| 五常市| 大庆市| 仪陇县| 霍林郭勒市| 自贡市| 江油市| 景德镇市| 陆川县| 同德县| 峨山| 鹤庆县| 简阳市| 自治县| 噶尔县| 厦门市| 富平县| 锦州市| 金秀| 道真| 牡丹江市| 铅山县| 临沧市| 栾川县| 安顺市| 泾川县| 侯马市| 新邵县| 丹东市| 温泉县| 玉龙| 石首市| 乐山市| 宣汉县| 新乐市| 冀州市|