必威电竞|足球世界杯竞猜平台

時態(tài)數(shù)據(jù)庫
來源:互聯(lián)網(wǎng)

區(qū)別于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(RDBMS),時態(tài)數(shù)據(jù)庫(Temporal Database)主要用于記錄那些隨著時間而變化的值的歷史。而這些歷史值對應(yīng)用領(lǐng)域而言又是重要的,這類應(yīng)用有:金融、保險、預(yù)訂系統(tǒng)、決策支持系統(tǒng)等。

什么是時態(tài)數(shù)據(jù)庫

目前時態(tài)數(shù)據(jù)庫還沒有像如Oracle數(shù)據(jù)庫、SQL Server等大型關(guān)系數(shù)據(jù)庫那樣的產(chǎn)品。在當(dāng)前時態(tài)數(shù)據(jù)庫技術(shù)尚未完全成熟的現(xiàn)狀下,DBMS提供商不會輕易把時態(tài)處理功能引入現(xiàn)有的DBMS中,因此,利用成熟的RDBMS數(shù)據(jù)庫,建立時態(tài)數(shù)據(jù)庫的中間件,在現(xiàn)階段是一個較好的選擇,因此就應(yīng)運而生TimeDB和TempDB了。

時態(tài)數(shù)據(jù)庫理論的基本概念

時態(tài)數(shù)據(jù)庫理論提出了三種基本時間:用戶自定義時間、有效時間和事務(wù)時間。同時把數(shù)據(jù)庫分為四種類型:快照數(shù)據(jù)庫、回滾數(shù)據(jù)庫、歷史數(shù)據(jù)庫和雙時態(tài)數(shù)據(jù)庫。

? 用戶自定義時間:指用戶根據(jù)自己的需要或理解定義的時間。時態(tài)數(shù)據(jù)庫系統(tǒng)不處理用戶自己定義的時間類型。因此,用戶自定義時間是和應(yīng)用相關(guān)的,不在時態(tài)數(shù)據(jù)庫處理的范圍之內(nèi)。

? 有效時間(valid-時間):指一個對象在現(xiàn)實世界中發(fā)生并保持的時間,即該對象在現(xiàn)實世界中語義為真的時間,包含Valid-From和Valid-To兩個值。它可以指示過去、現(xiàn)在和未來。例如,考慮事實“小明從2003年到2007年是大學(xué)生”,那么時間區(qū)間[2003, 2007]是事實“小明是大學(xué)生”的有效時間區(qū)間,該事實在該時間區(qū)間內(nèi)為真。有效時間可以是時間點、時間點的集合、時間區(qū)間或者時間區(qū)間的集合,或者是整個時間域。有效時間由時態(tài)數(shù)據(jù)庫系統(tǒng)解釋并處理,在查詢的過程中對用戶透明。用戶也可以顯式地查詢和更新有效時間。

? 事務(wù)時間(Transaction-時間):指一個數(shù)據(jù)庫對象發(fā)生操作的時間,是一個事實存儲在數(shù)據(jù)庫、或者在數(shù)據(jù)庫中發(fā)生改變的時間,包含Transaction-From和Transaction-To兩個值。當(dāng)用戶對數(shù)據(jù)庫狀態(tài)進行更改時,會產(chǎn)生各種操作歷史,事務(wù)時間真實地記錄了數(shù)據(jù)庫狀態(tài)變更的歷史。有時也稱事務(wù)時間為系統(tǒng)時間。

? 快照數(shù)據(jù)庫:快照數(shù)據(jù)庫是反映現(xiàn)實世界某一瞬間情況的數(shù)據(jù)模型。它記錄了特定時刻的數(shù)據(jù)庫狀態(tài)。快照數(shù)據(jù)庫采用這樣的假設(shè):一個存儲在數(shù)據(jù)庫中的元組,一定是真實世界中的有效事實。

? 歷史數(shù)據(jù)庫:數(shù)據(jù)庫中被管理對象的生命周期是對象的有效時間,每一個元組記錄了數(shù)據(jù)的一個“歷史”狀態(tài)。歷史數(shù)據(jù)庫中沒有約束時間的表示方法,可以是時間點的集合、時間區(qū)間或者區(qū)間集合等形式表示。

?回滾數(shù)據(jù)庫:數(shù)據(jù)庫中被管理對象的生命周期是事務(wù)時間的數(shù)據(jù)庫。它保存了數(shù)據(jù)庫中事務(wù)提交、狀態(tài)演變的歷史狀態(tài)。

