浓毛老太交欧美老妇热爱乱,蜜臀性色av免费,妺妺窝人体色www看美女,久久久久久久久久久大尺度免费视频,麻豆人妻无码性色av专区

位置:51電子網(wǎng) » 技術(shù)資料 » EDA/PLD

數(shù)據(jù)庫(kù)觸發(fā)器機(jī)制的設(shè)計(jì)與實(shí)現(xiàn)

發(fā)布時(shí)間:2007/4/23 0:00:00 訪問(wèn)次數(shù):850

數(shù)據(jù)庫(kù)管理系統(tǒng)作為信息系統(tǒng)的核心部件,在信息化時(shí)代所充當(dāng)?shù)慕巧瞧渌魏诬浖荒芴娲。?dāng)前數(shù)據(jù)庫(kù)應(yīng)用的一個(gè)普遍要求是數(shù)據(jù)庫(kù)管理系統(tǒng)能夠在一些數(shù)據(jù)庫(kù)相關(guān)事件發(fā)生時(shí)觸發(fā)預(yù)先定義的操作,實(shí)現(xiàn)信息管理的自動(dòng)化,因此引進(jìn)了觸發(fā)器機(jī)制。觸發(fā)器可以增強(qiáng)引用完整性,加強(qiáng)復(fù)雜業(yè)務(wù)的規(guī)則,或者監(jiān)控?cái)?shù)據(jù)庫(kù)的變動(dòng),并執(zhí)行一定的數(shù)據(jù)操作! 

觸發(fā)器機(jī)制實(shí)現(xiàn)主要涉及觸發(fā)事件的檢測(cè)以及觸發(fā)條件的判決等關(guān)鍵技術(shù)問(wèn)題,以及對(duì)觸發(fā)器的編譯存儲(chǔ)和調(diào)用執(zhí)行等具體操作! 

本文以國(guó)產(chǎn)數(shù)據(jù)庫(kù)管理系統(tǒng)GKD-Base為原型,在兼容Oracle規(guī)范的PL/SQL引擎基礎(chǔ)上,提出一套解決方案,對(duì)觸發(fā)器的關(guān)鍵技術(shù)問(wèn)題進(jìn)行了探討,并設(shè)計(jì)實(shí)現(xiàn)了數(shù)據(jù)庫(kù)的觸發(fā)器機(jī)制,擴(kuò)展了數(shù)據(jù)庫(kù)管理系統(tǒng)GKD-Base的功能! 

1GKD-BasePL/SQL引擎

GKD-BASE數(shù)據(jù)庫(kù)是一個(gè)具有自主知識(shí)產(chǎn)權(quán)的數(shù)據(jù)庫(kù)管理系統(tǒng),具有兼容SQL89標(biāo)準(zhǔn)的SQL引擎,能夠?yàn)橛脩籼峁┮粋(gè)統(tǒng)一、有效的數(shù)據(jù)庫(kù)訪問(wèn)接口(XAPI),實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的各種操作。為了融合SQL語(yǔ)言強(qiáng)大的集合數(shù)據(jù)處理能力和第三代語(yǔ)言(3GL)靈活的過(guò)程處理能力,在GKD-Base上已初步實(shí)現(xiàn)了兼容OarclePL/SQLV.23的PL/SQL引擎! 

GKD-BasePL/SQL引擎包括編譯器、解釋器和異常處理三個(gè)模塊。在編譯階段,根據(jù)PL/SQL語(yǔ)言兼有過(guò)程式語(yǔ)句和SQL語(yǔ)句的特點(diǎn),采取分而治之策略,把過(guò)程語(yǔ)句和SQL語(yǔ)句分開(kāi)處理。對(duì)于SQL語(yǔ)句,編譯器首先建立SQL語(yǔ)句結(jié)點(diǎn),進(jìn)行相應(yīng)的變量綁定和語(yǔ)法檢查;檢查無(wú)誤后產(chǎn)生語(yǔ)法樹(shù)形式的中間代碼。對(duì)于過(guò)程語(yǔ)句,編譯器將對(duì)語(yǔ)句成分進(jìn)行語(yǔ)法分析,對(duì)聲明的變量和數(shù)據(jù)類型建立相應(yīng)的符號(hào)表,最終產(chǎn)生語(yǔ)法樹(shù)形式的中間代碼。解釋器的作用是對(duì)編譯器生成的中間代碼進(jìn)行解釋執(zhí)行。解釋器與編譯器對(duì)應(yīng),具有相對(duì)獨(dú)立的SQL語(yǔ)句解釋模塊和過(guò)程語(yǔ)句解釋模塊。另外,解釋器還包括執(zhí)行狀態(tài)堆棧的管理、與GKD-BaseSQL引擎的調(diào)用接口。異常處理模塊主要實(shí)現(xiàn)程序運(yùn)行時(shí)的錯(cuò)誤檢查和報(bào)告,并支持用戶自定義異常和預(yù)定義異常的檢查和處理! 

