国产丁香婷婷妞妞基地-国产人人爱-国产人在线成免费视频麻豆-国产人成-91久久国产综合精品-91久久国产精品视频

公務員期刊網 論文中心 正文

時間性能數據庫的運用

前言:想要寫出一篇引人入勝的文章?我們特意為您整理了時間性能數據庫的運用范文,希望能給你帶來靈感和參考,敬請閱讀。

時間性能數據庫的運用

本文作者:彭煒 單位:大同大學數計學院

1背景介紹

將數據庫中的數據和時間屬性進行特殊處理的必要性在上世紀七十年代就被理解和提出.支持這種處理的數據庫被稱為時間數據庫.快速數據恢復和更新(即在線訪問即時信息的可能性)是數據庫管理系統最重要特征之一.自上世紀七十年代起的二十年中,時間數據庫已經被非常詳盡的研究,但還沒有一種廣泛應用的商業數據庫管理系統支持時間屬性,而且將時間屬性工具加入到結構化查詢語言(SQL)標準中的嘗試也失敗了.時間屬性工具的缺乏造成了人們對時間數據功能的研發與執行的不完善,其嚴重缺陷表現在以下幾方面:

*對完整性約束的應用,復雜且效率低;

*對開發者來說執行查詢的邏輯有模糊的連接,有些數據庫管理功能在應用中才能被實現;

*由于缺乏明確的設計模式,使程序的執行產生多樣性,甚至在同一個應用中就顯示出不同;

*同樣的功能被重復執行.需要注意的是,幾乎所有關于時間數據庫的研究都存在著對支持時間數據的手段已包含在數據庫管理系統中并被執行的假設.雖然這樣的假設保證了查詢語言所必需的功能可以使用,但是時間屬性在數據庫管理系統水平上全面執行的代價非常昂貴,且沒有現成可用的解決方案.

本文將論述如何在廣泛應用的商業數據庫管理系統構架中局部實施時間功能.因為不能對已確立的信息系統程序設計和已開發好的程序做出重大的改變,所以提出了一種在構架中利用現有技術工具來實施的方法,這項課題的主要目的闡述如下:

*提供在傳統關系或對象關系的數據庫管理系統的構架中使用時間屬性手段;

*對在應用程序設計和數據庫已確立的方法中進行細微改變的限制;

*執行程序不能降低系統中沒有使用時間數據的那些部分的性能;

*不對使用傳統方式來保證數據完整性的控制造成妨礙;*執行程序的成本必須低廉.

2基本執行法則

2.1對于歷史數據的要求

歷史數據的存儲是系統的需求,這一需求可能對應用的各個領域至關重要.系統的主要事件邏輯模塊可以在應用程序的時間層面上進行獨立的設計與開發.從本質上講,支持歷史數據更改同支持事務完整性和經授權的數據訪問,都屬于系統的基本功能.在本文中,使用的是區間時間的數據表達形式.假設一實體,它的任何歷史改變都必須存儲下來,并同這實體的當前狀態(即事物對象的普通狀態)一起,表現出這個實體的表達形式.當表達形式有效時,除普通屬性外,它成為了一個被用于研究區間時間的抽象概念.在對象級別上,有效和時間的表達形式之間的關系通常取決于執行程序.時間屬性的支持不會影響到系統事物邏輯分析和設計,并且不需要任何特殊的開發程序.需要存儲歷史數據的應用程序的設計必須包括下列步驟:

*設計系統的事物邏輯;

*增加對保留某些事物實體的歷史變化的要求.

因此,設計步驟須指定實體以及之間關系.對于這些實體及關系,必須保留修改歷史.統一建模語言(UML)模板便是例子之一.應用程序必須能夠處理歷史數據,這就要求開發特殊的界面來進行數據訪問,開發圖形界面向終端用戶呈現歷史數據.應用程序的進程邏輯在時間面上的疊交狀態,僅意味著概念上支持歷史更改要求的數據模型可被獨立地進行設計.包含系統實體有效狀態的數據模型稱為基本模型,對于歷史更改的基本模型來說,添加屬性的數據模型稱為時間模型.在本文中將就關系數據庫中的時間表達做出詳細的描述.支持歷史數據的方法不需要附加編碼.存儲歷史改變的表和表中更新數據的觸發器可以從基本模型的模式中自動生成.

2.2對于歷史數據的表達

