麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

關系數據庫中時間唯一索引中的間隙檢測的方法和系統(tǒng)的制作方法

文檔序號:6508148閱讀:410來源:國知局
關系數據庫中時間唯一索引中的間隙檢測的方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了實現(xiàn)和使用用于關系數據庫中時間唯一索引中的間隙檢測的技術的方法和裝置,包括計算機程序產品。在關系數據庫中提供時間唯一索引。該索引包括第一組關鍵詞,每個關鍵詞包括一個或多個非時間關鍵詞部分以及兩個時間關鍵詞部分。響應于接收到針對改變的行的插入、更新或刪除語句,識別與所改變的行具有相同的非時間關鍵詞部分的行。將所識別的行的時間關鍵詞部分與所改變的行的時間關鍵詞部分進行比較,以確定:所改變的行是否與時間更早的行和時間更晚的行直接相鄰,所改變的行與時間更早的行之間是否檢測到間隙,或者所改變的行與時間更晚的行之間是否檢測到間隙。
【專利說明】關系數據庫中時間唯一索引中的間隙檢測的方法和系統(tǒng)
【技術領域】
[0001]本發(fā)明涉及關系數據庫,并且更具體地,涉及關系數據庫中時間唯一索引中的間隙檢測。
【背景技術】
[0002]關系數據庫可以一般地描述為數據項的集合,其被組織為可以容易地從其訪問數據的一組正式描述的表。關系數據庫中使用的軟件通常稱為關系數據庫管理系統(tǒng)(RDBMS)。RDBMS的一個示例是DB2通用數據庫(DB2 UDB ),其可以從紐約Armonk的國際商業(yè)機器公司獲得。RDBMS中通常使用的一種類型的表是應用維持的時序表(Application_MaintainedTemporal Tables)。時序表包含已知對給定時間段有效的數據。例如,對客戶貸款的利率每月或每年具有特定值,但該利率在貸款的壽命期限中可能波動。數據庫服務器可以在應用維持的時序表之上處理兩種類型的約束(constraint):時間唯一性(TemporalUniqueness)和間隙消除(Gap Elimination)。
[0003]時間唯一性約束(在DB2 UDB系統(tǒng)中也稱為“無重疊(WITHOUT OVERLAPS)”約束)確保應用維持的時序表的每行描述離散的時間段,即,給定客戶的貸款利率僅具有針對貸款壽命中的任何給定時間點的一個值。
[0004]間隙消除約束(本文也稱為“無間隙(WITHOUT GAPS)”確保在用戶數據的持續(xù)期間上不存在值的間隙,即,從貸款開始直到貸款結束,不存在未記錄利率的時間點。
[0005]在某些RDBMS (諸如DB2 UDB)中,用戶可以創(chuàng)建他們自己的間隙消除觸發(fā)器或結構化查詢語言(SQL)查詢,以檢測間隙。然而,這些SQL查詢比時間唯一性復雜得多,因為間隙消除查詢需要使用聯(lián)機分析處理(0LAP)或其它分析功能,以在索引中確定“下一”和“前一”行的值,即:
[0006]SELECT*FR0M
[0007](SELECT ST0CK_ID, MAX(END_DATE)OVER(ORDER BY BEGIN_DATE)GAP_START,
[0008]LEAD(BEGIN_DATE)OVER(ORDER BY BEGIN_DATE)GAP_END FROM Tl)
[0009]WHERE GAP_START<GAP_END
[0010]此外,使用基于SQL的間隙消除方案的用戶可能得到“錯誤的肯定(falsepositives)”,因為在更新/刪除/插入(UDI)操作之后以及上述SQL語句被讀取之前,索引未被鎖定,并且這需要用戶調整查詢以匹配他們想要監(jiān)視間隙的索引。
[0011]另一可選技術是在UDI操作后執(zhí)行表的索引掃描,查找與被修改的非時間關鍵詞部分匹配的所有關鍵詞(key),并且在掃描期間確保當前行的結束時間等于下一行的開始時間。然而,這引入了鎖定與并發(fā)的問題,因為掃描必須在數據上的索引鎖定和頁面鎖定已被釋放之后發(fā)生。

【發(fā)明內容】

[0012]根據本發(fā)明的各種實施例,提供了用于關系數據庫中時間唯一索引中的間隙檢測的方法和裝置,包括計算機程序產品。在關系數據庫中提供了時間為一索引。時間唯一索引包括第一組關鍵詞。第一組關鍵詞中的每個關鍵詞包括一個或多個非時間關鍵詞部分以及兩個時間關鍵詞部分,時間關鍵詞部分指示時間開始值和時間結束值。響應于接收到與關系數據庫中的改變的行有關的插入語句、更新語句和刪除語句中的一個,在時間唯一索引中識別與所改變的行具有相同的非時間關鍵詞部分的行。將所識別的行的時間關鍵詞部分與所改變的行的時間關鍵詞部分進行比較,以確定:所改變的行是否與時間更早的行和時間更晚的行直接相鄰,所改變的行與時間更早的行之間是否檢測到間隙,或者所改變的行與時間更晚的行之間是否檢測到間隙。
[0013]下面在附圖和描述中說明本發(fā)明的一個或多個實施例的細節(jié)。從描述和附圖以及權利要求,本發(fā)明的其它特征和優(yōu)點將是明顯的。
【專利附圖】

【附圖說明】
[0014]圖1-圖8示出了根據本發(fā)明的各種實施例的、索引和間隙列表如何受各種UDI操作影響的示例。
[0015]各個附圖中同樣的參考標記指示同樣的元素。
【具體實施方式】
[0016]總述
[0017]這里描述的各個實施例涉及例如可以由RDBMS索引管理器(諸如DB2索引管理器)使用的技術,以在時間索引上的UDI操作期間維持間隙的列表。作為使用這些技術的結果,可以提高RDBMS的性能,對于時間索引上的時間UDI操作需要更少的應用開發(fā)時間,并且為用戶獲得增加的價值。
[0018]根據各個實施例,如果以下信息是已知的:所改變的行的開始時間(已知)、所改變的行的結束時間(已知)、前一行的結束時間(如果存在)、以及下一行的開始時間(如果存在),則可以在索引插入、刪除或更新(更新就是刪除后立即插入)時檢查間隙消除。
[0019]這里所使用的表述“前一行”和“下一行”是指匹配索引中的所有其它非時間關鍵詞部分的行。前一值和下一值可被用于確定所改變的行是否與該兩行在任一側上直接時間相鄰,或者是否存在空白(empty)空間(現(xiàn)有間隙)。
[0020]插入(INSERT)語句可以創(chuàng)建間隙(如果要被插入的行不與前一行或下一行直接相鄰)或者去除間隙(如果要被插入的行與前一行或下一行都直接相鄰,即,在更新(UPDATE)語句中)。
[0021]刪除(DELETE)語句可以創(chuàng)建間隙(如果要被刪除的行與前一行和下一行都直接相鄰)或去除間隙(如果要被刪除的行不與前一行或下一行直接相鄰,即,在更新語句中)。
[0022]有時,插入和刪除語句也可以延伸或分離或截斷現(xiàn)有間隙。下面將詳細描述的各種技術使用間隙檢測算法,其追蹤最小數目的已知間隙。如下面將描述的,針對常用情形優(yōu)化算法,諸如單個數據的常規(guī)插入或刪除,或者完全清除表(即“DELETE FROM T1 (從T1刪除),,)。
[0023]一些更新語句可能產生將由更新的結束消除(resolve)的臨時間隙,即,在給定表中的數據的情況下,以下更新語句"UPDATE T1SET BUS_START=BUS_START+1M0NTH, BUS_END=BUS_END+1M0NTH〃可能在許多行中產生臨時間隙,但該更新的最終結果總是沒有間隙的表。這是因為無間隙索引上的每個事務必須在索引中無間隙的情況下完成,否則事務回退(ro 11 back)。如果事務以沒有間隙的表開始,則這種索弓I上的任何數據庫操作的最終結果總是沒有間隙的表。
[0024]一旦間隙已知,則可以將間隙添加到存儲在可由可以觸及所討論的表的所有代理(agent)訪問的存儲器的共享區(qū)域中的鏈接列表。鏈接列表的元素將包括表id、對象id、索引id、非時間關鍵詞部分(或其散列值,以節(jié)省空間)、以及間隙的開始和結束時間。如果UDI操作將去除間隙,可以通過下面的算法搜索間隙列表,以找到現(xiàn)有間隙。
[0025]一旦操作完成并且已經通過語句改變所有行,則發(fā)現(xiàn)操作是否導致間隙與檢查間隙列表是否具有任何成員一樣簡單。可以在針對遲延的(deferred)唯一'丨生索引的唯一'I"生違反檢查時完成此檢查。如果操作導致間隙,則事務將被回退。
[0026]所屬【技術領域】的技術人員知道,本發(fā)明的各個方面可以實現(xiàn)為系統(tǒng)、方法或計算機程序產品。因此,本發(fā)明的各個方面可以具體實現(xiàn)為以下形式,即:完全的硬件實施方式、完全的軟件實施方式(包括固件、駐留軟件、微代碼等),或硬件和軟件方面結合的實施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實施例中,本發(fā)明的各個方面還可以實現(xiàn)為在一個或多個計算機可讀介質中的計算機程序產品的形式,該計算機可讀介質中包含計算機可讀的程序代碼。
[0027]可以采用一個或多個計算機可讀介質的任意組合。計算機可讀介質可以是計算機可讀信號介質或者計算機可讀存儲介質。計算機可讀存儲介質例如可以是——但不限于——電、磁、光、電磁、紅外線、或半導體的系統(tǒng)、裝置或器件,或者任意以上的組合。計算機可讀存儲介質的更具體的例子(非窮舉的列表)包括:具有一個或多個導線的電連接、便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質可以是任何包含或存儲程序的有形介質,該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結合使用。
[0028]計算機可讀的信號介質可以包括在基帶中或者作為載波一部分傳播的數據信號,其中承載了計算機可讀的程序代碼。這種傳播的數據信號可以采用多種形式,包括——但不限于——電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號介質還可以是計算機可讀存儲介質以外的任何計算機可讀介質,該計算機可讀介質可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結合使用的程序。
[0029]計算機可讀介質上包含的程序代碼可以用任何適當的介質傳輸,包括——但不限于——無線、有線、光纜、RF等等,或者上述的任意合適的組合。
[0030]可以以一種或多種程序設計語言的任意組合來編寫用于執(zhí)行本發(fā)明操作的計算機程序代碼,所述程序設計語言包括面向對象的程序設計語言一諸如Java、Smalltalk、C++等,還包括常規(guī)的過程式程序設計語言一諸如“C”語言或類似的程序設計語言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網絡——包括局域網(LAN)或廣域網(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網服務提供商來通過因特網連接)。
[0031]下面將參照根據本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產品的流程圖和/或框圖描述本發(fā)明。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數據處理裝置的處理器,從而生產出一種機器,使得這些計算機程序指令在通過計算機或其它可編程數據處理裝置的處理器執(zhí)行時,產生了實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。
[0032]也可以把這些計算機程序指令存儲在計算機可讀介質中,這些指令使得計算機、其它可編程數據處理裝置、或其他設備以特定方式工作,從而,存儲在計算機可讀介質中的指令就產生出包括實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的指令的制造品(article of manufacture)0
[0033]也可以把這些計算機程序指令加載到計算機、其它可編程數據處理裝置或其它設備上,以使得可以在該計算機、其它可編程數據處理裝置或其它設備上執(zhí)行一系列操作步驟,以產生計算機實現(xiàn)的處理,從而,在該計算機或其它可編程裝置上執(zhí)行的指令提供用于實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的處理。
[0034]一些說明性示例
[0035]現(xiàn)在將利用可以在RDBMS中執(zhí)行的不同類型的操作的示例說明本發(fā)明的各種實施例。為了這些示例的目的,假設存在具有關鍵詞ΚΟ、ΚΙ、K2……Kn的索引。每個關鍵詞
Κ由非時間關鍵詞部分KpO、Kpl......Κρη和用于時間開始和結束值的兩個時間關鍵詞部分
ΚρΒ和ΚρΕ組成。時間開始關鍵詞部分ΚρΒ必須小于ΚρΕ,其中ΚρΒ是包含的(inclusive)而ΚρΕ是單獨的(exclusive)·。這些限制是時間關鍵詞部分定義所固有的。對于允許ΚρΒ是單獨的或允許ΚρΕ是包含的的時間實施方式,將需要略微修改下述技術。
[0036]可以三個不同方式定義這種表中的唯一性:
[0037]非時間唯一性,其規(guī)定對于所有關鍵詞Κ,Κ的所有關鍵詞部分都是不同的。
[0038]沒有重疊的時間唯一性,其附加地規(guī)定對于所有不同對的關鍵詞Κ1和Κ2,滿足以下條件:
[0039]ο 如果 KlpB〈=K2pB,則 Κρ1Ε〈Κ2ρΒ.[0040]ο 如果 Κ1ρΕ>=Κ2ρΕ,則 Κ1ρΒ>=Κ2ρΕ.[0041]沒有重疊或間隙的時間唯一性,其附加地規(guī)定對于所有外部相同的關鍵詞(下面定義),如果存在與Κ外部相同但時間上早于Κ的前一關鍵詞PrevK,則PrevK的ΚρΕ等于Κ的ΚρΒ,并且如果存在與Κ外部相同但時間上晚于Κ的下一關鍵詞NextK,則NextK的ΚρΒ等于Κ的ΚρΕ。如果索引中的所有關鍵詞Κ滿足此要求,則索引被稱為是沒有間隙的時間唯
ο
[0042]讓我們稱其中Kp0、Kpl……Κρη等價的任意兩個關鍵詞為外部相同的關鍵詞,因為數據的當前版本將僅在滿足時間唯一性約束的表中包含一個這樣的關鍵詞。例如,假設存在具有兩個關鍵詞(Joe, ‘123’,01/01/12,02/01/12)和(Joe, ‘ 123’,02/01/12,03/01/12)的時間索弓丨,則它們是外部相同的。換言之,對于查詢該數據庫的用戶,僅存在一個值(Joe, ‘ 123’),其具有兩個有效時段,一個來自于1月至2月,一個來自于2月至3月。關鍵詞的非時間關鍵詞部分都是相同的,但時間(開始/結束)關鍵詞部分是不同的。從數據庫的角度,索引關鍵詞本身當然是完全不同的,但從時間應用的用戶的角度,它們是相同的。
[0043]無間隙檢查
[0044]如果對于給定關鍵詞K,索引不包含PrevK或NextK,則在該時間方向(更早或更晚)不需要間隙檢查。
[0045]如果索引包含索引中沒有其它與其外部相同的關鍵詞的關鍵詞K,則該關鍵詞K被稱為在任一側上沒有間隙。
[0046]完全沒有關鍵詞的索引也被稱為滿足無間隙約束和無時間重疊約束。
[0047]在某些實施例中,僅在DML (數據操縱語言)語句的執(zhí)行的結束時檢查無間隙限制。假設在選擇(SELECT)操作期間,在索引上不需要存在阻止讀取的鎖,并且對于UDI操作,在UDI操作的期間,數據庫僅鎖定修改的關鍵詞的外部相同的關鍵詞。
[0048]對于無間隙索引,索引必須在連續(xù)的狀態(tài)中開始任何事務,S卩,所有關鍵詞滿足沒有間隙和沒有重疊的時間唯一性要求。下面是在索引插入、更新和刪除語句過程期間可能創(chuàng)建間隙的幾個情況。
[0049]添加關鍵詞
[0050]此操作作為SQL語句的部分將關鍵詞添加到索引。如果新關鍵詞K具有外部相同的PrevK,其中K->KpB不等于PrevK->KpE,或者如果新關鍵詞K具有外部相同的NextK,其中K->KpE不等于NextK->KpB,則此操作可能導致在索引中出現(xiàn)間隙。
[0051]插入(INSERT)語句可以將一個或多個關鍵詞添加到索引。例如,如果超過一個關鍵詞正被添加到索引(例如作為來自SUBSELECT SQL語句的INSERT (插入)的部分),則正被插入的關鍵詞的順序未被限定。如上所述,即使插入語句的最終結果是沒有間隙的索引,插入語句也可以引入臨時間隙。為此原因,在整個插入操作完成之前,“添加關鍵詞”操作不能拋出錯誤。
[0052]通過撤銷(undo)被回退的事務的所有操作而執(zhí)行數據庫中的回退(ROLLBACK)。回退操作的一個示例是撤銷刪除操作,其等價于將關鍵詞添加到索引中。假設索引在刪除開始之前在連續(xù)的無間隙狀態(tài)中,在刪除的撤銷期間,應該在索引中不造成間隙。
[0053]將第一個關鍵詞添加到空白索引中,或者添加針對給定一組的非時間關鍵詞部分的第一個外部相同的關鍵詞將永遠不會造成間隙。可以檢測這兩種情形,或者可以在此插入語句期間禁用間隙檢測。
[0054]刪除關鍵詞
[0055]此操作作為SQL語句的部分從索引去除關鍵詞。如果所刪除的關鍵詞K具有外部相同的PrevK,其中K->KpB等于PrevK_>KpE,并且所刪除的關鍵詞具有外部相同的Nextk,其中K->KpE等于NextK-KpB,則此操作可以在索引中導致間隙的出現(xiàn)。如果所刪除的關鍵詞k緊挨在該索引中之前或之后沒有外部相同的關鍵詞,則不能造成間隙。注意,用于關鍵詞刪除的間隙檢測算法與用于關鍵詞插入的間隙檢測算法相反。
[0056]刪除語句可以從索引刪除一個或多個關鍵詞。如果正從索引刪除超過一個關鍵詞,則正被刪除的關鍵詞的順序未被限定,并且,即使刪除語句的最終結果是沒有間隙的索弓丨,刪除語句也可以引入臨時間隙。為此原因,在整個刪除操作完成之前,刪除關鍵詞的操作不能拋出錯誤。
[0057]刪除索引的最后一個關鍵詞,或者刪除針對給定一組的非時間關鍵詞部分的最后一個外部相同的關鍵詞將永遠不會造成間隙。可以檢測這兩種情況,或者在此刪除語句期間可以禁用間隙檢測。
[0058]更新操作
[0059]如在關鍵詞刪除之后插入不同的關鍵詞一樣,處理更新語句。因此,上述用于添加或刪除關鍵詞的邏輯在更新操作內發(fā)生,并且如果拋出針對間隙的錯誤,則僅在語句結束時將在關鍵詞的添加或刪除期間檢測到的任何間隙記錄在間隙列表中。
_0] 維持操作的臨時間隙的列表
[0061]通過間隙的時間范圍的開始和結束描述間隙。開始和結束值不能為空(NULL),并且不能是負無限大或正無限大。僅可以在未被當前UDI語句刪除的兩個關鍵詞值之間出現(xiàn)間隙。在一些實施例中,已知間隙的列表被維持為可查詢樹(諸如二叉樹或B樹),并且每個間隙列表一次僅可由一個數據庫工作單元讀取和寫入,并且一次將包含用于一個索引的間隙的列表。這避免了多個工作單元干擾彼此的間隙檢查。
[0062]在添加或刪除關鍵詞的操作期間找到間隙的任何時間,可以將間隙條目添加到該間隙列表。間隙條目包括非時間關鍵詞部分、間隙開始時間和間隙結束時間。間隙開始和結束時間由下一個或前一個外部相同的關鍵詞的開始或結束時間以及新添加的或刪除的關鍵詞的開始或結束時間確定。
[0063]以此方式,間隙列表將用作索引的鏡子(miiror)。索引中存在的任何值將不在間隙列表中,并且間隙列表中存在的任何間隙將不出現(xiàn)在索引中。因此,為了最小化這些間隙列表的尺寸,在添加和刪除關鍵詞時找到的間隙將與已知間隙組合,或者去除已知間隙,這取決于特定規(guī)則。
[0064]為了進一步說明這一點,請考慮以下情況A-E,下面將參照【專利附圖】
附圖
【附圖說明】它們。為了下面情況A-E中的示例的目的,假設存在連續(xù)(consistent)的索引以及特定范圍的時間關鍵詞值,其具有時間開始和結束值TO、Tl、T2、T3、T4和T5。時間范圍Τ1→T2被從索引中刪除,并被添加到間隙列表中,如圖1所示。
[0065]情況A:新添加的間隙與現(xiàn)有間隙相鄰
[0066]如果新添加的間隙與列表中的現(xiàn)有間隙相鄰(即,新間隙的ΚρΕ等于現(xiàn)有間隙的ΚρΒ,和/或新間隙的ΚρΒ等于現(xiàn)有間隙的ΚρΕ),則一側或兩側上的間隙將受此間隙的添加的影響。
[0067]情況Α1:其一個示例是是否從索引刪除時間范圍Τ0->Τ1。間隙列表包含Τ1->Τ2,此新間隙與現(xiàn)有間隙相鄰且早于現(xiàn)有間隙,但本身在列表中沒有更早的間隙。也沒有晚于Τ1的間隙,因此,值Τ0→T1的刪除將使得必須從間隙列表中去除間隙Τ1→T2,使間隙列表為空。索引此時在其中沒有間隙,因為最早的值為Τ2。因為間隙不能具有無窮大的開始或結束時間,所以如果最早或最后的值被刪除,則這具有去除了相鄰的已知間隙的效果。圖2中示出了更新的索引和間隙列表。
[0068]情況Α2:現(xiàn)在考慮從索引刪除時間范圍Τ2→T3的情況。接著,將現(xiàn)有間隙Τ1_>Τ2擴展變?yōu)閺摩?→T3的間隙。間隙列表仍然僅具有一個已知間隙,盡管已經從索引中刪除了兩個關鍵詞值。以此方式,最小數目的間隙被記錄在間隙列表中,并且其將永遠不大于索引本身中的關鍵詞的數目的一半。圖3示出了更新的索引和間隙列表。
[0069]情況A3:考虎間隙列表包含兩個間隙Τ1->Τ2和Τ3_>Τ4的情況,如圖4Α中所示。引入新間隙Τ2-Χ3,其與間隙列表中的兩個間隙都相鄰。前一間隙的ΚρΕ現(xiàn)在變?yōu)楹笠婚g隙的ΚρΕ,并且后一間隙被從列表中去除,使得間隙列表中留下單個間隙Τ1-Χ4,如圖4Β中所示。
[0070]情況Β:新添加的間隙沒有相鄰間隙
[0071]如果新添加的間隙在列表中沒有相鄰間隙,但在列表中存在更早或更晚的外部相同的關鍵詞值,這是一個新間隙。例如,如果從圖1中所示的原始索引和間隙列表,要從索引中刪除Τ3-Τ4,則此間隙將被添加到間隙列表,不會與現(xiàn)有間隙Τ1-Χ2組合或修改現(xiàn)有間隙Τ1-Χ2,如圖5中所示。
[0072]情況C:從間隙列表中刪除間隙
[0073]如果從間隙列表中刪除間隙(即,當索引關鍵詞在被刪除之后被在相同工作單元內添加回到索引),并且該間隙精確地匹配已知間隙,則從間隙列表去除該間隙。例如,如果現(xiàn)有間隙Τ1-Χ2被從如圖1所示的間隙列表中刪除,則所產生的索引和間隙列表將如圖6中的索引和間隙列表。 [0074]情況D:新刪除的間隙被完全包含在現(xiàn)有間隙內
[0075]如果新刪除的間隙被完全包含在現(xiàn)有間隙內,則間隙必須被分離為兩個,前半個間隙具有與所刪除的間隙的ΚρΒ相等的ΚρΕ,后半個間隙具有與所刪除的間隙的ΚρΕ相等的ΚρΒ。例如,如果間隙列表包含Τ1-Χ4,如圖7Α中所示,并且間隙Τ2-Χ3被去除,則間隙列表將包含Τ1-Χ2和Τ3-Χ4,如圖7Β中所示。
[0076]情況Ε:新刪除的間隙部分包含在現(xiàn)有間隙內
[0077]如果新刪除的間隙部分包含在現(xiàn)有間隙內,則現(xiàn)有間隙的開始或結束時間必須被修改,效果上縮短了已知間隙。例如,如果間隙列表包含Τ1-Χ4,如圖8Α中所示,并且間隙Τ3-Χ4被從列表去除,則現(xiàn)有間隙將變?yōu)棣?-Χ3,如圖8Β中所示。
[0078]在操作結束時,通過觀察間隙列表并看是否還存在任何元素來檢查間隙的存在將很簡單。造成間隙的索引操作將被回退,并且在此回退操作期間,可以掛起所有間隙檢查,因為回退保證索引回到其原始的連續(xù)狀態(tài)。
[0079]附圖中的流程圖和框圖顯示了根據本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產品的可能實現(xiàn)的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應當注意,在有些作為替換的實現(xiàn)中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框實際上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
[0080]這里使用的術語僅用于描述特定實施例的目的,而不意在限制本發(fā)明。如這里所使用的,單數形式也意在包含復數形式,除非上下文清楚表明不是這樣。還將理解,詞語“包括”和/或“包含”當在該說明書中使用時表示所陳述的特征、數字、步驟、操作、元素和/或組件的存在,但不排除一個或多個其它特征、數字、步驟、操作、元素、組件和/或它們的組合的存在或添加。[0081]權利要求中的所有裝置或步驟加功能元素的相應結構、材料、動作和等同體意在包括用于與具體主張的其它權利要求元素組合地執(zhí)行功能的任何結構、材料或動作。已經為了說明和描述的目的呈現(xiàn)了本發(fā)明的描述,但其不意在為是窮舉的或者將本發(fā)明限制到所公開的形式。對于本領域的技術人員而言,在不偏離本發(fā)明的范圍和精神的情況下,許多修改和改變是明顯的。例如,可以如下建模的間隙列表處理這里所描述的各種實施例:B樹、或散列表、或鏈接列表、或任何Java庫(HashMap、TreeMap等)、或XML文件等,如本領域的技術人員所熟悉的。只要遵循所述規(guī)則,算法不強制要求間隙列表(或索引或數據庫)的實施方式。為了最佳地說明本發(fā)明的原理和實際應用,以及為了使本領域的技術人員能夠針對具有適合于所想到的特定用途的各種修改的各種實施例而理解本發(fā)明,選擇和說明了實施例。
【權利要求】
1.一種用于關系數據庫中時間唯一索引中的間隙檢測的方法,包括:在關系數據庫中提供時間唯一索引,其中所述時間唯一索引包括第一組關鍵詞,其中所述第一組關鍵詞中的每個關鍵詞包括一個或多個非時間關鍵詞部分和指示時間開始值和時間結束值的兩個時間關鍵詞部分;以及響應于接收到與所述關系數據庫中的改變的行有關的插入語句、更新語句和刪除語句之一,識別所述時間唯一索引中與所改變的行具有相同非時間關鍵詞部分的行,以及將所識別的行的時間關鍵詞部分與所改變的行的時間關鍵詞部分進行比較,以確定:所改變的行是否與時間上更早的行和時間上更晚的行都直接相鄰,是否在所改變的行和時間上更早的行之間檢測到間隙,或者是否在所改變的行與時間上更晚的行之間檢測到間隙。
2.如權利要求1所述的方法,還包括:響應于檢測到間隙,將關于所述間隙的數據存儲在間隙列表中。
3.如權利要求2所述的方法,還包括:將所述間隙列表存儲在具有訪問所述關系數據庫中的所述時間唯一索引的權限的代理能夠訪問的存儲器的共享區(qū)域中。
4.如權利要求3所述的方法,其中所述間隙列表被作為可查詢樹而保持在所述存儲器中。
5.如權利要求2所述的方法`,其中所述間隙列表是鏈接列表,所述鏈接列表針對每個被檢測的間隙包含以下元素中的一個或多個:表識別符、對象識別符、索引識別符、非時間關鍵詞部分、以及所述間隙的開始和結束時間。
6.如權利要求5所述的方法,還包括:對所述元素中的至少一些進行散列化,以節(jié)省所述存儲器中的空間。
7.如權利要求2所述的方法,還包括:響應于接收到與所述關系數據庫中的改變的行有關的插入語句、更新語句和刪除語句之一,搜索所述間隙列表,以確定所述語句執(zhí)行的操作是否造成了間隙。
8.如權利要求7所述的方法,其中在針對延遲的唯一性索引的唯一性違反檢查時,執(zhí)行所述間隙列表的搜索;以及響應于確定所述操作造成了間隙,回退造成所述間隙的所述操作。
9.如權利要求2所述的方法,其中所述間隙列表一次僅能夠由一個數據庫工作單元讀取和寫入;以及所述間隙列表一次僅包含用于一個時間唯一索引的間隙。
10.如權利要求2所述的方法,還包括:當新識別的間隙被添加到所述間隙列表時,根據一組預定規(guī)則,通過組合一個或多個間隙或通過去除已知間隙來減小所述間隙列表的尺寸。
11.一種用于關系數據庫中時間唯一索引中的間隙檢測的系統(tǒng),包括用于實現(xiàn)權利要求1-10的任意方法的任意步驟的裝置。
12.一種用于關系數據庫中時間唯一索引中的間隙檢測的系統(tǒng),包括:數據儲存器,可操作來存儲關系數據庫,所述關系數據庫包括時間唯一索引,所述時間唯一索引具有第一組關鍵詞,其中所述第一組關鍵詞中的每個關鍵詞包括一個或多個非時間關鍵詞部分和指示時間開始值和時間結束值的兩個時間關鍵詞部分;以及服務器計算機,可操作來控制所述關系數據庫并可操作來執(zhí)行用于處理對來自所述關系數據庫中的數據的用戶查詢的方法動作,所述方法動作包括:響應于接收到與所述關系數據庫中的改變的行有關的插入語句、更新語句和刪除語句之一,通過所述服務器計算機識別所述時間唯一索引中與所改變的行具有相同非時間關鍵詞部分的行,以及通過所述服務器計算機將所識別的行的時間關鍵詞部分與所改變的行的時間關鍵詞部分進行比較,以確定:所改變的行是否與時間上更早的行和時間上更晚的行都直接相鄰,是否在所改變的行和時間上更早的行之間檢測到間隙,或者是否在所改變的行與時間上更晚的行之間檢測到 間隙。
【文檔編號】G06F17/30GK103631843SQ201310363334
【公開日】2014年3月12日 申請日期:2013年8月20日 優(yōu)先權日:2012年8月20日
【發(fā)明者】R.P.斯帕爾滕 申請人:國際商業(yè)機器公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 枝江市| 涿州市| 九江市| 开封市| 晋城| 琼海市| 永嘉县| 巢湖市| 古丈县| 庄浪县| 于都县| 札达县| 克山县| 玉山县| 潮州市| 渝北区| 永寿县| 琼结县| 西盟| 石楼县| 安吉县| 沈阳市| 右玉县| 乐亭县| 固安县| 阿拉善右旗| 丰原市| 磴口县| 锡林郭勒盟| 武冈市| 井冈山市| 武夷山市| 沭阳县| 洮南市| 鲜城| 宁夏| 慈溪市| 新营市| 新宁县| 任丘市| 巍山|