GKD-BasePL/SQL引擎可以實(shí)現(xiàn)對(duì)過(guò)程式語(yǔ)句、SQL語(yǔ)句與游標(biāo)、存儲(chǔ)子程序及包的編譯和解釋執(zhí)行。  

2觸發(fā)器實(shí)現(xiàn)的關(guān)鍵問(wèn)題

觸發(fā)器定義了當(dāng)某些數(shù)據(jù)庫(kù)相關(guān)事件發(fā)生時(shí)數(shù)據(jù)庫(kù)應(yīng)采取的動(dòng)作。觸發(fā)器可增強(qiáng)引用完整性,加強(qiáng)復(fù)雜業(yè)務(wù)的規(guī)則,或者監(jiān)控?cái)?shù)據(jù)庫(kù)的變動(dòng),其實(shí)現(xiàn)主要涉及到觸發(fā)事件的檢測(cè)以及觸發(fā)條件的判決等關(guān)鍵技術(shù)問(wèn)題。  

2.1觸發(fā)器的事件檢測(cè)機(jī)制

觸發(fā)器事件檢測(cè)機(jī)制包括對(duì)事件的檢測(cè)和存儲(chǔ),是實(shí)現(xiàn)觸發(fā)器的關(guān)鍵。觸發(fā)器檢測(cè)的事件類型比較簡(jiǎn)單,基本事件主要包括對(duì)數(shù)據(jù)的插入、刪除以及更新等。GKD-Base的觸發(fā)器在對(duì)事件檢測(cè)時(shí),直接在相關(guān)事件發(fā)生的前后調(diào)用檢測(cè)函數(shù)截獲并分析事件消息,以確定是否對(duì)觸發(fā)器點(diǎn)火! 

觸發(fā)器事件檢測(cè)機(jī)制實(shí)現(xiàn)的關(guān)鍵在于對(duì)觸發(fā)事件的存儲(chǔ)。觸發(fā)事件具有時(shí)間順序,因此存儲(chǔ)時(shí)也必須按照嚴(yán)格的時(shí)間順序進(jìn)行存儲(chǔ)。綜合比較各個(gè)商用和實(shí)驗(yàn)數(shù)據(jù)庫(kù)系統(tǒng)的事件表存儲(chǔ)機(jī)制,選擇了Starburst的雙HASH鏈表存儲(chǔ)機(jī)制,如圖1。


圖1Starburst中變遷表的雙Hash結(jié)構(gòu)  

這里,變遷表分為兩種類型:NEW和OLD,分別對(duì)應(yīng)于觸發(fā)器行級(jí)別操作中的NEW值和OLD值。變遷表中存儲(chǔ)了事件類型、當(dāng)前數(shù)據(jù)表以及事件作用的元組。系統(tǒng)可以通過(guò)這個(gè)駐留內(nèi)存的雙HASH鏈表實(shí)現(xiàn)數(shù)據(jù)庫(kù)變遷的快速定位和跟蹤處理! 

2.2觸發(fā)器的條件判決機(jī)制

觸發(fā)器的條件判決機(jī)制是觸發(fā)器的核心,根據(jù)SQL99標(biāo)準(zhǔn)的定義,可以將觸發(fā)器分為前觸發(fā)、約束判定和后觸發(fā)三種類型。這三種類型觸發(fā)器的判決順序策略如圖2。

圖2三種類型觸發(fā)器的判決順序策略圖


圖3Rete網(wǎng)絡(luò)示意圖  

觸發(fā)器的條件評(píng)估是影響觸發(fā)器機(jī)制的最關(guān)鍵因素。在數(shù)據(jù)庫(kù)環(huán)境中,大多數(shù)數(shù)據(jù)修改行為只能影響數(shù)據(jù)庫(kù)的一小部分內(nèi)容,因此沒(méi)必要每次都從頭開(kāi)始評(píng)估觸發(fā)器規(guī)則條件,Rete和TREAT網(wǎng)絡(luò)等增量條件評(píng)估方法已經(jīng)被證明是觸發(fā)器條件評(píng)估(ConditionEvaluation)的有效處理手段! 