?雙時態(tài)數(shù)據(jù)庫:數(shù)據(jù)庫中元組包含一個系統(tǒng)支持的有效時間和一個系統(tǒng)支持的事務(wù)時間的數(shù)據(jù)庫,稱為雙時態(tài)數(shù)據(jù)庫。雙時態(tài)數(shù)據(jù)庫具備了快照數(shù)據(jù)庫、歷史數(shù)據(jù)庫和回滾數(shù)據(jù)庫的特點,存儲了現(xiàn)實世界和數(shù)據(jù)庫系統(tǒng)的變更歷史。

? Now:Now的中文意思是當(dāng)前時間,是一個時間變元,隨著當(dāng)前時間的變化而變化,記錄了隨時間變化的信息,它的有效值依賴于當(dāng)前時間。但在很多應(yīng)用當(dāng)中,now值還能表示“過去”和“未來”時間,這就是now語義的研究課題,它對于提高時態(tài)系統(tǒng)查詢效率具有比較重要的意義。有關(guān)now語義的討論可參見 軟件學(xué)報 Vol. 16, No.5 (2005) 838-845

時態(tài)數(shù)據(jù)庫腳本ATSQL的使用

時態(tài)數(shù)據(jù)處理構(gòu)件根據(jù)ATSQL2的語法引入了Now、Beginning和Forever三個變元。Beginning和Forever分別表示時態(tài)數(shù)據(jù)處理構(gòu)件所能表示的時間起點和終點。Now表示當(dāng)前時間。每次執(zhí)行操作時必須使Now綁定到一個固定的值(操作執(zhí)行的當(dāng)前時間),這樣后繼操作才能正常進行。在下面的ATSQL2中表示的這幾個單詞是具有具體的含義的。

ATSQL2的數(shù)據(jù)定義語句包括以下幾項功能:創(chuàng)建表、創(chuàng)建視圖、刪除表、刪除視圖。

ATSQL2語言和普通SQL一樣,使用“create table”關(guān)鍵字創(chuàng)建數(shù)據(jù)庫表,關(guān)鍵字“as validtime”用于指示系統(tǒng)創(chuàng)建具有有效時間支持的數(shù)據(jù)庫表。

時態(tài)數(shù)據(jù)的變元

時態(tài)數(shù)據(jù)處理構(gòu)件根據(jù)ATSQL2的語法引入了Now、Beginning和Forever三個變元。Beginning和Forever分別表示時態(tài)數(shù)據(jù)處理構(gòu)件所能表示的時間起點和終點。Now表示當(dāng)前時間。每次執(zhí)行操作時必須使Now綁定到一個固定的值(操作執(zhí)行的當(dāng)前時間),這樣后繼操作才能正常進行。

時態(tài)數(shù)據(jù)處理構(gòu)件使用重寫底層比較過程的方法綁定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’.

因為使用了特殊值表示這三個變元,一方面使得時態(tài)數(shù)據(jù)處理構(gòu)件能處理的時間范圍比原商業(yè)數(shù)據(jù)庫能處理的時間范圍小,另一方面使得原商業(yè)數(shù)據(jù)庫底層對時間類型數(shù)據(jù)的比較算子有了新的意義。例如,如果當(dāng)前時間是2007年12月1日,考慮“2009-1-1>Now”的意義時,應(yīng)當(dāng)先把Now替換為2009-1-1,比較結(jié)果為真。

在TimeDB中Now只是當(dāng)前時間的別名。在時態(tài)插入語句的執(zhí)行過程中,Now作為一個標(biāo)記被替換為語句執(zhí)行的當(dāng)前時間。

存儲現(xiàn)實世界的時間經(jīng)歷狀態(tài)信息的數(shù)據(jù)庫叫做時態(tài)數(shù)據(jù)庫(Temporal Database)。

時態(tài)數(shù)據(jù)庫與傳統(tǒng)數(shù)據(jù)庫最大的區(qū)別在于它對時間相關(guān)的操作進行了有力的支持。

一般而言,數(shù)據(jù)庫系統(tǒng)對世界的當(dāng)前狀態(tài)建模,不會保存過去狀態(tài)的信息。比如當(dāng)前的客戶、當(dāng)前的學(xué)生很當(dāng)前提供的課程。在許多應(yīng)用中,保存和檢索有關(guān)過去狀態(tài)的信息非常重要。比如一個病人數(shù)據(jù)庫必須保存每個病人的病歷信息,一個工廠監(jiān)視系統(tǒng)可能要保存工廠中傳感器當(dāng)前和過去的讀入數(shù)據(jù)以進行分析。

時態(tài)數(shù)據(jù)庫管理系統(tǒng)

