資料庫調度
A. 怎麼給資料庫中已經存在的任務添加調度
每個線程之間的業務會有沖突么?盡量保證一個業務流完成之後提交一次事務吧,這樣會降低沖突,不然的話可以使用緩存,注意施放鏈接就行了.一般5個線程左右就夠了.
B. 什麼是ETL調度系統
.1 ETL流程及調度設計(ETL Schele)(PSP)
? ETL調度的目標
快速見效系統要抽取39家分行四個系統的數據進行加工處理,數據從下傳文件到ODS庫,ODS庫到LDM,再計算PI值和匯總PI,整個ETL處理過程需按一定步驟和滿足某些條件進行,某些關鍵的文件如匯率數據、機構表等都會影響整個ETL的處理,因此,快速見效的ETL處理流程將是一個比較復雜的過程。
考慮到將來ETL處理的多樣性和復雜性,引入了Job的概念,將ETL處理過程分為一個一個的Job,Job可能是清洗\載入\轉換,也可能是PI加工。為了對復雜的ETL處理過程更好的調度和監控,專門設計一個ETL調度系統。通過ETL調度系統的開發使用,將清晰、高效地通過Job調度的方式處理快速見效的ETL過程。
? ETL調度的功能范圍
1. ETL調度功能圖示
2. ETL調度功能說明
調度維護
1) 調度系統參數維護,對調度系統的公共參數:期數、進程數、數據日期、本期開始日期和本期結束日期進行設置和修改。
2) 下傳文件信息維護,維護所有區域的下傳文件名稱、文件狀態、文件數據日期和對應區域的歸屬關系。
3) 作業步定義與維護,定義作業對應的實際ETL處理過程,生成作業編號,定義作業類型和作業的驅動關系,作業的運行所需要的條件。
4) 調度異常處理,對調度過程中出現的異常情況進行處理,提供錯誤查找、出錯重跑功能。
日誌管理
1) 調度過程日誌,管理記錄調度中的主要過程和異常信息,如調度開始、調度完成、資料庫操作異常和讀寫文件異常的日誌。
2) Job執行日誌,管理記錄Job執行信息的日誌,提供該日誌的查詢、刪除和執行狀態重置功能。
3) Job詳細事件日誌,管理記錄Job執行中的詳細事件(清洗記錄條數、資料庫具體操作情況)的日誌,提供對日誌的查詢、刪除操作。
作業調度
正常情況下的作業調度,對整個ETL過程進行調度,提供分段提交處理和自動提交處理功能。
可調度的Job類型
1) C程序(清洗),ETL調度提供與C程序的介面,從而可以對C程序進行調度。
2) 用C封裝的SQLLDR(載入),將ORACLE SQLLDR封裝在C程序中進行調度。
3) PROC程序(合並、轉換),對合並和轉換過程,調度提供相應的介面,從而對ORACLE的PROC程序進行調度。
4) 存儲過程(轉換),將存儲過程封裝在PROC程序中進行調度。
5) DataStage(PI加工),調度系統提供了與DataStage的介面,可以對DataStage各個種類的Job進行調度。
? ETL總體流程圖
? 作業步(ETL_Step)的功能類型及數據處理
0. 文件FTP: 將各個分行的源業務系統(NLNS、SBS、NACS)的以預定的文件格式以FTP方式通過中行網路傳輸到QUICK WIN項目系統的ETL伺服器。
1. 文件注冊:0中FTP的源數據文件,經過解壓縮後,必須在QUICK WIN項目系統中注冊,只有經過文件注冊過程後QUICK WIN項目系統才能確認「那些分行的源數據」 已經正確到達,ETL系統就可以相應的處理流程。
2. 數據清洗:從各分行FTP來的源數據文件,可能存在非法數據或冗餘數據或者數據規則標准不統一,而且文件格式上也不能被QUICK WIN項目的ETL過程立即使用,因此必須對數據文件進行數據清洗(刪除非法、冗餘數據、統一數據規則標准、轉換成QUICK WIN項目的ETL過程能「載入」處理的文件格式)。
3. 數據載入:將清洗後的數據(文件格式)通過SQL LOADER載入到ORACLE資料庫相應的資料庫表中。
4. ODS數據合並:將各個分行的相同類型的源業務系統數據合並到ORACLE資料庫中同一張數據表中。
5. LDM數據加工:面向業務生產數據(ODS資料庫表中的數據)根據「QUICK WIN分析模型」將數據轉換、加工成面向分析主題的「分析型數據」。
6. PI加工:根據業務需求、業務規則和分析模型,從LDM數據表中加工出QUICK WIN所需的PI。
7. 報表加工:根據業務需求、業務規則和分析模型,從LDM數據表和PI表中中加工出QUICK WIN所需的報表。
8. ETL調度程序:調度ETL加工各個過程的運行。
9. 監控程序:監控ETL過程的運行狀態(加工進度、加工效率、成功、警告、錯誤等)信息,及時向系統的運行維護人員報告系統運行狀態。
? 作業步(ETL_Step)的流程和依存關系。
1) 清洗類型的Job的運行依賴於相應下傳文件的狀態,必須是在下傳文件檢查及登記後才能進行清洗Job的調度。
2) ODS層載入類型Job的運行依賴於相應的清潔文件是否由清洗程序生成,即相應的清洗Job是否正確運行完成。
3) 從ODS到LDM的數據轉換依賴ODS層的相關數據是否齊備,即相應的載入Job是否正確運行完成。
4) PI加工的進行依賴LDM層數據,即相應的轉換Job是否正確運行完成。
5) 根據數據依賴關系,分區域進行作業調度,各區域之間的ETL處理可以並行處理。
? 作業調度方式
1. ETL調度系統結構圖
2. 調度策略
採取條件驅動的策略來進行Job的調度,Job一滿足驅動條件便開始運行。針對快速見效系統的ETL情況,定義四種類型的驅動條件:
1) 前導Job驅動
ETL過程中各個操作需按一定次序進行,前導Job表示ETL過程中先要進行處理的Job,Job的前導Job可以有多個,前導Job驅動的圖示如下:
2) 下傳文件驅動
當下傳文件未下傳完畢時,下傳文件清洗不能進行,因此,下傳文件通常作為清洗文件的驅動條件,當系統檢測到下傳文件已下傳並正確後,便可進行相應的清洗,驅動Job執行的下傳文件可能有多個,圖示如下:
3) 時間驅動
當到達某個時點時,Job便開始運行,圖示:
4) 上述三種條件綜合驅動
要上述三種情況至少兩種均滿足,Job才能運行。
3. Job的並發設計
每個Job只要滿足了驅動關系後,便開始以後台方式運行。這樣便實現了不同區域和同一區域的Job的最大限度的並行。考慮系統資源的情況,可以事先設定最大並行數。
4. 並發沖突設計
當並行跑的Job都需要共同使用同一資源的時候,會產生資源佔用的沖突,ETL過程中通常的沖突, 用令牌的方式來避免沖突,只有獲得令牌的JOB才能跑,否則等待令牌釋放。
? 定義數據轉換流程中檢查點和核對點
1) 下傳文件,下傳文件與源系統數據進行比較檢查,核對下傳數據准確性。
2) 清潔文件,將清潔文件與下傳文件進行比較檢查,從而可判斷清洗處理過程的正確性。
3) ODS庫表,將ODS庫表中的數據與下傳文件中數據進行比較檢查,從而可判斷載入處理過程的正確性。
4) LDM庫表,將LDM庫表中的數據與ODS庫表中數據進行比較檢查,從而可判斷轉換處理過程的正確性。
5) PI值,將PI值與LDM層相關的庫表進行比較檢查,從而可判斷PI計算處理過程的正確性。
? 日誌信息設計
1) 調度過程日誌。以文件的方式存在,用於記錄Job調度中的主要過程和異常信息,如調度開始、調度完成、資料庫操作異常和讀寫文件異常。
2) Job執行日誌。資料庫表方式存在,給Job的調度提供必要的信息,是Job調度策略計算的依據,調度模塊和Job之間的介面之一。
3) Job詳細事件日誌。資料庫表方式存在,記錄ETL處理過程中的詳細信息,如清洗記錄成功條數、失敗條數或資料庫操作情況(INSERT\UPDATE\DELETE)。
? 給出異常處理設計:所有被拒絕的行、可接受的錯誤數以及合理退出的方式
? 通知設計:重要信息(成功/失敗)的通知
1. 成功退出
1) 分段提交方式,當分段提交的當次任務都正確完成,即Job運行狀態臨時表中登記的作業狀態全部為完成時,退出ETL調度。
2) 自動提交方式,當當期所有的任務都正確完成,即Job運行狀態表中登記的作業狀態全部為完成時,退出ETL調度。
2. 失敗退出
1) 關鍵作業異常,關鍵作業運行異常時,影響剩下的作業不能運行時,則退出ETL調度。
2) 超過ETL時限,當超過預先設定的ETL 時限時,退出ETL調度。
3) 資料庫異常,當不能正常操作資料庫時,退出ETL調度。
4) 操作系統異常,當發生操作系統異常,導致程序不能正常運行,如文件系統異常導致讀寫文件錯時,需要退出ETL調度。
5) 手工退出,需要人為干預ETL調度的時候,能以手工操作的方式退出ETL調度。
? 給出各個階段號說明 給出表格:表6-N ETL_Step編號表(ETL控制參數)
? ETL 調度優先順序別
按Job驅動關系進行Job的調度,前導Job優先於後續Job。
? ETl流程及調度模塊說明
? 模塊概要說明
模塊概要說明(總體層次)
模塊名稱 模塊編號 開發工具/環境 模塊功能說明 備注
作業調度 J01 AIX+Shell+C ETL調度主模塊,負責整個ETL過程的調度處理。 維護員
作業管理 J02 EXECL+BRIO+C 定義作業步對應的實際ETL處理過程,生成作業編號,定義作業類型和作業的驅動條件。 管理員
異常重跑 J03 AIX+Shell+C 當ETL運行出現異常時,提供斷點重跑機制。 維護員
參數管理 J04 Brio EIS 調度系統的公共參數:期數、進程數、數據日期、本期開始日期和本期結束日期進行設置和修改。 管理員
日誌管理 J05 BrioSDK,EIS 包括調度過程日誌、Job執行日誌和Job詳細事件日誌的查詢和刪除。 管理員
模塊概要說明(明細層次)
模塊名稱 模塊編號 模塊類型 開發環境 模塊功能說明 備注
CTLINIT J01_01 作業調度 AIX,PROC 檢查輸入參數和驅動關系,初始化資源令牌狀態/Job運行狀態/下傳文件狀態。
UNCOMPR J01_02 作業調度 AIX,PROC,SHELL 檢測下傳目錄下的壓縮/打包的文件,並將這些文件解壓縮/展開,之後移動到非下傳目錄下。
FILEREG J01_03 作業調度 AIX,PROC 根據下傳文件控製表 檢查各文件頭的控制信息,將檢查結果記錄在下傳文件控製表中。
CHKREGJOB J01_04 作業調度 AIX,PROC 掃描Job運行狀態(或臨時)表看所有(或本次提交需要完成的)Job是否完成,根據Job執行日誌信息登記完成的Job(在Job運行狀態表登記)。
CALREGJOB J01_05 作業調度 AIX,PROC 根據Job運行狀態/下傳文件狀態/ Job驅動關系計算可已運行的Job,並在Job運行狀態表中將這些Job登記為「就緒「狀態。
JOBRUN J01_06 作業調度 AIX,PROC,SHELL 依據當前進程數/資源令牌佔用清況發出調度一個Job運行的命令,並登記Job運行狀態為「正運行「。
CRTJOB J02_01 作業管理 EXECL 生成作業列表和作業對應的驅動條件。
CHKJOB J02_02 作業管理 PROC 檢查作業列表的合法性,包括驅動關系的合理性檢查。
RERUN J03_01 異常重跑 AIX,PROC,SHELL 當ETL運行出現異常時,提供斷點重跑機制。
PARADM J04_01 參數管理 BRIO EIS,SQLPLUS,SHELL 調度系統的公共參數:期數、進程數、數據日期、本期開始日期和本期結束日期進行設置、修改及查詢。
LOGADM J05_01 日誌管理 BRIO EIS,SQLPLUS 包括調度過程日誌、Job執行日誌和Job詳細事件日誌的查詢和刪除。
? ETL流程及調度的模塊設計說明表(設計階段)
見附件《ETL調度詳細設計.doc》
? 給出ETL流程及調度的程序設計說明表(實現階段):參見 「1.15節」
1.2 ETL監控(ETL Monitor) (PSP)
? ETL監控結構設計,圖示說明
? ETL監控主要功能概述
1) ETL調度檢測下傳文件狀態,並登記到下傳文件狀態表中,通過Hyperion Client設計對下傳文件狀態查詢的BQY文檔,發布到Hyperion Performance Suite 8 Server,再通過Http或直接通過ODBC進行BQY查詢來獲取下傳文件狀態,從而實現了文件傳輸監控功能。
2) 當某個區域的某些文件清洗完成時,ETL調度在Job運行狀態表中登記該區域相應清洗Job的狀態(異常或完成);當文件載入、轉換或加工完成時,ETL調度同樣方式在Job運行狀態表中登記相應Job的狀態,通過設計對Job運行狀態查詢的BQY,並發布到Hyperion Performance Suite 8 Server,再通過Http或直接通過ODBC進行BQY查詢來獲取Job的當前狀態,從而實現了載入、轉換和加工的監控功能。
3) 對Job的執行情況(開始時間、結束時間)的監控通過設計查詢Job執行日誌表的BQY文檔來實現,對Job的詳細事件的監控通過設計查詢Job詳細事件日誌表的BQY來實現。
4) 對調度的整體情況的監控,則可直接通過TELNET查看調度過程日誌,便能知道調度的完成情況和異常情況(資料庫錯、參數非法或操作系統錯等)。
? ETL監控模塊說明:
? ETL監控的模塊概要說明
模塊概要說明(明細層次)
模塊名稱 模塊編號 模塊類型 開發環境 模塊功能說明 備注
FILEMON J06_01 ETL監控 BRIO,EIS 監控各個區域的下傳文件傳輸情況和文件狀態。
JOBMON J06_02 ETL監控 BRIO,EIS 對各個區域的清洗、載入、轉換和加工過程的完成情況進行監控。
EVTMON J06_03 ETL監控 BRIO,EIS 對JOB的執行開始時間、結束時間和JOB運行過程中的詳細操作情況進行實時監控。
MAINMON J06_04 ETL監控 BRIO,EIS 對調度的整體情況的監控,包括調度成功完成、異常退出、資料庫錯、參數情況和操作系統出錯進行監控。
C. 資料庫原理 可串列化調度的的問題
T1,T2,T3:X=10,Y=10
T1,T3,T2: X=-10 Y=-30
T2,T1,T3: X=-10 Y=-10
T2,T3,T1: X=-30 Y=-10
T3,T1,T2: X=30 Y=10
T3,T2,T1: X=0 Y=-10
D. 資料庫並發控制問題,這個調度是可串列化的嗎t1讀了t2寫的B,不是不可串列化的嗎
是通過加鎖實現的吧。
E. 調度自動化及遠動原理 什麼是實時資料庫
調度自動化及遠動原理 什麼是實時資料庫
:實時資料庫(RTDB-Real Time DataBase)的一個重要特性就是實時性,包括數據實時性和事務實時性。數據實時性是現場IO數據的更新周期,作為實時資料庫,不能不考慮數據實時性。
F. 如何判斷資料庫的可串列化調度
利用畫優先圖的方法
對於每個資料庫元素,如果兩個事務的沖突操作同時操作一版個元素,則有一條有向邊,如權果最後有環,則不是可串列化的
以第一個為例
w1(A)w2(A) T1->T2
r1(B)w2(B) T1->T2
所以是可穿行化的
S2:
A: t1(A)w3(A) T1->T3 w3(A)w1(A) T3->T1
B: r2(B)w1(B) T2->T1 w1(B) r3(B) T1->T3
C:w1(C) w2(C) T1->T2
裡面有環,所以不可串列化
G. sql怎麼建個調度,每天晚上定時清除表內容,
--SQLServer:
--1.打開【SQLServerManagementStudio】,在【對象資源管理器】列表中選擇【SQLServer代理】;
--2.滑鼠右擊【SQLServer代理】,選擇【啟動(S)】,如已啟動,可以省略此步驟;
--3.展開【SQLServer代理】列表,右擊【作業】-->【新建作業】;
--3.1在【常規】選項卡中:
--輸入作業名稱,如"MyJob";
--3.2在【步驟】選項卡中:
--3.2.1點擊【新建】,輸入【步驟名稱】,如「步驟1」,類型默認T-SQL腳本,也可以選擇SSIS包等;
--3.2.2在【資料庫】一欄選擇要作業處理的資料庫,在【命令】的右邊空白編輯欄輸入要執行的SQL代碼,
EXECp_Name--如:執行一個P_Name的存儲過程
--也可以點擊命令下面的【打開】,打開.sql腳本;
--3.2.3輸入運行腳本後,建議點擊【分析】,確保腳本語法正確,然後點擊下面的【確定】按鈕;
--3.3在【計劃】選項卡中:
--3.3.1點擊【新建】,輸入【計劃名稱】,如「計劃1」,計劃類型默認是」重復執行」,也可以選擇執行一次等;
--3.3.2在【頻率】-->【執行】處選擇「每天」、「每周」或「每月」,以「每天」為例,間隔時間輸入間隔幾天執行一次,
--下面還可以選擇每天一次性執行或間隔一定的時間重復執行
--3.3.3在【持續時間】中選擇計劃開始執行的【起始日期】和【截止日期】,然後點擊【確定】按鈕;
--注意要將服務設置為自動啟動,否則在重啟伺服器後作業就不運行了。
--啟動代理服務的方法:
--開始-->運行-->輸入services.msc-->找到【SQLServer代理】的服務並雙擊-->【啟動類型】選擇「自動」-->【確定】
--至此,定時作業已創建完畢。
H. 資料庫原理及應用什麼是可串化調度
T1,T2,T3:X=10,Y=10 T1,T3,T2: X=-10 Y=-30 T2,T1,T3: X=-10 Y=-10 T2,T3,T1: X=-30 Y=-10 T3,T1,T2: X=30 Y=10 T3,T2,T1: X=0 Y=-10
I. 如何判斷資料庫的可串列化調度
可串列化調度:對於事務集(t<1>,t<2>,…,t),如果一個並發調度的結果與一個串列調度等價,則稱此調專度是是可串列化調屬度。
不可串列化調度:對於某事務集的一個並發調度結果如果與任一串列調度均不等價,則該調度是不可串列化調度。
J. 資料庫 這個調度是否避免讀臟數據不可重復度和丟失修改
常見並發一致性問題包括:丟失的修改、不可重復讀、讀臟數據、幻影讀(幻影讀在一些資料中往往與不可重復讀歸為一類)。
丟失修改
下面先來看一個例子,說明並發操作帶來的數據的不一致性問題。
考慮飛機訂票系統中的一個活動序列:
甲售票點(甲事務)讀出某航班的機票余額A,設A=16.
乙售票點(乙事務)讀出同一航班的機票余額A,也為16.
甲售票點賣出一張機票,修改余額A←A-1.所以A為15,把A寫回資料庫.
乙售票點也賣出一張機票,修改余額A←A-1.所以A為15,把A寫回資料庫.
結果明明賣出兩張機票,資料庫中機票余額只減少1。
歸納起來就是:兩個事務T1和T2讀入同一數據並修改,T2提交的結果破壞了T1提交的結果,導致T1的修改被丟失。前文(2.1.4數據刪除與更新)中提到的問題及解決辦法往往是針對此類並發問題的。但仍然有幾類問題通過上面的方法解決不了,那就是:
不可重復讀
不可重復讀是指事務T1讀取數據後,事務T2執行更新操作,使T1無法再現前一次讀取結果。具體地講,不可重復讀包括三種情況:
事務T1讀取某一數據後,事務T2對其做了修改,當事務1再次讀該數據時,得到與前一次不同的值。例如,T1讀取B=100進行運算,T2讀取同一數據B,對其進行修改後將B=200寫回資料庫。T1為了對讀取值校對重讀B,B已為200,與第一次讀取值不一致。