以Rete網(wǎng)絡(luò)為例(圖3),它是一個(gè)左深度二叉樹(shù),其基本元素包括:  

根結(jié)點(diǎn):根結(jié)點(diǎn)接收插入/刪除(+/-)記號(hào)(tokens),并將其傳遞給每一個(gè)后繼結(jié)點(diǎn);  

t-const結(jié)點(diǎn):記號(hào)到達(dá)這些結(jié)點(diǎn)后,將根據(jù)該結(jié)點(diǎn)上的條件謂詞進(jìn)行判決,那些通過(guò)測(cè)試的記號(hào)將繼續(xù)傳播下去,沒(méi)有通過(guò)測(cè)試的記號(hào)則被丟棄掉;  

α-存儲(chǔ)結(jié)點(diǎn):通過(guò)t-const結(jié)點(diǎn)測(cè)試的記號(hào)將存儲(chǔ)到這個(gè)結(jié)點(diǎn)中,存儲(chǔ)在α-存儲(chǔ)結(jié)點(diǎn)中的每一個(gè)記號(hào)都將同時(shí)被傳遞給該結(jié)點(diǎn)的后繼結(jié)點(diǎn);  

AND(連接)結(jié)點(diǎn):這些結(jié)點(diǎn)有兩個(gè)輸入,到達(dá)其中任意一個(gè)輸入結(jié)點(diǎn)的記號(hào)都要通過(guò)AND結(jié)點(diǎn)進(jìn)行測(cè)試,看它是否需要與另外一個(gè)輸入進(jìn)行連接操作。如果是,則連接兩個(gè)輸入的記號(hào)對(duì),將它們合并成一個(gè)組合記號(hào)后再傳遞給后繼的β-存儲(chǔ)結(jié)點(diǎn);  

β-存儲(chǔ)結(jié)點(diǎn):存儲(chǔ)連接結(jié)點(diǎn)的輸出,并將輸出同時(shí)傳遞給后繼結(jié)點(diǎn);  

P-結(jié)點(diǎn)(規(guī)則結(jié)點(diǎn))
數(shù)據(jù)庫(kù)管理系統(tǒng)作為信息系統(tǒng)的核心部件,在信息化時(shí)代所充當(dāng)?shù)慕巧瞧渌魏诬浖荒芴娲。?dāng)前數(shù)據(jù)庫(kù)應(yīng)用的一個(gè)普遍要求是數(shù)據(jù)庫(kù)管理系統(tǒng)能夠在一些數(shù)據(jù)庫(kù)相關(guān)事件發(fā)生時(shí)觸發(fā)預(yù)先定義的操作,實(shí)現(xiàn)信息管理的自動(dòng)化,因此引進(jìn)了觸發(fā)器機(jī)制。觸發(fā)器可以增強(qiáng)引用完整性,加強(qiáng)復(fù)雜業(yè)務(wù)的規(guī)則,或者監(jiān)控?cái)?shù)據(jù)庫(kù)的變動(dòng),并執(zhí)行一定的數(shù)據(jù)操作。  

觸發(fā)器機(jī)制實(shí)現(xiàn)主要涉及觸發(fā)事件的檢測(cè)以及觸發(fā)條件的判決等關(guān)鍵技術(shù)問(wèn)題,以及對(duì)觸發(fā)器的編譯存儲(chǔ)和調(diào)用執(zhí)行等具體操作。  

本文以國(guó)產(chǎn)數(shù)據(jù)庫(kù)管理系統(tǒng)GKD-Base為原型,在兼容Oracle規(guī)范的PL/SQL引擎基礎(chǔ)上,提出一套解決方案,對(duì)觸發(fā)器的關(guān)鍵技術(shù)問(wèn)題進(jìn)行了探討,并設(shè)計(jì)實(shí)現(xiàn)了數(shù)據(jù)庫(kù)的觸發(fā)器機(jī)制,擴(kuò)展了數(shù)據(jù)庫(kù)管理系統(tǒng)GKD-Base的功能。  

1GKD-BasePL/SQL引擎