TDBMS基本組成

傳統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(DBMS)具有支持時間和日期的數(shù)據(jù)類型,但不能直接支持和管理時態(tài)數(shù)據(jù),關(guān)于時態(tài)方面的操作需要由另行編寫的應(yīng)用程序完成。時態(tài)數(shù)據(jù)庫管理系統(tǒng)(TDBMS)具有提供時態(tài)數(shù)據(jù)操作和支持時態(tài)數(shù)據(jù)管理的基本功能。一個TDBMS需要具有下述子系統(tǒng):

時態(tài)數(shù)據(jù)定義子系統(tǒng) 用來定義(創(chuàng)建、取消和修改)各種時態(tài)數(shù)據(jù)。時態(tài)數(shù)據(jù)操縱子系統(tǒng) 用來控制時態(tài)數(shù)據(jù)的各種基本操作。時態(tài)數(shù)據(jù)查詢子系統(tǒng) 用來查詢各類時態(tài)數(shù)據(jù)并且提供時態(tài)語義的支持。時態(tài)約束子系統(tǒng) 用來支持?jǐn)?shù)據(jù)完整性過程中的各類時間關(guān)聯(lián)與制約,例如被參照表中主鍵有效時間期間變化時參照表中外鍵的變化等。該子系統(tǒng)的基本功能是保證時態(tài)數(shù)據(jù)的一致性。

TimeDB

TimeDB由A. Steiner于1998年開發(fā)的一個時態(tài)數(shù)據(jù)庫管理系統(tǒng) 最新版本是2.2版。TimeDB是傳統(tǒng)數(shù)據(jù)庫管理系統(tǒng)的前端軟件,用戶使用ATSQL2語句描述應(yīng)用中時態(tài)操作,然后由TimeDB轉(zhuǎn)換后形成標(biāo)準(zhǔn)SQL,這些標(biāo)準(zhǔn)SQL語句傳輸?shù)胶笈_關(guān)系數(shù)據(jù)庫中進行實際數(shù)據(jù)的操作。TimeDB初步實現(xiàn)了時態(tài)查詢、時態(tài)更新、時態(tài)視圖和部分時態(tài)完整性約束等基本時態(tài)功能,同時也兼容非時態(tài)數(shù)據(jù)操作。 TimeDB 1.0版本由Andreas使用SICStus Prolog語言開發(fā),運行在SWI Prolog環(huán)境中。TimeDB 2.0版本使用Java語言開發(fā),具有平臺無關(guān)特征;基于Java數(shù)據(jù)庫連接訪問數(shù)據(jù)庫,可以在IBM Cloudscape、Oracle數(shù)據(jù)庫sybase等多種數(shù)據(jù)庫管理系統(tǒng)之上使用;具有較友好的用戶界面;優(yōu)化了輔助表創(chuàng)建過程;具有本地調(diào)用接口TDBCI,可供Java應(yīng)用程序調(diào)用以執(zhí)行ATSQL2語句。 TimeDB 2.1版本開始使用Java SDK 1.4版本,支持Cloudscape 10; TimeDB 2.2版本加入了對Oracle 10g的支持。

tempdb

TempDB是由湯庸教授領(lǐng)導(dǎo)的時態(tài)數(shù)據(jù)庫研究小組于2002年開發(fā)研制,目前最新版本2.1版。作為國內(nèi)首個支持時態(tài)數(shù)據(jù)管理的TDBMS,TempDB在邏輯上使用雙時態(tài)數(shù)據(jù)模型,使用ATSQL2語言,支持電子政務(wù)、電子商務(wù)、決策支持等信息處理系統(tǒng)中的時態(tài)應(yīng)用;同時,TempDB在技術(shù)上基于關(guān)系數(shù)據(jù)庫管理系統(tǒng)MySQL平臺、采用JAVA語言進行底層開發(fā),具有較強的可移植性以及部署方便。相對TimeDB,而tempdb能支持基于Now語義復(fù)雜操作,支持不確定時態(tài)語義查詢;TempDB同時實現(xiàn)了運行歸并和更新歸并兩種,這樣不會出現(xiàn)時間戳相鄰而用戶定義屬性完全相同的(未可歸并)情形;TempDB能支持基于Now語義復(fù)雜操作,支持不確定時態(tài)語義查詢。此外,TempDB還提供統(tǒng)一的圖形化界面供用戶輸入語句、查看語句執(zhí)行結(jié)果和中間結(jié)果,以及檢測語句執(zhí)行時的可能出錯信息。

參考資料 >

生活家百科家居網(wǎng)