范霖君
【摘要】 隨著信息時代的到來,數據集成技術發揮著越來越重要的作用。一般情況下,數據集成系統的組成部分包括監視智能代理與集成器兩個方面,其中監視智能代理最為重要的作用就是對信息源的數據變化進行有效監測。監測方法多種多樣,本文針對基于SQL Server數據庫日志的信息源監測方法進行了研究,指出了通過對SQL Server數據庫日志的分析與研究,實現對數據庫的更新檢測。
【關鍵詞】 SQL Server數據庫 事務日志 信息源監測
隨著互聯網技術的不斷發展與普及,信息在數量、分布方面都快速增長,在存儲格式方面也呈現出越來越大的差異性。如何在浩淼復雜的信息中快速獲取所需信息成為了研究的重點問題。
當前,Internet中主要采用客戶主動查詢與訪問信息源的方式對信息進行獲取,這就導致信息源在整個過程中處于被動地位,一方面給客戶造成過重的負擔,另一方面給異質信息源數據的集成帶來了困難。數據集成技術的出現很好的解決了上述問題。
一、信息源監視代理機制及更新檢測方法
1.1信息源監視代理機制
信息源監視代理器的系統結構中包含了非常多的功能模塊,其中最為關鍵的功能之一就是對監測目標的更新進行檢測。在這些功能模塊中,計時器的主要作用是對按照周期進行報送的監測目標的周期進行檢測,如果周期到來則向事件處理模塊發送報告;通信終端的主要作用是實現與集成器之間的雙向通信,一方面接收集成器提交的命令信息,另一方面向集成器發送增量文件;事件檢測器的主要作用是通過對日志進行分析,對其事件進行檢測,并將檢測結果向事件處理模塊發送信息。
1.2基于日志的數據源更新檢測方法
與其他的檢查分析方法相比,日志分析方法在理論方面具有較高的效率。一般情況下,在監控周期中對基表變化進行反映的日志僅僅包含少量的數據,在對這些數據進行有效的分析之后就能夠獲取所需的增量。從總體上來講,基于日志分析的檢測分析方法主要工作包括以下兩個方面:
第一,通過日志監視器對數據源日記進行周期性的分析,將分析所得到的結果提交到日記分析流中。一般情況下,日志分析流與基表之間是相互對應的,在日志分析流中記錄著其對應基表的元組變化及分析結果。
第二,按照時段對日志分析流進行截取之后得到日記分析對象,在對其完成分析之后將結果輸出到增量文件中。這兩個方面的工作是并發執行的,在運行的過程中保持著相互獨立的狀態,通過日志分析流而產生相互之間的作用。
二、SQL Server數據庫日志概述
2.1 SQL Server數據庫日志的架構
在Microsoft SQL Server 數據庫中應該至少包含數據文件及事務日志文件各一個,且兩者不會在同一個文件中出現。事務日志的主要作用是對數據庫中的修改及對應的事務進行記錄。事務日志對事務及修改進行記錄的作用主要包括:對個別事務進行恢復、對未完成的事務進行啟動恢復、將數據庫還原到故障點。
事務日志的特點為:第一,事務日志實際上是文件,在對其管理的過程中能夠更加方便可靠;第二,日志記錄與頁的格式可以與數據頁的格式不同;第三,事務日志能夠在幾個文件中實現,還能夠進行自動增長。
2.2事務日志的讀取
SQL Server數據庫中并沒有指出非常標準的SQL命令,因此在對事務日志信息讀取的過程中存在一定的復雜性。即使在SQL Server數據庫中已經配備了系統表,但是在對事務日志信息進行讀取的過程中依舊非常困難。然而,DBCC LOG命令屬于SQL Server數據庫的日志讀取接口,對于SQL Server無文檔的DBCC LOG命令而言,其提供了一種非常有效的事務日志讀取手段,能夠對內存中的各種活動日志記錄進行讀取。
三、SQL Server數據庫日志更新檢測方法
3.1相關技術分析
3.1.1 JAVA
JAVA是一門跨平臺的面向對象編程語言,其主要的特點包括以下幾個方面:
第一,JAVA能夠在不同的操作系統平臺中進行運行,其數據類型與計算機操作系統不存在聯系;
第二,JAVA是面向對象的,通過對數據與方法的封裝在類而具備了簡便性;
第三,JAVA與其他編程語言相比更加安全與可靠。
3.1.2 JDBC
JDBC(Java Database Connectivity)是一種用于執行SQL語句的JAVA API,其建立的基礎為X/Open SQL Call Level Interface,與數據庫管理系統是相互獨立的,能夠對大多數的關系數據庫進行訪問。JDBC的結構主要包括兩個層:第一層為JDBC API,主要的作用是實現應用程序與JDBC管理器之間的連接;第二層為JDBC Driver API,主要的作用是實現驅動器與JDBC管理器之間的連接。
3.2 SQL Server數據庫日志分析的類
第一,SQL ServerConnector類。其主要功能是依據數據庫類型與連接參數對JDBC連接驅動器進行調用,從而實現JDBC與數據庫之間的連接。
第二,SQL ServerUtil類。其主要功能是實現各種輔助性的工作。
第三,SQL ServerLogRead類,其主要功能是對日志進行讀取。
第四,TypesOfDataAnal類,其主要功能是對不同類型的行數據進行分析工作。
第五,DeleteAnalyser類,其主要功能是對執行刪除操作的日志進行記錄與分析工作。
第六,UpdateAnalyser類,其主要功能是對執行修改操作的日志進行記錄與分析工作。
第七,SQL ServerLogAnalyse類,其主要功能是依據日志的類型對分析器進行調用。
3.3更新檢測模塊結構
更新檢測模塊的基礎為日志讀取與日志分析抽象類,其主要的內容包括對讀取前的初始化操作進行聲明,同時對日志記錄進行讀取及釋放內存。日志記錄的讀取方法主要包括兩種,一種方法指的是按照上層ECA模塊指定的起始LSN進行讀取,另一種方法指的是按照上次讀取的日志記錄進行讀取。在更新檢測模塊的主類中,主要是通過數據庫具體信息數組與運行信息類對象實現初始化工作,創建日志讀取線程LogReadThread和日志分析主線程LogAnalyseMainThread。
四、總結
與Oracle等數據庫相比,SQL Server數據庫所具有的功能與接口并不十分完備,其事務日志更新檢測方法在實現的過程中具有一定的復雜程度。本文對基于SQL Server數據庫日志的信息源監測方法進行了研究,通過對事務日志的讀取與分析實現了對SQL Server數據庫更新變化的監測,從理論上和實踐上對整個流程進行了相對完整的計劃安排,形成了一個宏觀上的框架。
參 考 文 獻
[1]余明輝,胡耀民. 基于SQL Server2008決策支持系統模型的研究和應用[J]. 微計算機信息,2010,26(2-3):178-180+192.
[2]張克友. 基于SQL Server財務數據庫安全技術的探討[J]. 信陽師范學院學報(自然科學版),2008,21(4):587-590.
[3]胡家漢,李景峰. 對SQL Server數據庫的安全和管理策略探討[J]. 計算機光盤軟件與應用,2012,(2):101-102.
[4]胡登衛. 高校實驗室信息化管理系統SQL Server數據庫安全策略研究與實施[J]. 商丘師范學院學報,2009,25(3):96-99+106.
[5]吳可嘉,姜莉莉,劉昌祺. Delphi下利用ADO技術實現對MS SQL Server數據庫存取[J]. 西北輕工業學院學報,2002,20(1):75-78.