GKD-BASE數(shù)據(jù)庫(kù)是一個(gè)具有自主知識(shí)產(chǎn)權(quán)的數(shù)據(jù)庫(kù)管理系統(tǒng),具有兼容SQL89標(biāo)準(zhǔn)的SQL引擎,能夠?yàn)橛脩籼峁┮粋(gè)統(tǒng)一、有效的數(shù)據(jù)庫(kù)訪問(wèn)接口(XAPI),實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的各種操作。為了融合SQL語(yǔ)言強(qiáng)大的集合數(shù)據(jù)處理能力和第三代語(yǔ)言(3GL)靈活的過(guò)程處理能力,在GKD-Base上已初步實(shí)現(xiàn)了兼容OarclePL/SQLV.23的PL/SQL引擎。  

GKD-BasePL/SQL引擎包括編譯器、解釋器和異常處理三個(gè)模塊。在編譯階段,根據(jù)PL/SQL語(yǔ)言兼有過(guò)程式語(yǔ)句和SQL語(yǔ)句的特點(diǎn),采取分而治之策略,把過(guò)程語(yǔ)句和SQL語(yǔ)句分開(kāi)處理。對(duì)于SQL語(yǔ)句,編譯器首先建立SQL語(yǔ)句結(jié)點(diǎn),進(jìn)行相應(yīng)的變量綁定和語(yǔ)法檢查;檢查無(wú)誤后產(chǎn)生語(yǔ)法樹(shù)形式的中間代碼。對(duì)于過(guò)程語(yǔ)句,編譯器將對(duì)語(yǔ)句成分進(jìn)行語(yǔ)法分析,對(duì)聲明的變量和數(shù)據(jù)類型建立相應(yīng)的符號(hào)表,最終產(chǎn)生語(yǔ)法樹(shù)形式的中間代碼。解釋器的作用是對(duì)編譯器生成的中間代碼進(jìn)行解釋執(zhí)行。解釋器與編譯器對(duì)應(yīng),具有相對(duì)獨(dú)立的SQL語(yǔ)句解釋模塊和過(guò)程語(yǔ)句解釋模塊。另外,解釋器還包括執(zhí)行狀態(tài)堆棧的管理、與GKD-BaseSQL引擎的調(diào)用接口。異常處理模塊主要實(shí)現(xiàn)程序運(yùn)行時(shí)的錯(cuò)誤檢查和報(bào)告,并支持用戶自定義異常和預(yù)定義異常的檢查和處理! 

GKD-BasePL/SQL引擎可以實(shí)現(xiàn)對(duì)過(guò)程式語(yǔ)句、SQL語(yǔ)句與游標(biāo)、存儲(chǔ)子程序及包的編譯和解釋執(zhí)行! 

2觸發(fā)器實(shí)現(xiàn)的關(guān)鍵問(wèn)題

觸發(fā)器定義了當(dāng)某些數(shù)據(jù)庫(kù)相關(guān)事件發(fā)生時(shí)數(shù)據(jù)庫(kù)應(yīng)采取的動(dòng)作。觸發(fā)器可增強(qiáng)引用完整性,加強(qiáng)復(fù)雜業(yè)務(wù)的規(guī)則,或者監(jiān)控?cái)?shù)據(jù)庫(kù)的變動(dòng),其實(shí)現(xiàn)主要涉及到觸發(fā)事件的檢測(cè)以及觸發(fā)條件的判決等關(guān)鍵技術(shù)問(wèn)題! 

2.1觸發(fā)器的事件檢測(cè)機(jī)制

觸發(fā)器事件檢測(cè)機(jī)制包括對(duì)事件的檢測(cè)和存儲(chǔ),是實(shí)現(xiàn)觸發(fā)器的關(guān)鍵。觸發(fā)器檢測(cè)的事件類型比較簡(jiǎn)單,基本事件主要包括對(duì)數(shù)據(jù)的插入、刪除以及更新等。GKD-Base的觸發(fā)器在對(duì)事件檢測(cè)時(shí),直接在相關(guān)事件發(fā)生的前后調(diào)用檢測(cè)函數(shù)截獲并分析事件消息,以確定是否對(duì)觸發(fā)器點(diǎn)火! 

觸發(fā)器事件檢測(cè)機(jī)制實(shí)現(xiàn)的關(guān)鍵在于對(duì)觸發(fā)事件的存儲(chǔ)。觸發(fā)事件具有時(shí)間順序,因此存儲(chǔ)時(shí)也必須按照嚴(yán)格的時(shí)間順序進(jìn)行存儲(chǔ)。綜合比較各個(gè)商用和實(shí)驗(yàn)數(shù)據(jù)庫(kù)系統(tǒng)的事件表存儲(chǔ)機(jī)制,選擇了Starburst的雙HASH鏈表存儲(chǔ)機(jī)制,如圖1。


