時態資料庫

時態資料庫(Temporal Database)主要用於記錄那些隨著時間而變化的值的歷史。

什麼是時態資料庫

區別於傳統的關係型資料庫(RDBMS),時態資料庫(Temporal Database)主要用於記錄那些隨著時間而變化的值的歷史,而這些歷史值對套用領域而言又

時態資料庫時態資料庫
是重要的,這類套用有:金融、保險、預訂系統、決策支持系統等。
目前時態資料庫還沒有像如Oracle、SQL Server等大型關係資料庫那樣的產品。在當前時態資料庫技術尚未完全成熟的現狀下,DBMS提供商不會輕易把時態處理功能引入現有的DBMS中,因此,利用成熟的RDBMS資料庫,建立時態資料庫的中間件,在現階段是一個較好的選擇,因此就應運而生TimeDB和TempDB了。

時態資料庫理論的基本概念

時態資料庫理論提出了三種基本時間:用戶自定義時間、有效時間和事務時間。同時把資料庫分為四種類型:快照資料庫、回滾資料庫、歷史資料庫和雙時態資料庫。
 用戶自定義時間:指用戶根據自己的需要或理解定義的時間。時態資料庫系統不處理用戶自己定義的時間類型。因此,用戶自定義時間是和套用相關的,不在時態資料庫處理的範圍之內。
 有效時間(valid-Time):指一個對象在現實世界中發生並保持的時間,即該對象在現實世界中語義為真的時間,包含Valid-From和Valid-To兩個值。它可以指示過去、現在和未來。例如,考慮事實“小明從2003年到2007年是大學生”,那么時間區間[2003, 2007]是事實“小明是大學生”的有效時間區間,該事實在該時間區間內為真。有效時間可以是時間點、時間點的集合、時間區間或者時間區間的集合,或者是整個時間域。有效時間由時態資料庫系統解釋並處理,在查詢的過程中對用戶透明。用戶也可以顯式地查詢和更新有效時間。
 事務時間(Transaction-Time):指一個資料庫對象發生操作的時間,是一個事實存儲在資料庫、或者在資料庫中發生改變的時間,包含Transaction-From和Transaction-To兩個值。當用戶對資料庫狀態進行更改時,會產生各種操作歷史,事務時間真實地記錄了資料庫狀態變更的歷史。有時也稱事務時間為系統時間。
 快照資料庫:快照資料庫是反映現實世界某一瞬間情況的數據模型。它記錄了特定時刻的資料庫狀態。快照資料庫採用這樣的假設:一個存儲在資料庫中的元組,一定是真實世界中的有效事實。
 歷史資料庫:資料庫中被管理對象的生命周期是對象的有效時間,每一個元組記錄了數據的一個“歷史”狀態。歷史資料庫中沒有約束時間的表示方法,可以是時間點的集合、時間區間或者區間集合等形式表示。
回滾資料庫:資料庫中被管理對象的生命周期是事務時間的資料庫。它保存了資料庫中事務提交、狀態演變的歷史狀態。
雙時態資料庫:資料庫中元組包含一個系統支持的有效時間和一個系統支持的事務時間的資料庫,稱為雙時態資料庫。雙時態資料庫具備了快照資料庫、歷史資料庫和回滾資料庫的特點,存儲了現實世界和資料庫系統的變更歷史。
 Now:Now的中文意思是當前時間,是一個時間變元,隨著當前時間的變化而變化,記錄了隨時間變化的信息,它的有效值依賴於當前時間。但在很多套用當中,now值還能表示“過去”和“未來”時間,這就是now語義的研究課題,它對於提高時態系統查詢效率具有比較重要的意義。有關now語義的討論可參見 軟體學報 Vol. 16, No.5 (2005) 838-845

時態資料庫腳本ATSQL的使用

時態數據處理構件根據ATSQL2的語法引入了Now、Beginning和Forever三個變元。Beginning和Forever分別表示時態數據處理構件所能表示的時間起點和終點。Now表示當前時間。每次執行操作時必須使Now綁定到一個固定的值(操作執行的當前時間),這樣後繼操作才能正常進行。在下面的ATSQL2中表示的這幾個單詞是具有具體的含義的。
ATSQL2的數據定義語句包括以下幾項功能:創建表、創建視圖、刪除表、刪除視圖。
ATSQL2語言和普通SQL語句一樣,使用“create table”關鍵字創建資料庫表,關鍵字“as validtime”用於指示系統創建具有有效時間支持的資料庫表。

時態數據的變元

