• 
    

    
    

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

      ?

      基于Flex技術(shù)的云同步方案

      2015-12-01 08:16:24劉傳堯謝火木施芝元
      關(guān)鍵詞:孤島日志語句

      劉傳堯,謝火木,施芝元

      (1.廈門大學現(xiàn)代教育技術(shù)與實踐訓練中心,2.廈門大學信息科學與技術(shù)學院,福建 廈門361005)

      高校校園信息化在建設初期由于沒有進行統(tǒng)籌規(guī)劃,各部門各自為陣,在全校范圍內(nèi)逐步建立了自己的信息系統(tǒng),如教務系統(tǒng)、科研系統(tǒng)、人事系統(tǒng)等,經(jīng)過近20年的發(fā)展,系統(tǒng)功能已經(jīng)趨于完善,并已經(jīng)融入到日常工作中,但隨著校園信息化的基礎(chǔ)設施的完善,這些孤立的系統(tǒng)逐漸顯現(xiàn)出了它們的弊端,其中最主要的問題就是這些系統(tǒng)之間無法實現(xiàn)實時數(shù)據(jù)同步與信息共享而形成了所謂的“信息孤島”[1].目前主要解決的辦法有2種:1)推翻原有系統(tǒng),建立校級數(shù)據(jù)中心,由學校重新規(guī)劃建設各部門信息系統(tǒng),但成本過高;2)對原有的系統(tǒng)進行升級改造,然后實現(xiàn)跨部門之間的實時數(shù)據(jù)同步,讓“數(shù)據(jù)孤島”之間的基礎(chǔ)數(shù)據(jù)有效共享、合并冗余數(shù)據(jù)[2],這是目前普遍采用的方法.

      1 數(shù)字校園“信息孤島”簡介

      所謂“信息孤島”(information isolated island)指的是相對獨立的不同類型的信息系統(tǒng),由于相互封閉,無法進行順暢的信息交流,猶如一個個分散、獨立的島嶼[3].其本質(zhì)問題就是這些獨立的系統(tǒng)之間所生成的數(shù)據(jù)無法相互共享、數(shù)據(jù)不一致,這不僅導致了不同的系統(tǒng)因獨立管理而產(chǎn)生大量冗余數(shù)據(jù),而且由于系統(tǒng)與系統(tǒng)之間缺乏數(shù)據(jù)關(guān)聯(lián),無法對數(shù)據(jù)進行科學分析,特別在大數(shù)據(jù)時代學校無法使用這些數(shù)據(jù)進行科學的管理與決策.高?!靶畔⒐聧u”產(chǎn)生的原因主要是在信息化建設初期,在認識上,沒有充分理解信息化內(nèi)涵;在管理上,缺少統(tǒng)一規(guī)劃;在技術(shù)上,只注重硬件投入,而忽略軟件資源的建設[3].

      查閱文獻發(fā)現(xiàn),目前在解決高?!靶畔⒐聧u”問題上,主要還是從政策理論上去避免“信息孤島”的產(chǎn)生,通過技術(shù)來解決現(xiàn)存的“信息孤島”的方案相關(guān)文獻比較缺乏.目前也有專家提出基于信息交換平臺的實現(xiàn)方法,比如,顏廷良[4]提出基于XML消息的安全數(shù)據(jù)交換平臺研究與應用,郭向陽[5]提出基于數(shù)據(jù)庫復制技術(shù)的云交換平臺研究與實現(xiàn)等.本文提出的是一種基于日志解析數(shù)據(jù)同步的“數(shù)據(jù)孤島”解決方案.該方案的優(yōu)勢在于操作方便,適合遠程同步操作,可以實現(xiàn)記錄級、表一級以及異構(gòu)表間的數(shù)據(jù)同步等.

      2 系統(tǒng)設計方案

      2.1 系統(tǒng)設計的總體思想

      本文提出的數(shù)字校園的數(shù)據(jù)同步方案,主要依靠分析Oracle數(shù)據(jù)庫Redo日志文件,解析日志中的SQL語句,進而讓遠程目標服務器執(zhí)行同樣SQL語句來實現(xiàn)云同步.

      Oracle數(shù)據(jù)庫的操作事務都記錄在Redo日志中,但是原始的Redo日志是加密存儲的非開放二進制數(shù)據(jù),無法直接提取閱讀,要解析Oracle日志,目前比較好的方法就是使用Oracle公司提供的LogMiner工具.LogMiner工具是Oracle8i版本以后新增加的功能,通過使用LogMiner程序,可以對Oracle日志進行解析,解析在線日志、離線日志以及數(shù)據(jù)庫的重作日志文件[6],從而獲得相應數(shù)據(jù)庫操作的DML語句,然后利用Flex詞法分析編譯工具,構(gòu)造針對SQL語句的解析器,并在解析以后重構(gòu)同步端需要的目標語句.

      在廣域網(wǎng)數(shù)字校園環(huán)境下開發(fā)云同步系統(tǒng),主要技術(shù)瓶頸還是增量事件和數(shù)據(jù)如何同步到云端以及云同步系統(tǒng)的效率問題[7].傳統(tǒng)的分布式數(shù)據(jù)庫環(huán)境中采用的靜態(tài)數(shù)據(jù)備份技術(shù),由于傳輸數(shù)據(jù)文件容量巨大,導致效率很低[8-9],不適用于今天的云技術(shù)發(fā)展,所以增量事務同步成為云同步方案中唯一可行的選擇[10-11].在 Oracle數(shù)據(jù)庫中,增量事務同步需要解決Redo日志的解析以及增量事務和數(shù)據(jù)在云端計算機快速入庫的問題.

      2.2 語法解析器的構(gòu)造原理

      快速詞法分析產(chǎn)生器(Flex)是一種詞法分析程序,它是LEX的開放源代碼版本,以BSD許可證發(fā)布.本文使用的Flex版本為Flex2.5.2.Flex主要功能是依據(jù)用戶定義的正則表達式構(gòu)詞規(guī)則,生成掃描詞法結(jié)構(gòu)的自動程序.與自己設計詞法解析程序相比,F(xiàn)lex的速度和準確度高得多,并且采用它,可以減少書寫大量的代碼.

      2.2.1 SQL語句解析器

      本文的SQL語句解析器的設計如下:

      1)基本SQL關(guān)鍵字解析,采用依據(jù)正則表達式直接構(gòu)造關(guān)鍵詞的方法.

      2)SQL中的 Where語句解析.以下適用于不帶like,in等結(jié)構(gòu)的簡單where語句.

      3)SQL語句中的insert的values值域解析.本文采用的構(gòu)造規(guī)則僅適用于標準SQL insert語句:

      4)SQL語句中Set語句解析.舉例SQL結(jié)構(gòu)解析針對帶有to_date類型的SQL語句.

      采用如下的SQL詞法構(gòu)造方法:

      2.2.2 SQL語句解析類的設計

      利用Flex構(gòu)造的SQL語句解析規(guī)則后需要在云同步系統(tǒng)中調(diào)用,還需要設計可重用的C++類庫.以下列舉本文云同步系統(tǒng)中采用的SQL語句解析類的結(jié)構(gòu)說明,其中FlexLexer.h為Flex類庫中的標準頭文件.

      3 數(shù)字校園云同步系統(tǒng)的實現(xiàn)

      系統(tǒng)總體設計由3大模塊構(gòu)成,分別為云源端、云目的端和云控制端.云源端和云目的端以服務的方式運行,云控制端為一個在Windows下運行的32位應用程序.云源端根據(jù)云控制端發(fā)送的要求,操縱地方各局數(shù)據(jù)庫,然后提供系統(tǒng)所需的源數(shù)據(jù).目的端依據(jù)系統(tǒng)在云控制端的設置,在設定的周期內(nèi),抽取云源端的數(shù)據(jù),并進行入庫.云控制端操縱云源端和云目的端運行,并提供圖形控制界面供用戶設置云同步系統(tǒng)運行所需參數(shù).云同步系統(tǒng)各端定義如下:

      1)云控制端:獲取云源端、云目的端數(shù)據(jù)庫的表信息和字段信息,并提供展示界面;提供云源端和云目的端對應數(shù)據(jù)表和字段映射的圖形操作界面;提供ftp信息配置界面和同步時間設置界面,并提供ftp連接測試界面;反饋信息圖形展示界面;將相關(guān)云同步配置信息發(fā)送給云客戶端和云服務端的監(jiān)聽端口.

      2)云源端:捕獲指定監(jiān)聽端口的云控制端表格映射信息、同步文件夾和同步信號;依據(jù)捕獲到的時間信號,調(diào)用LogMiner進行解析入庫,并根據(jù)得到的表格映射信息,將入庫結(jié)果保存為.XML文件中;在云端同步時間到達時,將.XML文件上傳到指定的同步文件夾;周期捕獲云目的端的時間信號.

      3)云目的端:在指定的監(jiān)聽端口捕捉來自云控制端的時間同步信號;在指定的時間同步信號內(nèi)讀取云源端上傳的語法構(gòu)造.XML文件,并依據(jù)語法規(guī)則構(gòu)造SQL語句執(zhí)行入庫.

      3.1 云源端的實現(xiàn)

      云源端運行數(shù)據(jù)存儲過程LOG_DUMP,利用LogMiner對Oracle數(shù)據(jù)庫的Redo日志文件進行解析,并將結(jié)果存入與Redo日志文件同名的表中.云源端程序(Cloud_XS)將讀取的解析結(jié)果存入數(shù)據(jù)庫,并依據(jù)在云控制端配置的數(shù)據(jù)表映射關(guān)系將相關(guān)的SQL語句進行轉(zhuǎn)換,保存為.XML格式的文件,在云交換時間到達時以ftp方式上傳到云目標端.

      云源端數(shù)據(jù)存儲過程主要功能包括SQL語句分析,通過Flex編寫詞法解析器,解析并重構(gòu)符合OTL接口標準的SQL語句[12];創(chuàng)建.XML文件,將構(gòu)造好的SQL語句依據(jù)云控制端的表項映射倒入到一個.XML文件中;訪問Oracle數(shù)據(jù)庫,從云控制端讀取同步參數(shù)(包括握手參數(shù)、時間參數(shù)和回滾參數(shù)等);客戶端功能,向云目標端上傳構(gòu)造好的含有SQL語句的.XML文件.云源端數(shù)據(jù)存儲過程業(yè)務邏輯詳見圖1.

      云源端程序主要功能包括自動歸檔Redo日志和調(diào)用LogMiner解析最新歸檔的Redo日志.云源端的輸入為經(jīng)過LogMiner所解析的Redo日志,表的字段為:SCN,TIMESTAMP,SEG _OWNER,SEG _NAME,ROW_ID,SQL_REDO.表名稱同其對應的Redo日志名稱同名.云源端程序?qū)腞edo日志解析中獲取的結(jié)果,根據(jù)云控制端配置的表映射信息進行轉(zhuǎn)換,將轉(zhuǎn)換結(jié)果以XML文件的形式輸出.云源端程序流程詳見圖2.

      3.2 云目標端的實現(xiàn)

      云目標端主要負責在云交換時間到達時,讀取云源端程序上傳的.XML文件,將提取內(nèi)部保存的SQL語句執(zhí)行入庫.云目標端的主要功能包括創(chuàng)建Cloud_XD數(shù)據(jù)庫,解析.XML文件和執(zhí)行入庫操作.云目標端輸入為Cloud_XS程序上傳的.XML文件.云目標端程序流程詳見圖3.

      3.3 云控制端的實現(xiàn)

      云控制端程序主要負責提供圖形化的云源端與云目標端數(shù)據(jù)表映射關(guān)系,以及增刪改操作界面(由于云源端與云目標端對應表的字段可能不一致,可能在此過程中需要人工確定對應表格映射關(guān)系).

      圖1 云源端數(shù)據(jù)存儲過程Fig.1 Cloud source client data storage process

      云控制端的處理流程包括:通過用戶輸入獲取云目標端數(shù)據(jù)庫的信息后,連接云目標端數(shù)據(jù)庫,讀取Cloud_XD.Source表獲取云源端的數(shù)據(jù)庫表信息.通過Cloud_XD.Source表獲取源數(shù)據(jù)庫的信息可以訪問云源端各個數(shù)據(jù)庫Cloud_XS.Map和Cloud_XS.Field獲取配置完成的數(shù)據(jù)表映射信息.

      云控制端提供操作的數(shù)據(jù)表和字段如下:

      1)云交換時間設置:設置云交換時間后,云控制端需要將Cloud_XS.OM 和Cloud_XD.OM 的Exe_time_tag設置為云系統(tǒng)的同步時間.

      2)云交換立即執(zhí)行的觸發(fā):當用戶觸發(fā)界面上立即同步按鈕后,云控制端需要將Cloud_XS.OM 和Cloud_XD.OM 的 Next_time_tag設置為當前時間.

      3)云源端配置步驟:添加云源數(shù)據(jù)端后,需將相關(guān)信息填入Cloud_XD.Source數(shù)據(jù)庫,和Cloud_XS.OM的 Destination_IP、Destination_USER、Destination_PASSWORD、FTP_USER、FTP_PASSWORD字段.

      4)云控制端的映射信息增刪改:用戶在云控制端進行映射信息的刪改操作時,將結(jié)果寫入Cloud_XS.Map和Cloud_XS.Field,并且將Cloud_XS.OM 表中的對應行ID值進行修改.

      圖2 云源端程序流程Fig.2 Cloud source clien flow

      圖3 云目標端程序流程Fig.3 Cloud target client flow

      5)云系統(tǒng)的日志顯示:通過讀取Cloud_XS.OM和Cloud_XD.OM可以獲取當前云同步系統(tǒng)運行的日志.

      6)云系統(tǒng)的同步控制:通過判斷Cloud_XD.OM的SYS_STATUS字段可以判斷云系統(tǒng)是否正在進行數(shù)據(jù)同步.

      4 數(shù)據(jù)同步系統(tǒng)處理

      本次云交換系統(tǒng)云源端與云目標端程序均采用服務進程的方式設置為系統(tǒng)服務.云控制端程序負責遠程初始化云源端程序的交換時間、交換數(shù)據(jù)的數(shù)據(jù)表映射關(guān)系設置和交換數(shù)據(jù)的有效起始時間等參數(shù).云同步系統(tǒng)的時序圖詳見圖4.

      為了提高云同步系統(tǒng)運行效率和性能,系統(tǒng)中的數(shù)據(jù)同步不是通過傳統(tǒng)的數(shù)據(jù)表復制來實現(xiàn),而是通過在云源端每小時調(diào)用一次Oracle數(shù)據(jù)庫自帶的LogMiner進行解析對應同步時段的在線Redo日志,然后將得到的SQL語句入庫.依據(jù)用戶在云控制端設置,將SQL語句中相關(guān)字段和數(shù)據(jù)進行轉(zhuǎn)換,以.XML文件保存,并在用戶指定云同步時間到達時,將.XML文件上傳至同步文件夾.云目的端程序?qū)?XML文件中的SQL語句存入數(shù)據(jù)庫指定表空間中.云源端再提取Redo日志存放表中事務操作內(nèi)容并執(zhí)行,達到云源端和云目標端的數(shù)據(jù)同步的目的.

      實驗結(jié)果如表1所示,圖中顯示Redo日志文件規(guī)模直接影響到了云交換系統(tǒng)的交換頻率和交換時間長度.在Redo日志文件規(guī)模較小時,交換頻率偏高會影響到服務器日常工作(LogMiner的運行同時會影響數(shù)據(jù)庫效率),但是Redo日志文件規(guī)模設置較大時,又會導致云交換時間過長(例如必須在晚上非工作時間運行).根據(jù)實驗結(jié)果,日志文件設置約為50 MB是比較合理而且頻率和交換時間都處在可以接受的水平.

      5 結(jié) 論

      圖4 云同步系統(tǒng)的時序圖Fig.4 Cloud synchronization system sequence diagram

      表1 數(shù)據(jù)交換系統(tǒng)實驗結(jié)果Tab.1 The test result of exchange system

      在數(shù)字校園中的多重數(shù)據(jù)孤島環(huán)境下要開發(fā)云交換系統(tǒng),我們面對是數(shù)據(jù)庫中增量數(shù)據(jù)如何同步以及數(shù)據(jù)在同步時的效率這兩個主要問題.現(xiàn)高校中由于存在跨地多個校區(qū),這些校區(qū)之間要進行數(shù)據(jù)實時同步時,不能采用在集中環(huán)境下的那種簡單靜態(tài)數(shù)據(jù)備份技術(shù),這種技術(shù)在傳輸時文件過大,并且效率很低.因此以數(shù)據(jù)庫中的增量數(shù)據(jù)同步就成為了唯一可行的方案.在基于Oracle數(shù)據(jù)庫應用系統(tǒng)中,增量數(shù)據(jù)同步轉(zhuǎn)換成解決數(shù)據(jù)庫日志的解析以及增量產(chǎn)生的數(shù)據(jù)在目標計算機快速入庫的問題.利用LogMiner工具來解析Oracle系統(tǒng)的日志是實現(xiàn)分布式云交換系統(tǒng)所要解決前提條件之一.對LogMiner解析出的日志進行SQL語句分析重構(gòu)(針對目標數(shù)據(jù)庫的快速入庫接口重構(gòu))是實現(xiàn)分布式數(shù)據(jù)同步系統(tǒng)要解決的另一個前提.本文實現(xiàn)了數(shù)字校園網(wǎng)數(shù)據(jù)同步系統(tǒng)的技術(shù)問題及系統(tǒng)架構(gòu)問題,并給出了系統(tǒng)實現(xiàn)方案.

      [1]段宗曜,饒水林.信息化建設在高校校園中的實現(xiàn)模式研究[J].計算機科學,2013,40(11A):417-420.

      [2]趙衛(wèi),馮華麗.高校信息化平臺建設中“信息孤島”現(xiàn)象及對策[J].中國科技信息,2014(24):52-53.

      [3]舒暢.高校數(shù)字化校園的壁壘--信息孤島[J].中國教育信息化,2011(5):16-17.

      [4]顏廷良.基于XML消息的安全數(shù)據(jù)交換平臺研究與應用[J].計算機技術(shù)與發(fā)展,2013,23(2):172-176.

      [5]郭向陽.基于數(shù)據(jù)庫復制技術(shù)的云交換平臺研究與實現(xiàn)[J].計算機與現(xiàn)代化,2011(8):157-163.

      [6]張立奎,閆子熙.基于LogMiner的Oracle數(shù)據(jù)庫日志分析[J].計算機與網(wǎng)絡,2013(21):145-147.

      [7]張青鳳,張鳳琴,王磊.多數(shù)據(jù)中心的數(shù)據(jù)同步模型研究與設計[J].微型機與應用,2013(12):60-66.

      [8]趙榮.分布式數(shù)據(jù)庫系統(tǒng)的故障恢復方法[J].科技信息,2013(11):160-161.

      [9]秦森,楊艷.基于Oracle日志分析的數(shù)據(jù)還原操作的設計及實現(xiàn)[J].電腦知識與技術(shù),2007(3):626-628.

      [10]王玉標,饒錫如,何盼.異構(gòu)環(huán)境下數(shù)據(jù)庫增量同步更新機制[J].計算機工程與設計,2011,32(3):948-951.

      [11]楊德勇.遠程數(shù)據(jù)同步的設計與實現(xiàn)[J].信息與電腦,2012(3):112-113.

      [12]孫兆玉,朱鴻宇,黃宇光.Linux環(huán)境中使用Flex、Bison進行SQL語法分析[J].電腦編程技巧與維護,2007(2):38-41.

      猜你喜歡
      孤島日志語句
      一名老黨員的工作日志
      華人時刊(2021年13期)2021-11-27 09:19:02
      不再是孤島
      扶貧日志
      心聲歌刊(2020年4期)2020-09-07 06:37:14
      重點:語句銜接
      沒有人是一座孤島
      精彩語句
      游學日志
      孤島求生記
      互聯(lián)互通破“孤島”
      如何搞定語句銜接題
      語文知識(2014年4期)2014-02-28 21:59:52
      娄烦县| 房山区| 江口县| 中超| 静海县| 乌恰县| 宁国市| 文登市| 天峻县| 佛坪县| 鄂托克前旗| 山阴县| 嘉鱼县| 陕西省| 高邑县| 清河县| 武冈市| 仲巴县| 大同县| 文山县| 本溪市| 贵溪市| 周口市| 洪湖市| 徐闻县| 贺州市| 开平市| 西林县| 衡阳市| 泾川县| 泸水县| 大英县| 驻马店市| 京山县| 周宁县| 密山市| 西和县| 新邵县| 米林县| 澄迈县| 威海市|