第四章 自動化企業資料一致性整合機制
4.3 資料庫偵測與監控
個訊息傳送之機制,其任務為了確保訊息能被確實傳送到目的地。而轉換層目的 則是將來自資料庫之訊息轉換成訊息物件格式,以利整合機制傳達訊息。對映層 主要則是提供分析同步化對象之能力,以確保能正確的將訊息傳送到正確之同步 對象。最後更新層則是提供了在接收到同步訊息後,有更新資料庫資料之能力。
在最底層之傳輸層支援上一層提供訊息轉換能力之轉換層,轉換層亦支援上一層 提供分析同步化對象能力之對映層,而對映層也支援最上一層有著資料更新能力 之更新層,如此最底層支援到最上層,確保了同步化流程之資料一致性服務。
資料運算指令包含:SELECT、INSERT、UPDATE 及 DELETE,哪些資料運算指 令會影響到資料一致性,其說明如表4.5 所示。
表4.5 資料運算指令意義說明
指令 意義 說明 資料一致性
SELECT 查詢資料 選取所指定的資料,基本上是不會異
動資料庫資料 無影響
INSERT 新增資料 增加一或多筆新資料,可能與其它存
在的相同資料有著不同之欄位資料 有影響 UPDATE 更新資料 更新存在的資料,會造成相同的資料
在不同的資料庫 有影響
DELETE 刪除資料 將一或多筆資料刪除,其它在不同的
資料庫之相同的資料不會受到影響 無影響 本研究根據上述需求,只有在資料運算指令為INSERT 和 UPDATE 時才會出 現資料不一致性情況,因此我們在分析交易記錄檔時,剖析對象只針對INSERT 和UPDATE 這兩個指令。至於交易記錄檔之格式,會因不同的資料庫系統的需求 而不同,但會有個大原則記錄某些特定的訊息,如產生每筆交易記錄之時間和有 關資料庫異動指令之,以MySQL 資料庫而言,其交易記錄檔中就記錄著交易記 錄時間(Time)、交易記錄編號(Id)、資料庫系統指令(Command)和交易記錄描述 (Argument),如圖 4.2 所示。
mysqld, Version: 5.0.4-beta-log. started with:
Tcp port: 3306 Unix socket: MySQL
Time Id Command Argument 050604 21:49:18 1 Connect root@localhost on
050604 21:49:23 1 Query SELECT DATABASE() 1 Init DB test
050604 21:56:04 1 Query insert into test(id,name,address,phoneNo) value(0001,'test','test','test')
050604 21:56:19 1 Query select * from test 050604 21:57:52 2 Connect root@localhost on
2 Query SET SQL_SELECT_LIMIT=1000 2 Query SHOW DATABASES
:
圖4.2 MySql 資料庫之 transaction log 範例圖
INSERT 和 UPDATE 兩個指令內容裡,我們需要取出那些資料,首先我們就 要瞭解兩個指令的語法,如表4.6 所示。在 INSERT 和 UPDATE 指令中,會指定 資料表名稱、欄位名稱和相對映的欄位值,我們就可以根據這些資訊轉換成物件 訊息傳送給訊息仲介代理人。
表4.6 運算指令語法說明
指令 語法
INSERT
INSERT INTO
資料表名稱 ( 欄位名稱#1 , 欄位名稱#2, ...,欄位名稱#n ) VALUES ( 欄位值#1, 欄位值#2, ……欄位值#n )
UPDATE
UPDATE 資料表名稱
SET 欄位名稱#1 = 欄位值#1...,欄位名稱#n = 欄位值#n , [Where 條件]
資料整合系統便可透過分析交易記錄檔便可得知資料庫是否更新異動,但在 分析UPDATE 指令時,也要可能會遇到為資料整合系統所下的更新記錄,所以在 發現UPDATE 指令就要判斷是否為整合系統本身所下之更新記錄。而在每次分析 完時記錄本次最後更新時間,下次再分析時便可得知上次偵測的時間點,從上次 結束的時間點繼續往後找出新的異動交易記錄,其分析流程圖如圖4.3 示所。
Start
圖4.3 分析交易記錄檔流程圖
Get each field, value and conditional Get each
field, value
Operator
?
Update or Insert?
End
Insert
Update Have a Yes
data?
Other
Yes
No
Update for Agent?
No Yes fetch log
4.3.2 資料庫異動週期更新
資料整合機制之事件就是來自於資料庫之異動,為了要知道資料庫何時會異 動,就需要透過一些方法來進行偵測,但資料異動頻率並不完全相同,為了更能 精確掌控資料庫異動,本研究利用資料探勘理論(Data Mining),藉由歷史資料中 多次偵測發現異動之週期,分析出下次異動頻率,進而影響原本監控頻率,以期 望每次偵測能以最適當頻率監控資料庫。
本研究藉由資料探勘理論,由歷史資料中多次偵測異動之週期,設定出每個 資料庫異動更新週期樣本(Pattern)。由歷史異動週期資料定義出前均標、平均點、
後均標,而前均標代表前四分之一之平均更新週期;平均點代表所有平均更新 週;後均標代表後四分之一平均更新週期,公式定義如圖4.4 所示。
前均標 = Σ 前 1/4 之更新間隔/ 前 1/4 更新間隔個數 後均標 = Σ 後 1/4 之更新間隔/ 後 1/4 更新間隔個數 平均點= Σ 所有更新間隔/ 所有更新次數
圖4.4 監控頻率週期公式
接下來我們舉一例說明如何訂定出後均標、平均點、前均標三區段:假設歷 史資料中有12 筆發現異動更新之間隔時間(週期),經由小到大排序後,數值越小 代表更新週期越短,數值越大代表更新週期越長。
例:異動更新歷史資料中共有12 筆資料,而原始異動更新週期數值分別是:
10 36 5 24 15 45 22 9 26 18 33 39 再來將原始異動更新週期數值排序後分別為:
5 9 10 15 18 22 24 26 33 36 39 45
而由以上排序後的數值可以計算出後均標、平均點、前均標之數值,分述如 下:
後均標 Î (後 1/4 異動更新週期數值總和) / (後 1/4 總個數)
5 9 10 Î ( 5 + 9 + 10 ) / 3 = 8
平均點 Î (所有異動更新週期數值總和) / (總個數)
( 5 + 9 + 10 + 15 +18 + 22 + 24 + 26 + 33 + 36 + 39 + 45 ) / 12 = 23.5 前均標 Î (前 1/4 異動更新週期數值總和) / (前 1/4 總個數)
36 39 45 Î ( 36 +3 9 + 45 ) / 3 = 40
依上述例子,分別計算得到後均標、平均點和前均標,各是8、23.5、40,
所以該資訊項目的樣本週期,可訂出如圖4.5 所示,從左到最右共有後均標、平 均點、前均標。
8 23.5 40
後均標(高頻率異動) 平均點(一般) 前均標(低頻率異動)
圖4.5 更新週期範圍圖
由上述提出之資訊週期定義公式,我們可對任一資料庫異動更新訂定出週期 樣本範圍,同一資料庫異動更新的間隔有可能不同,不過大致上有一定之範圍,
例企業中人事資料庫資料更新頻率較於緩慢,訂定出之週期範圍可能是100~120 單位之間;而負責記錄訂單之交易資料庫更新頻率較頻繁,週期範圍可能是10~15 單位之間。
在本研究中,我們將後均標當作是較快更新之平均值,平均點當作是一般之 平均值,前均標就當成較慢之平均值。隨著每次監控後所得到之後均標、平均點 和前均標會慢慢的更準確預測出這三個平均值。至於該取哪一個當作監控之頻 率,基本上整合系統初始分析出交易記錄之監控頻率是以平均點為主,而企業每 天之資料庫異動會隨著時間有不同之異動頻率,如果在企業上班時間,資料庫之 交易量就會較多,下班時間資料庫交易量就會較少,所以我們就設定在資料庫異 動之高頻率異動時取後均標當作監控頻率,而高頻率異動要轉到低頻率異動或是 低頻率異動要轉高頻率異動就取平均點,低頻率異動時就採取前均標當作是監控 頻率。