圖1Starburst中變遷表的雙Hash結(jié)構(gòu)  

這里,變遷表分為兩種類型:NEW和OLD,分別對(duì)應(yīng)于觸發(fā)器行級(jí)別操作中的NEW值和OLD值。變遷表中存儲(chǔ)了事件類型、當(dāng)前數(shù)據(jù)表以及事件作用的元組。系統(tǒng)可以通過(guò)這個(gè)駐留內(nèi)存的雙HASH鏈表實(shí)現(xiàn)數(shù)據(jù)庫(kù)變遷的快速定位和跟蹤處理! 

2.2觸發(fā)器的條件判決機(jī)制

觸發(fā)器的條件判決機(jī)制是觸發(fā)器的核心,根據(jù)SQL99標(biāo)準(zhǔn)的定義,可以將觸發(fā)器分為前觸發(fā)、約束判定和后觸發(fā)三種類型。這三種類型觸發(fā)器的判決順序策略如圖2。

圖2三種類型觸發(fā)器的判決順序策略圖


圖3Rete網(wǎng)絡(luò)示意圖  

觸發(fā)器的條件評(píng)估是影響觸發(fā)器機(jī)制的最關(guān)鍵因素。在數(shù)據(jù)庫(kù)環(huán)境中,大多數(shù)數(shù)據(jù)修改行為只能影響數(shù)據(jù)庫(kù)的一小部分內(nèi)容,因此沒(méi)必要每次都從頭開(kāi)始評(píng)估觸發(fā)器規(guī)則條件,Rete和TREAT網(wǎng)絡(luò)等增量條件評(píng)估方法已經(jīng)被證明是觸發(fā)器條件評(píng)估(ConditionEvaluation)的有效處理手段! 

以Rete網(wǎng)絡(luò)為例(圖3),它是一個(gè)左深度二叉樹(shù),其基本元素包括:  

根結(jié)點(diǎn):根結(jié)點(diǎn)接收插入/刪除(+/-)記號(hào)(tokens),并將其傳遞給每一個(gè)后繼結(jié)點(diǎn);  

t-const結(jié)點(diǎn):記號(hào)到達(dá)這些結(jié)點(diǎn)后,將根據(jù)該結(jié)點(diǎn)上的條件謂詞進(jìn)行判決,那些通過(guò)測(cè)試的記號(hào)將繼續(xù)傳播下去,沒(méi)有通過(guò)測(cè)試的記號(hào)則被丟棄掉;  

α-存儲(chǔ)結(jié)點(diǎn):通過(guò)t-const結(jié)點(diǎn)測(cè)試的記號(hào)將存儲(chǔ)到這個(gè)結(jié)點(diǎn)中,存儲(chǔ)在α-存儲(chǔ)結(jié)點(diǎn)中的每一個(gè)記號(hào)都將同時(shí)被傳遞給該結(jié)點(diǎn)的后繼結(jié)點(diǎn);  

AND(連接)結(jié)點(diǎn):這些結(jié)點(diǎn)有兩個(gè)輸入,到達(dá)其中任意一個(gè)輸入結(jié)點(diǎn)的記號(hào)都要通過(guò)AND結(jié)點(diǎn)進(jìn)行測(cè)試,看它是否需要與另外一個(gè)輸入進(jìn)行連接操作。如果是,則連接兩個(gè)輸入的記號(hào)對(duì),將它們合并成一個(gè)組合記號(hào)后再傳遞給后繼的β-存儲(chǔ)結(jié)點(diǎn);  

β-存儲(chǔ)結(jié)點(diǎn):存儲(chǔ)連接結(jié)點(diǎn)的輸出,并將輸出同時(shí)傳遞給后繼結(jié)點(diǎn);  

P-結(jié)點(diǎn)(規(guī)則結(jié)點(diǎn))
相關(guān)IC型號(hào)

熱門(mén)點(diǎn)擊

 

推薦技術(shù)資料

聲道前級(jí)設(shè)計(jì)特點(diǎn)
    與通常的Hi-Fi前級(jí)不同,EP9307-CRZ這臺(tái)分... [詳細(xì)]
版權(quán)所有:51dzw.COM
深圳服務(wù)熱線:13751165337  13692101218
粵ICP備09112631號(hào)-6(miitbeian.gov.cn)
公網(wǎng)安備44030402000607
深圳市碧威特網(wǎng)絡(luò)技術(shù)有限公司
付款方式


 復(fù)制成功!