我們對實體及其關系進行定義以便創建時間模式,這些實體和關系的歷史更改必須被存儲下來.在基本模式中,這些實體及其關系是與關系表相關聯的.對每一個這樣的表,我們用與基本模式同樣的文件名創建一個附加表,并加以H前綴.例如,對文件名為EMPLOYEE的表,我們創建了以HEMPLOYEE為名的表.這個新的表包含了與基本表同樣的列,以及兩個額外的列——時間區間的開始與結束,在這一區間中,表中每行的數值都是有效的.這兩個額外列的名字分別由基本表中的名字加以FTS(實施時間標記)后綴和XTS(終止時間標記)后綴來構成.每一個H表都具有主鍵和外鍵.主鍵由基本表的主鍵和FTS列構成.例如(圖1)表HEMPLOYEE,主鍵為:Primarykey(ID,EMPLOYEE-FTS)基本表的主鍵則被用做H表的外鍵:Foreignkey(ID)referencesEMPLOYEE(ID)H表中的數據自動更新,因此,時間模式里不存在完整性約束.

2.3對于更改歷史的更新

現在來考慮在H表中插入和更新記錄重要的規則是應用程序不可直接更新這些表中的數據,H表應進行自動更新.自動更新可由觸發器執行或者作為應用程序構架中的功能.以下是數據更新的規則:

*當一個記錄插入到基本模式表中時,同樣的數據也被插入到相應的時間模式H表中FTS字段的數值被設成當前的日期和時間,XTS字段的數值設成一個遠離的時間點.

*當一個記錄在基本模式表中被更新時,在H表中相應的記錄(具有同樣的主鍵和XTS字段等于ENDDATE)也隨之更新.之后,這一記錄將不再有效,同時XTS字段被設為當前時間.一個具有當前字段值的新記錄隨即插入到H表,FTS字段設成當前時間,XTS字段重新設成ENDDATE;

*當基本模式表中的記錄被刪除時,H表中相應的記錄(XTS字段為ENDDATE)也隨即進行更新,將XTS字段設為當前時間.H表保留了所有數據更改的歷史.每一個H表中的記錄在區間[FTS,XTS]中都是有效的.更改歷史是連續的,前面描述的帶有同樣主鍵的記錄的FTS字段值與XTS字段值在同一時間進行改變.H表的主鍵由基本表的主鍵和FTS字段構成.由于時間是離散的,上面描述的模式不能保證主鍵的值是唯一的.

這一問題可以通過附加檢查得以解決.如果另一個具有當前FTS值的記錄已經存在,那么至少在新的記錄中FTS有一位有效值會被增加.盡管基本模式中的所有數據在時間模式中都存在,基本模式仍是有用的,理由如下:

*完整性約束在時間模式中沒有定義,并且可以不被數據庫管理系統進行核實;

*時間模式表可能比基本模式表大很多;

*對于一些查詢,時間模式中的數據連接不如基本模式表中的連接有效.

以上提出的執行方法對于其他類型的冗余也進行了假設,冗余的程度經過了選擇,從而更易實行有效查詢.很明顯,為了能夠有效執行查詢,數據庫需要進行細微的調整.特別是時間表上應選擇一組索引.不過,這一問題超出了本文論述的范圍,在此不詳敘述.我們強調不同的完整性約束可以在基本模式中存儲當前數據的值,以確保建立高度可靠的數據庫.

3數據庫查詢執行

3.1包含時間條件的查詢

基本模式中的數據查詢提供了數據的當前值.由于時間數據的支持使得在過去一定時間區間里獲得的有效數據、實體更改的歷史、帶有時間謂詞的執行查詢以及生成各種報告均成為可能.例如我們可以找出一個員工在任職經理時工資的改變,或者這一員工在一定時間區間里的平均工資.在本文中,將對以下查詢進行探討:

*快照查詢可獲得在過去某一時間上實體及其關系的狀態.例如我們可以查詢到某個員工在2000年12月31日的工資是多少;

*跟蹤日志查詢可以追溯實體更改的歷史例如可以查詢員工在過去5年中工資變動的情況.

下面分別論述歷史數據表達如何應用在以上的查詢中,從而在結構化查詢語言(SQL)中對查詢進行表達.

3.2快照查詢

