国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于物理隔離技術(shù)的觸發(fā)式數(shù)據(jù)庫同步方案

2010-07-03 07:05:06祝永晉
電力工程技術(shù) 2010年1期
關(guān)鍵詞:數(shù)據(jù)表日志增量

尹 飛,熊 政,祝永晉

(江蘇方天電力技術(shù)有限公司,江蘇 南京 211102)

江蘇電網(wǎng)電能量計量系統(tǒng)是江蘇省電力公司為加強內(nèi)部管理和輸電網(wǎng)內(nèi)部成本核算,實現(xiàn)集約化經(jīng)營的需要,并為電力市場的進一步發(fā)展提供技術(shù)與數(shù)據(jù)儲備而建。該系統(tǒng)主要用于完成下網(wǎng)側(cè)計量關(guān)口點的電能量采集、處理,系統(tǒng)的采集全部在II區(qū)調(diào)度數(shù)據(jù)網(wǎng),而在此基礎上做的應用基本都在III/IV區(qū)甚至要面向Internet,因此數(shù)據(jù)庫的同步是必須的環(huán)節(jié)。電能量采集涉及的電能表數(shù)量多、采集周期短,數(shù)據(jù)容量較大,不適宜采用全量同步的方式,因此需要研究增量式的數(shù)據(jù)抽取和數(shù)據(jù)裝載。

1 數(shù)據(jù)增量更新方法比較

為了有效捕捉增量數(shù)據(jù)變化,對已有數(shù)據(jù)的掃描是必須面對的問題[1]。目前有5種技術(shù)可以達到數(shù)據(jù)增量更新的要求,如圖1所示。

方法1是掃描已經(jīng)打上時間戳的數(shù)據(jù)。當一個應用對記錄的最近一次修改打上時間戳時,同步程序掃描就能夠很有效地進行。

圖1 幾種數(shù)據(jù)增量更新方法

方法2是掃描增量文件。增量文件僅記錄應用中所發(fā)生的改變,有了增量文件,掃描的過程就會高效。增量文件的生成可以由改造應用來完成,但所帶來的問題是增加了數(shù)據(jù)庫容量,且不方便人工干預。

方法3是掃描日志文件或?qū)徲嬑募?。利用日志文件的一個問題就是它的內(nèi)部格式是針對系統(tǒng)用途構(gòu)建的,必須使用某種技術(shù)手段作為日志文件內(nèi)容輸出的接口,因而使用完全依賴于專門的數(shù)據(jù)庫廠商,依賴性太大,不靈活。

方法4就是修改所有應用程序的數(shù)據(jù)更新代碼,統(tǒng)一生成增量數(shù)據(jù)拷貝。但是,這種方法通常行不通,主要是因為基于數(shù)據(jù)的應用太多,要實現(xiàn)此方法必須修改所有程序。

方法5是將“前”,“后”兩個映像文件進行比較。使用此方法需在第1次抽取時就對數(shù)據(jù)庫進行快照(Snapshot)。進行另外一個抽取時,就進行另外一個快照。再將兩個快照逐次比較來確定數(shù)據(jù)的修改。

根據(jù)電能量計量系統(tǒng)數(shù)據(jù)庫的現(xiàn)狀,結(jié)合了第1和第2這2種方法,制定了增量數(shù)據(jù)識別方案。

2 方案概述

2.1 總體思路

在全量數(shù)據(jù)源上打時間戳,在數(shù)據(jù)插入、更新時寫入時間戳,在刪除數(shù)據(jù)時記錄下該條記錄的刪除時間戳、表名、主鍵,根據(jù)系統(tǒng)的配置定期掃描表內(nèi)時間戳和刪除記錄時間戳,判斷時間順序優(yōu)化生成增量數(shù)據(jù),生成數(shù)據(jù)包,在目標數(shù)據(jù)處匹配/裝載。由于基于結(jié)果的同步方式,數(shù)據(jù)裝載時的順序可能不滿足源數(shù)據(jù)庫數(shù)據(jù)表之間的約束條件,在目標數(shù)據(jù)庫上應當關(guān)閉數(shù)據(jù)表之間的約束[2]。程序框架如圖2所示。

