主動數(shù)據(jù)庫管理系統(tǒng)(數(shù)據(jù)庫)
時間:2022-12-09 08:30:02 | 來源:信息時代
時間:2022-12-09 08:30:02 來源:信息時代
主動數(shù)據(jù)庫管理系統(tǒng) : 對傳統(tǒng)“被動”數(shù)據(jù)庫管理系統(tǒng)的擴充,增加了主動服務機制,具有反應行為的數(shù)據(jù)庫管理系統(tǒng)。其功能有:
(1)提供傳統(tǒng)數(shù)據(jù)庫系統(tǒng)所提供的所有功能。
(2)必須給用戶和應用提供相應機制以說明所需的主動特性。
(3)必須能有效地實現(xiàn)(2)中所說明的主動特性,而且能與系統(tǒng)的其他部分,如查詢、事務處理、并發(fā)控制和權(quán)限管理等有效地集成在一起。
(4)提供數(shù)據(jù)庫設計和調(diào)試工具。
ADBMS的系統(tǒng)結(jié)構(gòu)決定它的功能和實現(xiàn)它所需的組件。由于ADBMS必須提供傳統(tǒng)數(shù)據(jù)庫的功能和主動特性,因此可以將它看作是傳統(tǒng)數(shù)據(jù)庫的擴展。為提供主動性功能,ADBMS必須包含主動組件,例如,事件檢測器、規(guī)則管理器、規(guī)則執(zhí)行組件等。ADBMS的參考體系結(jié)構(gòu)如圖1所示。
圖1 ADBMS的結(jié)構(gòu)
按照基礎(chǔ)數(shù)據(jù)庫管理系統(tǒng)與主動組件之間的耦合程度,可以將ADBMS系統(tǒng)結(jié)構(gòu)歸結(jié)為三類:
(1)分層結(jié)構(gòu):所有主動數(shù)據(jù)庫組件都集中在一個模塊中,處在傳統(tǒng)被動數(shù)據(jù)庫系統(tǒng)的頂層。在這種結(jié)構(gòu)下,為了監(jiān)視感興趣的數(shù)據(jù)庫事件,主動數(shù)據(jù)庫模塊需要截獲送給數(shù)據(jù)庫系統(tǒng)的命令,或者是截獲返回給用戶或應用程序的數(shù)據(jù)。分層結(jié)構(gòu)的優(yōu)點是: 不需要修改被動數(shù)據(jù)庫系統(tǒng); 幾個不同的被動數(shù)據(jù)庫系統(tǒng)可以轉(zhuǎn)換成具有統(tǒng)一界面的主動數(shù)據(jù)庫系統(tǒng),有利于主動數(shù)據(jù)庫技術(shù)對異構(gòu)系統(tǒng)的集成。其缺點是: 系統(tǒng)性能較差。主動數(shù)據(jù)庫模塊的實現(xiàn)不能直接訪問被動數(shù)據(jù)庫系統(tǒng)的子系統(tǒng),如事務管理器、鎖管理器、授權(quán)組件等,從而使得耦合模式、規(guī)則的并發(fā)控制、規(guī)則的授權(quán)等得不到支持。
(2)集成結(jié)構(gòu):所有主動數(shù)據(jù)庫組件都成為數(shù)據(jù)庫系統(tǒng)本身的一部分。在這種結(jié)構(gòu)下,規(guī)則管理和處理都集成到數(shù)據(jù)庫系統(tǒng)中,底層數(shù)據(jù)管理器監(jiān)視數(shù)據(jù)的操作,當感興趣的事件發(fā)生時通知主動組件。規(guī)則處理器在評估規(guī)則條件或者是執(zhí)行規(guī)則動作時可以調(diào)用應用程序模塊,或者是直接對數(shù)據(jù)庫進行操作。當規(guī)則的條件或動作為數(shù)據(jù)庫操作時,規(guī)則處理器還可以利用數(shù)據(jù)庫系統(tǒng)的查詢評估子系統(tǒng)。集成結(jié)構(gòu)的優(yōu)點是: 規(guī)則事件監(jiān)視、條件評估和動作執(zhí)行都能高效地進行。其主要缺點是: 需要修改現(xiàn)有代碼,實現(xiàn)代價大; 此外,如果將不同被動數(shù)據(jù)庫系統(tǒng)轉(zhuǎn)換為主動數(shù)據(jù)庫系統(tǒng),可能會將被動數(shù)據(jù)庫系統(tǒng)之間的差異帶到主動組件中。
(3)編譯型結(jié)構(gòu):編譯型結(jié)構(gòu)中,根本不需要運行時的活動,因為應用過程或者是數(shù)據(jù)庫操作在被編譯時,系統(tǒng)將自動修改它們,使其包含主動數(shù)據(jù)庫規(guī)則的效果。這種方法的優(yōu)勢是: 不需要事件監(jiān)控和規(guī)則執(zhí)行組件,減少了實現(xiàn)任務的復雜程度,提高了系統(tǒng)的性能。但這種方法只適用于有限的應用語言、規(guī)則語言和規(guī)則集。
按照數(shù)據(jù)庫數(shù)據(jù)模型的不同,主動數(shù)據(jù)庫系統(tǒng)可以分為關(guān)系主動數(shù)據(jù)庫系統(tǒng)和面向?qū)ο笾鲃訑?shù)據(jù)庫系統(tǒng)。兩者在處理主動特性方面的主要區(qū)別在于對各種事件的表示和監(jiān)測。關(guān)系數(shù)據(jù)庫系統(tǒng)中事件可以用獨立的實體表示,獨立的存儲結(jié)構(gòu)方便事件的修改和擴充。觸發(fā)事件一般限制為對數(shù)據(jù)的插入、刪除和修改等操作,有些系統(tǒng)提供查詢作為觸發(fā)事件。面向?qū)ο髷?shù)據(jù)庫系統(tǒng)在主動性功能的實現(xiàn)方面比關(guān)系數(shù)據(jù)庫系統(tǒng)具有明顯優(yōu)勢。在OODBS中,用戶可以定義具有任意方法的新類,每種方法都能表示為一個事件,可以對它們進行檢測。觸發(fā)事件除了插入、刪除、修改和查詢等操作外,還可以提供其他事件,如時間事件、外部事件和用戶定義的事件等,事件類型較豐富。OODBS能夠提供更為復雜的規(guī)則和更靈活的檢測手段。因此,面向?qū)ο髷?shù)據(jù)庫系統(tǒng)能夠比關(guān)系數(shù)據(jù)庫系統(tǒng)提供更多的主動功能。
主動數(shù)據(jù)庫系統(tǒng)有基于關(guān)系數(shù)據(jù)庫技術(shù)的,如POSTGERS、Starburst、Alert等系統(tǒng),也有基于面向?qū)ο髷?shù)據(jù)庫技術(shù)的,如HiPAC、Ode等系統(tǒng)。如下為兩個典型的主動數(shù)據(jù)庫系統(tǒng):
(1) POSTGERS系統(tǒng): POSTGERS是美國加州大學伯克利分校研制的一個可擴充的主動關(guān)系數(shù)據(jù)庫管理系統(tǒng),最初的版本實現(xiàn)了一個集成的規(guī)則系統(tǒng),在第二版中提供了二個可選的規(guī)則執(zhí)行方式。一種是面向元組處理規(guī)則的元組級系統(tǒng)(tuple level system,TLS),另一種是類似于視圖機制的查詢重寫系統(tǒng)(query rewrite system,QRS)。在TLS方式下,規(guī)則執(zhí)行是面向元組或元組集的。POSTGERS僅支持數(shù)據(jù)庫操縱事件,一旦數(shù)據(jù)庫操縱事件發(fā)生,觸發(fā)了相應規(guī)則,則馬上評估條件,如果條件為真,則執(zhí)行規(guī)則的動作。在QRS方式下,查詢操作觸發(fā)規(guī)則之后與被觸發(fā)的所有規(guī)則的查詢操作相結(jié)合,生成一個查詢修改集合一起執(zhí)行,提供所需的結(jié)果。POSTGERS同時提供這兩種方式由用戶選擇,面向不同應用提供了多種不同的主動性功能。
POSTGERS的查詢語言稱為POSTQUEL語言。定義規(guī)則語句的形式如下:
define [tuple|rewrite]rule rulename is
on event to object where qualification
do [instead] action
其中,選項tuple表示規(guī)則在TLS方式下執(zhí)行,rewrite表示在QRS方式下執(zhí)行。事件為檢索或數(shù)據(jù)庫更新操作,對象為關(guān)系或關(guān)系的屬性; 條件為POSTQUEL的謂詞; 動作為POSTQUEL中的操作語句。規(guī)則條件和動作中可以包含NEW或CURRENT,表示更新后或更新前的元組值。POSTGERS中,所有的動作執(zhí)行都是立即型的,作為觸發(fā)規(guī)則命令的一部分一起執(zhí)行。動作執(zhí)行引發(fā)的事件可以觸發(fā)其他規(guī)則,從而形成規(guī)則的嵌套執(zhí)行。
(2) HiPAC系統(tǒng): HiPAC系統(tǒng)是美國計算機公司主持的一個研究項目,是研究最早和最大的面向?qū)ο笾鲃訑?shù)據(jù)庫系統(tǒng)之一。它提出的ECA規(guī)則模型具有豐富靈活的規(guī)則語義。HiPAC中所提供的事件有數(shù)據(jù)庫操縱事件、時鐘事件、外部事件和用戶定義的事件等各種原子事件,也可以通過操作符構(gòu)成復雜的觸發(fā)事件。事件操作符有多個事件的或操作、事件序列操作、事件重復操作。
HiPAC系統(tǒng)通過嵌套事務模型支持E-C和C-A的立即型、延遲型和分離型耦合模式,其條件評估和動作執(zhí)行分別以單獨的子事務或頂級事務形式執(zhí)行。在HiPAC系統(tǒng)中,對規(guī)則沖突解決的策略是以嵌套事務的形式并發(fā)執(zhí)行的,規(guī)則也可以指定優(yōu)先級,按照優(yōu)先級的順序執(zhí)行。
HiPAC系統(tǒng)對數(shù)據(jù)操縱事件的檢測采用了三種技術(shù): 一種是硬接入,即事件檢測代碼加入對對象操作的功能模塊中。另一種是基于包裝的,即用附加的代碼包裝函數(shù),執(zhí)行已包裝的函數(shù)時引發(fā)事件。還有一種是通過修改對象管理器的函數(shù)調(diào)用機制以引發(fā)事件。
在HiPAC中,對規(guī)則條件的評估使用了多種優(yōu)化技術(shù): ①基于觸發(fā)信號的評估。優(yōu)化時可以將事件檢測、參數(shù)計算和條件評估一起考慮。②將中間結(jié)果實體化。實體化和緩沖部分中間結(jié)果將避免要對發(fā)生的事件反復評估,特別是對那些計算代價大的子表達式更有益。③應用增量評估技術(shù)。將規(guī)則條件所涉及的數(shù)據(jù)庫狀態(tài)實體化,即與規(guī)則條件相關(guān)的數(shù)據(jù)更新后所生成條件的新狀態(tài)與更新前的狀態(tài)值之差作為增量參與條件評估。④應用多重查詢優(yōu)化技術(shù)。收集多條規(guī)則條件的公共子表達式,對這些子表達式僅評估一次。與被動數(shù)據(jù)庫中公共子表達式優(yōu)化不同,主動數(shù)據(jù)庫中要求被評估的公共子表達式其規(guī)則的觸發(fā)事件和耦合模式必須允許這些條件并發(fā)評估。例如,R
1={E,C
1,A
1},R
2={E,C
2,A
2},如果這二個規(guī)則的E-C耦合模式是相同的,而A
1與C
2不沖突,則序列{E,C
1,C
2,A
1,A
2}是可串行化的,C
1、C
2可一起優(yōu)化。