時態數據處理構件根據ATSQL2的語法引入了Now、Beginning和Forever三個變元。Beginning和Forever分別表示時態數據處理構件所能表示的時間起點和終點。Now表示當前時間。每次執行操作時必須使Now綁定到一個固定的值(操作執行的當前時間),這樣後繼操作才能正常進行。
時態數據處理構件使用重寫底層比較過程的方法綁定Now的語義。它把Now、Beginning和Forever分別用以下三個具體的時間值表示:
Now = ‘9999-01-01 00:00:00’;
Beginning = ‘1000-01-01 00:00:00’;
Forever = ‘9999-12-31 23:59:59’.
因為使用了特殊值表示這三個變元,一方面使得時態數據處理構件能處理的時間範圍比原商業資料庫能處理的時間範圍小,另一方面使得原商業資料庫底層對時間類型數據的比較運算元有了新的意義。例如,如果當前時間是2007年12月1日,考慮“2009-1-1>Now”的意義時,應當先把Now替換為2009-1-1,比較結果為真。
在TimeDB中Now只是當前時間的別名。在時態插入語句的執行過程中,Now作為一個標記被替換為語句執行的當前時間。
存儲現實世界的時間經歷狀態信息的資料庫叫做時態資料庫(Temporal Database)。
時態資料庫與傳統資料庫最大的區別在於它對時間相關的操作進行了有力的支持。
一般而言,資料庫系統對世界的當前狀態建模,不會保存過去狀態的信息。比如當前的客戶、當前的學生很當前提供的課程。在許多套用中,保存和檢索有關過去狀態的信息非常重要。比如一個病人資料庫必須保存每個病人的病歷信息,一個工廠監視系統可能要保存工廠中感測器當前和過去的讀入數據以進行分析。

時態資料庫管理系統

TDBMS基本組成

傳統資料庫管理系統(DBMS)具有支持時間和日期的數據類型,但不能直接支持和管理時態數據,關於時態方面的操作需要由另行編寫的應用程式完成。時態資料庫管理系統(TDBMS)具有提供時態數據操作和支持時態數據管理的基本功能。 一個TDBMS需要具有下述子系統:
時態數據定義子系統 用來定義(創建、取消和修改)各種時態數據。時態數據操縱子系統 用來控制時態數據的各種基本操作。時態數據查詢子系統 用來查詢各類時態數據並且提供時態語義的支持。時態約束子系統 用來支持數據完整性過程中的各類時間關聯與制約,例如被參照表中主鍵有效時間期間變化時參照表中外鍵的變化等。該子系統的基本功能是保證時態數據的一致性。

TimeDB

TimeDB由A. Steiner於1998年開發的一個時態資料庫管理系統 最新版本是2.2版。TimeDB是傳統資料庫管理系統的前端軟體,用戶使用ATSQL2語句描述套用中時態操作,然後由TimeDB轉換後形成標準SQL語句,這些標準SQL語句傳輸到後台關係資料庫中進行實際數據的操作。TimeDB初步實現了時態查詢、時態更新、時態視圖和部分時態完整性約束等基本時態功能,同時也兼容非時態數據操作。 TimeDB 1.0版本由Andreas使用SICStus Prolog語言開發,運行在SWI Prolog環境中。TimeDB 2.0版本使用Java語言開發,具有平台無關特徵;基於JDBC訪問資料庫,可以在IBM Cloudscape、Oracle、Sybase等多種資料庫管理系統之上使用;具有較友好的用戶界面;最佳化了輔助表創建過程;具有本地調用接口TDBCI,可供Java應用程式調用以執行ATSQL2語句。 TimeDB 2.1版本開始使用Java SDK 1.4版本,支持Cloudscape 10; TimeDB 2.2版本加入了對Oracle 10g的支持。

TempDB

TempDB是由湯庸教授領導的時態資料庫研究小組於2002年開發研製,目前最新版本2.1版。作為國內首個支持時態數據管理的TDBMS,TempDB在邏輯上使用雙時態數據模型,使用ATSQL2語言,支持電子政務、電子商務、決策支持等信息處理系統中的時態套用;同時,TempDB在技術上基於關係資料庫管理系統MySQL平台、採用JAVA語言進行底層開發,具有較強的可移植性以及部署方便。 相對TimeDB,而TempDB能支持基於Now語義複雜操作,支持不確定時態語義查詢;TempDB同時實現了運行歸併和更新歸併兩種,這樣不會出現時間戳相鄰而用戶定義屬性完全相同的(未可歸併)情形;TempDB能支持基於Now語義複雜操作,支持不確定時態語義查詢。此外,TempDB還提供統一的圖形化界面供用戶輸入語句、查看語句執行結果和中間結果,以及檢測語句執行時的可能出錯信息。

相關詞條

相關搜尋

熱門詞條

聯絡我們