圖2 程序框架

2.2 基本原則

不影響源數(shù)據(jù)安全,盡可能少影響源數(shù)據(jù)庫性能;數(shù)據(jù)同步過程可以控制,同步時間粒度由用戶自行設置,同步進程可以監(jiān)控;要同步的數(shù)據(jù)表可配置,同步時間粒度可單獨設置;支持物理隔離裝置和網(wǎng)絡兩種方式同步,支持向多個目標數(shù)據(jù)庫同步;支持監(jiān)視新建的數(shù)據(jù)表,自動在目標數(shù)據(jù)庫上新建新表,默認同步新表。同步程序分為服務端程序和客戶端程序兩個部分,服務端程序負責增量數(shù)據(jù)規(guī)則設置、自動創(chuàng)建觸發(fā)器、自動添加時戳字段、定期自動抽取數(shù)據(jù)、優(yōu)化抽取的數(shù)據(jù)、生成同步數(shù)據(jù)包,客戶端程序負責定期獲取同步數(shù)據(jù)包、解析同步數(shù)據(jù)包、匹配/裝載同步數(shù)據(jù)。程序數(shù)據(jù)流程見圖3。

圖3 程序數(shù)據(jù)流程

3 方案介紹

3.1 現(xiàn)有數(shù)據(jù)庫改動

為了能在現(xiàn)有數(shù)據(jù)庫上捕獲數(shù)據(jù)改動,知道數(shù)據(jù)更新時間,需對現(xiàn)有的數(shù)據(jù)庫進行改動,增加對應的域及觸發(fā)器。各種改動情況的說明如表1所示。

表1 數(shù)據(jù)庫改動情況

(1)更新管理表:表中記錄數(shù)據(jù)表的Schema、名稱、是否需同步、同步時間粒度、最后同步時間,配合定期掃描數(shù)據(jù)庫中的新建表,可自動同步建新表到目標數(shù)據(jù)庫。

(2)刪除記錄表:因為不是基于日志方式,所以必須記錄下被刪除的記錄,相對于日志方式的優(yōu)勢在于無需記錄下該條記錄的所有信息,只要記錄下主鍵信息。我們仔細研究了電能量計量系統(tǒng)中所有數(shù)據(jù)表的結(jié)構(gòu),只有極個別表沒有主鍵,因此只需對一兩張表進行改動。此表將根據(jù)系統(tǒng)的配置要求僅保留一段時間以免數(shù)據(jù)量大而影響性能。

(3)時間戳字段:為了能提取出增量,時間戳是必須的,配合刪除記錄表就可以抽取出完整的增量數(shù)據(jù),同時也可以實現(xiàn)人工抽取增量。

3.2 增量數(shù)據(jù)抽取

針對電能量計量系統(tǒng)的DB2數(shù)據(jù)庫的增量數(shù)據(jù)抽取可以采用2種方法:DB2提供的Export方法和語句生成法[3]。

(1)Export方法:適用于增量數(shù)據(jù)非常大,對同步速度要求非常高的情況,將增量的數(shù)據(jù)用DB2的CLI指令Export導出到文件,再將文件中的數(shù)據(jù)通過Import命令導入到目標數(shù)據(jù)庫中,從而完成數(shù)據(jù)從數(shù)據(jù)源到目標庫的同步,一旦有數(shù)據(jù)插入失敗,后面的數(shù)據(jù)將無法繼續(xù)。

(2)語句生成法:此方法是將增量數(shù)據(jù)逐條生成語句,并對其中具有相關(guān)性的進行優(yōu)化合并,生成一個Command List,在目標數(shù)據(jù)庫上,分組采用事務的方式提交,對于執(zhí)行失敗的語句將記錄在日志中,后面的語句繼續(xù)執(zhí)行。

對比2種方法,其中Export方法對數(shù)據(jù)庫的結(jié)合較緊,性能較好,但不具有通用性,同時程序可控性較差,因此采用語句生成法,便于對數(shù)據(jù)同步的全過程控制。

3.3 同步數(shù)據(jù)包