實際上,快照查詢是帶有附加參數的普通查詢,也就是追溯查詢數據有效時的時間.為了將一個普通查詢轉換為快照查詢,需要執行以下步驟:(1)將基本表中的參照替換為相應H表中的參照.(2)對每個與查詢相關的H表,在WHERE語句中添加附加條件:snapshotdate>=FTS和snapshotdate<XTS.然后,將特定時間里的記錄從每個H表中選擇出來例如選擇當前某位員工工資的查詢為:SELECTE.SALARYFROMEMPLOYEEEWHEREE.ID=100這種在特定時間里對那位員工工資的查詢被轉換成下面的查詢:SELECTE.SALARYFROMHEMPLOYEEEWHEREE.ID=100ANDEMPLOYEEFTS>=:snapshotdateANDEMPLOYEEXTS<:snapshotdate由于同一位員工的時間區間是不會重疊的,兩個查詢產生同一個記錄需要注意的是,有效數據在H表中被復制,因此,最后一個查詢也會產生有效數據(例如,當snapshotdate=currentdate).

3.3跟蹤日志查詢

現在我們來論述追溯歷史更改的查詢.這種查詢的復雜度取決于與查詢有關的時間表的數量,所選記錄有效的時間區間在不同的時間表中必須吻合.為了創建一個跟蹤日志查詢,需要兩個帶有不同參數的函數.一個產生最大自變量,另一個產生最小自變量.在查詢中會用到下列表達式:

*maximal(table1fts,…,tablenfts)從自變量列表中選出最大的自變數.我們將其代入所有與查詢有關的H表的FTS值.為了簡潔起見,這一函數產生的值記為MAXFTS;

*minimal(table1xts,…,tablenxts)從自變量列表中選出最小的自變數.我們將其代入所有與查詢有關的H表的XTS值.同樣,這一函數產生的值記為MINXTS.為了將查詢轉換為跟蹤日志查詢,需要執行以下步驟:(1)將基本表中的參照替換為相應H表中的參照.(2)將表達式MAXFTS和MINXTS加入所選字段的列表中.(3)將附加條件MAXFTS<MINXTS加入WHERE語句中.(4)下面的步驟可能需要操作:對歷史更改進行追溯的區間進行界定.在WHERE語句中加入條件MINXTS>SANDMAXFTS<E,其中S和E分別是區間的開始值和終止值.假設查詢一位員工及其部門的信息:隨著時間的變化,這位員工的工資、所在部門甚至姓名都有可能改變.在一定時間區間里選擇同樣數據的跟蹤日志查詢為。

4結論

本文所論述的對于時間數據的區間表達的執行并不新奇,類似的執行程序已被很多商業軟件包和開發小組所用.然而人們對于效率的問題,完整性約束的支持,應用程序開發以及查詢的設計都應更深入的思考.

本文提出的技術考慮了上述所有因素,因此,保證了高效和可信賴軟件的開發.文章也僅描述了在非時間數據庫管理系統中支持時間屬性的基本方面.許多重要的課題還有待研究,其中包括:

*應用程序的額外功能[例如撤銷(Undo)功能];

*執行并使用基于事件的表達方式;

*與事務支持機制的相互作用;

*對于有效時間的表達和使用(相對于事務時間).

相關熱門標簽
主站蜘蛛池模板: 欧美a级毛片免费播敢 | 欧美成人免费高清视频 | 国产一区二区三区在线观看影院 | 亚洲精品一区二区三区美女 | 亚洲成a人v | 日本九九视频 | 91伦理视频 | 午夜专区 | 美女张开腿让男生桶出水 | 一级片免费观看视频 | 97精品福利视频在线 | 国产精品资源 | 久久99久久精品免费思思 | 996热这里有精品青青草原 | 亚洲在线视频播放 | 女人aaaaa片一级一毛片 | 亚洲综合图片人成综合网 | 亚洲国产高清一区二区三区 | 国产精品一区高清在线观看 | 中国成人在线视频 | 国产三级黄色片 | www欧美com| 波多野结衣一级视频 | 欧美人成人亚洲专区中文字幕 | 特级毛片aaa免费版 特级毛片a级毛免费播放 | 欧美一级精品高清在线观看 | 欧美三级在线观看不卡视频 | 国产精品合集一区二区 | 亚洲在线偷拍自拍 | 波多野结衣在线看片 | 亚洲精品一区二区三区美女 | 成人在线不卡视频 | 美国一级毛片a | 天天看片欧美 | 中国美女牲交一级毛片 | 成人性视频在线 | 自拍一页| 成年午夜 | 欧美日韩一区二区三区在线播放 | 毛片b| 成年女人免费看片 |