考慮到同步可能面對隔離裝置和網(wǎng)絡兩種情況,統(tǒng)一采用數(shù)據(jù)包文件的方式來同步數(shù)據(jù)。同步數(shù)據(jù)包中主要包括生成的Command List和大值字段(LOB)文件。CommandList包括2種格式,一種是標準的SQL語句,客戶端拿到后直接執(zhí)行即可,一種是約定格式的裝載大值字段的語句,該語句需要客戶端程序進行解析后執(zhí)行。為了提高執(zhí)行效率,建議兩種格式的語句分開以指定的文件名單獨存放。

3.4 數(shù)據(jù)裝載

客戶端程序拿到數(shù)據(jù)包之后,需對指定文件名的Command List進行解析,順序是先執(zhí)行純SQL的List,再執(zhí)行加載大值字段的List。在執(zhí)行過程中出現(xiàn)錯誤的語句記錄在日志中,在整個過程結(jié)束后統(tǒng)一在監(jiān)控界面顯示,可重試裝載,并可根據(jù)用戶配置自動重試及重試失敗后發(fā)送相關(guān)反饋至服務端。

4 方案特點

(1)基于結(jié)果的增量抽取,無需對原有的應用程序做改動,沒有基于過程同步時的順序性,減少了不同數(shù)據(jù)表之間的干擾。

(2)由于各個數(shù)據(jù)表之間同步的相對獨立性,可以對要同步表進行個性化配置,設置是否同步及同步的時間粒度。

(3)采用同步數(shù)據(jù)包來傳遞同步數(shù)據(jù),兼容了物理隔離裝置及網(wǎng)絡方式,適用范圍更廣。

(4)采用語句生成法同步數(shù)據(jù),具有較強的可控性,同時也具有較強的通用性。

5 結(jié)束語

基于結(jié)果的數(shù)據(jù)庫增量同步,抓住了數(shù)據(jù)變動的源頭,考慮了電能量計量系統(tǒng)應用現(xiàn)狀,提高了抽取的準確性、數(shù)據(jù)裝載的效率,同時提供了健壯的異常處理能力,并且具有很強的靈活性和適用性。當然數(shù)據(jù)裝載的效率還需要進一步提高以便滿足數(shù)據(jù)量日益增加的需要。

[1]史晶波.在DB2中提取增量數(shù)據(jù)的一種方法[J].計算機與數(shù)字工程,2004,32(6):15-16.

[2]薩師煊.數(shù)據(jù)庫系統(tǒng)概論(第3版)[M].北京:高等教育出版社,2002.

[3]李志偉.DB2基礎教程[M].北京:清華大學出版社,2003.

猜你喜歡
數(shù)據(jù)表日志增量
提質(zhì)和增量之間的“辯證”
當代陜西(2022年6期)2022-04-19 12:12:22
一名老黨員的工作日志
華人時刊(2021年13期)2021-11-27 09:19:02
扶貧日志
心聲歌刊(2020年4期)2020-09-07 06:37:14
湖北省新冠肺炎疫情數(shù)據(jù)表
黨員生活(2020年2期)2020-04-17 09:56:30
“價增量減”型應用題點撥
基于列控工程數(shù)據(jù)表建立線路拓撲關(guān)系的研究
游學日志
基于均衡增量近鄰查詢的位置隱私保護方法
電信科學(2016年9期)2016-06-15 20:27:25
德州儀器(TI)發(fā)布了一對32位增量-累加模數(shù)轉(zhuǎn)換器(ADC):ADS1262和ADS126
圖表
弋阳县| 方正县| 岳阳市| 黄梅县| 塔河县| 萨迦县| 明溪县| 宾川县| 蒙城县| 松桃| 苏尼特右旗| 北辰区| 韶山市| 泗水县| 和平县| 福贡县| 宁蒗| 维西| 中江县| 潜山县| 右玉县| 台东市| 历史| 兴义市| 永嘉县| 澄城县| 什邡市| 上虞市| 泾源县| 都江堰市| 浏阳市| 天峻县| 廉江市| 保亭| 牙克石市| 耒阳市| 遵义市| 金沙县| 合水县| 花莲市| 南华县|