亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種管理數(shù)據(jù)庫索引的方法和裝置的制作方法

文檔序號:6355452閱讀:192來源:國知局
專利名稱:一種管理數(shù)據(jù)庫索引的方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明的各實施方式涉及數(shù)據(jù)庫管理,并且更具體地,涉及一種管理數(shù)據(jù)庫索引的方法、裝置和相關(guān)計算機程序產(chǎn)品。
背景技術(shù)
數(shù)據(jù)庫技術(shù)的發(fā)展為各種計算機應(yīng)用提供了強大的數(shù)據(jù)組織、數(shù)據(jù)管理和數(shù)據(jù)存儲能力。近年來,數(shù)據(jù)庫存儲容量逐漸增加并且用戶對數(shù)據(jù)庫執(zhí)行的各種操作也愈加復(fù)雜和頻繁,如何確保數(shù)據(jù)庫在可預(yù)期的響應(yīng)時間內(nèi)快速返回用戶期望的結(jié)果,這已經(jīng)成為數(shù)據(jù)庫領(lǐng)域的一個研究熱點。在現(xiàn)有的數(shù)據(jù)庫管理系統(tǒng)(DBMS)中,已經(jīng)廣泛使用了數(shù)據(jù)庫索引技術(shù),數(shù)據(jù)庫索引是對數(shù)據(jù)庫表中一列或多列的值進行排序的一種結(jié)構(gòu),使用索引可快速訪問數(shù)據(jù)庫表中 的特定信息。數(shù)據(jù)庫索引可以大大加快查詢操作的響應(yīng)速度,然而在改進查詢性能的同時,索引還可能產(chǎn)生一些負面影響。當對數(shù)據(jù)庫中的表進行數(shù)據(jù)操縱操作(S卩,DML操作,如,插入、刪除和修改)時,還可能需要更新索引。此時,數(shù)據(jù)庫管理系統(tǒng)不但需要修改數(shù)據(jù)庫的各個表中的數(shù)據(jù),還需要更新受到該DML操作影響的索引。也即,只有將數(shù)據(jù)庫中的表和受影響的索引兩者均成功更新之后,才能認為該DML操作完成。在僅成功更新數(shù)據(jù)庫中的表而尚未更新受影響的索引時,此時的索引并不能反應(yīng)數(shù)據(jù)庫的真實情況。于是,若基于其更新尚未完成的索引對表進行查詢,則可能出現(xiàn)返回結(jié)果與數(shù)據(jù)庫中存儲的最新數(shù)據(jù)不一致的情況。對于大規(guī)模數(shù)據(jù)庫,其索引可能是十分復(fù)雜的數(shù)據(jù)結(jié)構(gòu),因而更新索引所花費的時間可能會對數(shù)據(jù)庫的響應(yīng)時間產(chǎn)生不利影響。

發(fā)明內(nèi)容
因而,為了提高對索引進行管理和維護的效率,期望能夠提供一種以快速響應(yīng)方式來管理數(shù)據(jù)庫索引的方法、設(shè)備和相應(yīng)的計算機程序產(chǎn)品,并且還期望可以在盡量不改變數(shù)據(jù)庫管理系統(tǒng)現(xiàn)有設(shè)置的情況下進行操作。為此,本發(fā)明的各實施方式提供了一種采用服務(wù)索引來管理數(shù)據(jù)庫索引的方法、裝置和計算機程序產(chǎn)品。在一個實施方式中,提供了一種管理數(shù)據(jù)庫索引的方法。該方法包括創(chuàng)建主索引;創(chuàng)建至少一個服務(wù)索引,其中至少一個服務(wù)索引用于記錄主索引中將被更新節(jié)點的變化;檢測數(shù)據(jù)庫中是否出現(xiàn)涉及主索引的、針對數(shù)據(jù)庫執(zhí)行的操作;響應(yīng)于在數(shù)據(jù)庫中出現(xiàn)涉及主索引的、針對數(shù)據(jù)庫執(zhí)行的操作,利用至少一個服務(wù)索引來對主索引進行維護,其中維護是基于至少一個服務(wù)索引中記錄的、主索引中將被更新節(jié)點的變化進行的。在一個實施方式中,至少一個服務(wù)索引中的節(jié)點至少包括與主索引的節(jié)點相關(guān)聯(lián)的節(jié)點信息以及針對主索引進行的操作類型。在一個實施方式中,針對數(shù)據(jù)庫執(zhí)行的操作包括針對數(shù)據(jù)庫執(zhí)行的數(shù)據(jù)操縱操作和數(shù)據(jù)查詢操作中的至少一個。
在一個實施方式中,提供了一種管理數(shù)據(jù)庫索引的裝置。該裝置包括第一創(chuàng)建裝置,被配置用于創(chuàng)建主索引;第二創(chuàng)建裝置,被配置用于創(chuàng)建至少一個服務(wù)索引,其中至少一個服務(wù)索引用于記錄主索引中將被更新節(jié)點的變化;檢測裝置,被配置用于檢測數(shù)據(jù)庫中是否出現(xiàn)涉及主索引的、針對數(shù)據(jù)庫執(zhí)行的操作;索引裝置,被配置用于響應(yīng)于在數(shù)據(jù)庫中出現(xiàn)涉及主索引的、針對數(shù)據(jù)庫執(zhí)行的操作,利用至少一個服務(wù)索引來對主索引進行維護,其中維護是基于至少一個服務(wù)索引中記錄的、主索引中將被更新節(jié)點的變化進行的。在一個實施方式中,至少一個服務(wù)索引中的節(jié)點至少包括與主索引的節(jié)點相關(guān)聯(lián)的節(jié)點信息以及針對主索引進行的操作類型。在一個實施方式中,索引裝置包括以下至少一個操縱裝置,被配置用于在對數(shù)據(jù)庫執(zhí)行的數(shù)據(jù)操縱操作中對主索引和服務(wù)索引中的至少一項進行維護;以及查詢裝置,被 配置用于在對數(shù)據(jù)庫執(zhí)行的數(shù)據(jù)查詢操作中獲取查詢結(jié)果。采用根據(jù)本發(fā)明的各實施方式,可以通過基于主索引和至少一個服務(wù)索引來管理數(shù)據(jù)庫中的索引。并且,可以加快與數(shù)據(jù)操縱操作相關(guān)聯(lián)的更新索引的響應(yīng)速度;還可以將對查詢操作的影響最小化并且確保索引的正確性。


結(jié)合附圖并參考以下詳細說明,本發(fā)明各實施方式的特征、優(yōu)點及其他方面將變得更加明顯,在附圖中圖I是示出根據(jù)本發(fā)明一個實施方式的利用服務(wù)索引管理數(shù)據(jù)庫索引的方法的流程圖;圖2是示出根據(jù)本發(fā)明一個實施方式的用于創(chuàng)建/調(diào)整索引的方法的流程圖;圖3是示出根據(jù)本發(fā)明一個實施方式的服務(wù)索引中節(jié)點的數(shù)據(jù)結(jié)構(gòu)的示意圖;圖4是示出根據(jù)本發(fā)明一個實施方式的主索引和服務(wù)索引的樹形結(jié)構(gòu)的示意圖;圖5是示出根據(jù)本發(fā)明一個實施方式的執(zhí)行數(shù)據(jù)操縱操作的方法的流程圖;圖6是示出根據(jù)本發(fā)明一個實施方式的合并查詢主索引和服務(wù)索引所得的結(jié)果集合以獲得查詢結(jié)果的過程的示意圖;以及圖7是示出根據(jù)本發(fā)明一個實施方式的用于利用服務(wù)索引管理數(shù)據(jù)庫的裝置的框圖。
具體實施例方式下面參考附圖詳細描述本發(fā)明的各實施方式。附圖中的流程圖和框圖,圖示了按照本發(fā)明各種實施方式的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段、或代碼的一部分,所述模塊、程序段、或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當注意,在有些作為備選的實現(xiàn)中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個接連地表示的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。在一個實施方式中,可以基于快速響應(yīng)策略并利用主索引和至少一個服務(wù)索引來提高數(shù)據(jù)庫訪問速度。在一個實施方式中,響應(yīng)于涉及主索引的、針對數(shù)據(jù)庫執(zhí)行的操作,利用至少一個服務(wù)索引來對主索引進行維護。下面首先概述本發(fā)明各實施方式中某些術(shù)語的含義。
快速響應(yīng)策略快速響應(yīng)策略是指一種快速更新主索引和至少一個服務(wù)索引中的節(jié)點的策略,其原理在于,一旦至少一個服務(wù)索引和主索引中的任一項被成功更新,則認為針對數(shù)據(jù)庫進行的DML操作結(jié)束。因而采用快速響應(yīng)策略可以改進數(shù)據(jù)操作的效率。主索引本發(fā)明各實施方式中的主索引對應(yīng)于常規(guī)索弓丨,為了與服務(wù)索引相區(qū)別而將其稱為主索引。服務(wù)索引服務(wù)索引是用于記錄主索引中將被更新節(jié)點的變化的索引。與主索引數(shù)據(jù)結(jié)構(gòu)的區(qū)別在于,服務(wù)索引的節(jié)點中還包括針對主索引的操作類型(如插入或刪除)。服務(wù)索引是為主索引服務(wù)的,其節(jié)點數(shù)據(jù)是針對主索引節(jié)點的變化過程的數(shù)據(jù)。在整個索引結(jié)構(gòu)(主索引及至少一個服務(wù)索引)中,服務(wù)索引的參數(shù)及類型的定義可以獨立于主索弓丨,以便加速索引結(jié)構(gòu)的更新和維護,從而提高針對數(shù)據(jù)庫的各種數(shù)據(jù)操作的性能。應(yīng)當注意,在不同實施方式中可以基于不同的需求而設(shè)置一個或者多個服務(wù)索弓I。在一個實施方式中,全部服務(wù)索引(可以包括一個或者多個)中的節(jié)點所記錄的變化最終將被更新到主索引中。盡管在某些時刻,主索引自身并不能單獨反應(yīng)與已更新數(shù)據(jù)庫的表相對應(yīng)的索引狀態(tài)。然而至少一個服務(wù)索引和主索引可以作為一個整體運行,并反應(yīng)與已更新數(shù)據(jù)庫的表相對應(yīng)的最新索引信息。由于至少一個服務(wù)索引和主索引中的任一項被成功更新時,則認為數(shù)據(jù)操縱操作結(jié)束,這大大加快了更新數(shù)據(jù)庫索引的速度。已經(jīng)概括描述了本發(fā)明各實施方式的基本原理和應(yīng)用環(huán)境,在下文中,將參加圖I至圖7詳細描述本發(fā)明的一些實施方式。圖I是示出根據(jù)本發(fā)明一個實施方式的利用服務(wù)索引管理數(shù)據(jù)庫索引的方法的流程圖100。如步驟S102所示,首先創(chuàng)建主索引;繼而在步驟S104中,創(chuàng)建至少一個服務(wù)索引。應(yīng)當注意,此處的主索引即對應(yīng)于常規(guī)索引。在數(shù)據(jù)庫中已經(jīng)存在常規(guī)索引時,可以基于本發(fā)明的實施方式創(chuàng)建至少一個服務(wù)索引,并調(diào)整已有的常規(guī)索引適應(yīng)于本發(fā)明的實施方式;否則,可以基于本發(fā)明的實施方式創(chuàng)建主索引和至少一個服務(wù)索引。在一個實施方式中,至少一個服務(wù)索引用于記錄主索引中將被更新節(jié)點的變化。應(yīng)當注意,本發(fā)明各實施方式中的服務(wù)索引并不同于常規(guī)索引。常規(guī)索引中保存的是對數(shù)據(jù)庫表中一列或多列的值進行排序的一種結(jié)構(gòu),目的在于使用該常規(guī)索引可快速訪問數(shù)據(jù)庫表中的特定信息。而本發(fā)明各實施方式中的至少一個服務(wù)索引目的在于,記錄主索引中將被更新節(jié)點的變化,以便在主索引尚未完成更新時,可以通過主索引和至少一個服務(wù)索引計算得出數(shù)據(jù)庫中當前最新的數(shù)據(jù)。 發(fā)明人認為,針對數(shù)據(jù)庫進行DML操作時可能會導(dǎo)致需要更新數(shù)據(jù)庫索引。如果數(shù)據(jù)庫的索引規(guī)模較小,則更新該索引僅需要很少的時間。也即,更新小的索引的效率通常高于更新大的索引的效率。在某些實施方式中,采取創(chuàng)建規(guī)模小于主索引(也即對應(yīng)于常規(guī)索引)的至少一個服務(wù)索引來加快更新索引的速度,進而縮小針對數(shù)據(jù)庫的數(shù)據(jù)操作的響應(yīng)時間。然而更新小的索引的效率并不總是高于更新大的索引的效率,在某些特定情況下還會出現(xiàn)大的索引首先被更新完畢的情況。因而在一個實施方式中,可以并行地更新主索引和至少一個服務(wù)索引,以便獲得最優(yōu)的效率。在步驟S106中,檢測數(shù)據(jù)庫中是否出現(xiàn)涉及主索引的、針對數(shù)據(jù)庫執(zhí)行的操作。由于本發(fā)明的實施方式旨在于管理數(shù)據(jù)庫的索引,當針對數(shù)據(jù)庫執(zhí)行的操作并不涉及主索引時,則不屬于本發(fā)明的實施方式考慮的范圍,因而在此設(shè)置檢測步驟S106。在步驟S108中,響應(yīng)于在數(shù)據(jù)庫中出現(xiàn)涉及所述主索引的、針對所述數(shù)據(jù)庫執(zhí)行操作,利用所述至少一個服務(wù)索引來對主索引進行維護。此時,這種維護是基于所述至少一個服務(wù)索引中記錄的、所述主索引中將被更新節(jié)點的變化進行的,并且主索引和至少一個服務(wù)索引對外表現(xiàn)為一個整體,而在主索引和至少一個服務(wù)索引之間基于預(yù)定義的規(guī)則協(xié)調(diào)操作。在一個實施方式中,針對數(shù)據(jù)庫執(zhí)行操作可以包括針對數(shù)據(jù)庫執(zhí)行數(shù)據(jù)操縱操 作和數(shù)據(jù)查詢操作中的至少一個。應(yīng)當注意,在如下情況下可能涉及到對主索引的操作
(I)在對數(shù)據(jù)庫中的表進行DML操作時,對各種表進行增刪改的操作可以導(dǎo)致需要更新主索引,然而并非所有的DML操作均會導(dǎo)致更新索引。(2)在查詢數(shù)據(jù)庫時,通常針對主索引進行查詢以便加快響應(yīng)速度,因此數(shù)據(jù)查詢操作也會涉及主索引。應(yīng)當注意,在一個實施方式中,利用至少一個服務(wù)索引來對所述主索引進行維護是與針對數(shù)據(jù)庫的其他操作同步執(zhí)行的。也即,該維護操作并不排除針對數(shù)據(jù)庫執(zhí)行數(shù)據(jù)操縱操作和數(shù)據(jù)查詢操作,并且本發(fā)明提供了用于數(shù)據(jù)操縱操作和數(shù)據(jù)查詢操作的具體實施方式
。此時,兩種索引作為一個整體同步地關(guān)聯(lián)于數(shù)據(jù)庫中的數(shù)據(jù)。在一個實施方式中,當對數(shù)據(jù)庫執(zhí)行數(shù)據(jù)操縱操作和/或數(shù)據(jù)查詢操作時,主索引和至少一個服務(wù)索引作為一個整體提供快速更新數(shù)據(jù)庫索引的功能。在針對數(shù)據(jù)庫執(zhí)行其他操作的同時同步地維護主索引,一方面可以使主索引和至少一個服務(wù)索引實時地反映數(shù)據(jù)庫中的數(shù)據(jù);另一方面,相對于已經(jīng)更新了數(shù)據(jù)庫中的數(shù)據(jù)然而卻在一段時間后再維護數(shù)據(jù)庫索引的異步方式而言,本發(fā)明的同步方式無需額外的時間來維護索引,同時還不影響針對數(shù)據(jù)庫進行的其他操作。本發(fā)明實施方式的方法與常規(guī)則數(shù)據(jù)庫兼容,可以在盡量少修改現(xiàn)有數(shù)據(jù)庫管理系統(tǒng)配置的情況下實現(xiàn)。在現(xiàn)有DBMS中,存在以下涉及維護索引的數(shù)據(jù)定義語言(DDL)聲明,例如CREATE INDEX idx_name ON TABLE tb_name(columnI,;ALTER INDEX idx_name...;在一個實施方式中,可以增加關(guān)鍵字enable_fast_response和disable_fast_response。并且下文示出了根據(jù)一個實施方式的示例(I)創(chuàng)建快速響應(yīng)模式的索引CREATE INDEX idx_name on TABLE tb_name(columnI,enable_fast_response with n...;(2)將快速響應(yīng)模式的索引調(diào)整為常規(guī)模式ALTER INDEX idx_name. . . disable_fast_response...;(3)將常規(guī)模式的索引調(diào)整為快速響應(yīng)模式ALTER INDEX idx_name. . . enable_fast_response with n...;
圖2是示出根據(jù)本發(fā)明一個實施方式的用于創(chuàng)建/調(diào)整索引的方法的流程圖200。在步驟S202中,開始創(chuàng)建/調(diào)整索引的操作,并且在步驟S204中,基于上文定義的關(guān)鍵字判斷該創(chuàng)建/調(diào)整索引的操作是基于本發(fā)明實施方式的快速響應(yīng)模式還是基于常規(guī)模式。當判斷結(jié)果為“是”,則操作前進至步驟S206,以快速響應(yīng)模式創(chuàng)建/調(diào)整索引;否則,操作前進至步驟S208以常規(guī)模式創(chuàng)建/調(diào)整索引。圖3是示出根據(jù)本發(fā)明一個實施方式的服務(wù)索引中節(jié)點的數(shù)據(jù)結(jié)構(gòu)的示意圖300,這僅僅是服務(wù)索引中節(jié)點的一個示意性數(shù)據(jù)結(jié)構(gòu)。服務(wù)索引與主索引的數(shù)據(jù)結(jié)構(gòu)的區(qū)別在于,服務(wù)索引的節(jié)點中還保持針對主索引數(shù)據(jù)的操作類型(如插入或刪除)。服務(wù)索引的節(jié)點還可以采用其他的數(shù)據(jù)結(jié)構(gòu), 只要能夠反映主索引中數(shù)據(jù)的變化信息即可。在一個實施方式中,至少一個服務(wù)索引中的節(jié)點至少包括與主索引的節(jié)點相關(guān)聯(lián)的節(jié)點信息以及針對主索引進行的操作類型。如圖3所示,字段302和字段304兩者整體表示與主索引的節(jié)點相關(guān)聯(lián)的節(jié)點信息,也即分別示出為行ID 302和值304。字段306表示針對主索引進行的操作類型(例如,以“I”表示“插入”,以“D”表示“刪除”)。例如,服務(wù)索引中的一個節(jié)點可以示出為(R0,VI,I),該三元組的含義是,針對主索引進行“插入”操作,并且主索引中相關(guān)聯(lián)節(jié)點的行ID是R0,值為VI。又例如,服務(wù)索引中的一個節(jié)點可以示出為(R2,VI,D),該三元組的含義是,針對主索引進行“刪除”操作,并且主索引中相關(guān)聯(lián)節(jié)點的行ID是R2,值為VI。圖4是示出根據(jù)本發(fā)明一個實施方式的主索引和服務(wù)索引的樹形結(jié)構(gòu)的示意圖400。如圖4所示,在快速響應(yīng)模式下,索引首部可以包括主索引410,還可以包括至少一個服務(wù)索引(即服務(wù)索引一 412至服務(wù)索引N416)。服務(wù)索引的數(shù)量和類型可以基于不同需求而定制,將在下文中詳述。常規(guī)索引僅包括標記為410的主索引(即,常規(guī)索引)部分,而并不包括后續(xù)的服務(wù)索引412至416。應(yīng)當注意,服務(wù)索引可以采用類似于主索引的樹狀結(jié)構(gòu),不同之處在于服務(wù)索引的節(jié)點內(nèi)容不同于主索引。并且主索引是根據(jù)用戶對數(shù)據(jù)庫進行的DML操作隨時更新的長期存在的索引,而服務(wù)索引僅記錄針對主索引節(jié)點數(shù)據(jù)的變化過程數(shù)據(jù)。對于服務(wù)索引和主索引,相應(yīng)的節(jié)點數(shù)據(jù)可以保存在圖4的葉子節(jié)點中。在其他實施方式中,并不限于以圖4所示的存儲的方式保存主索引和至少一個服務(wù)索引,而是可以采用各種數(shù)據(jù)結(jié)構(gòu)存儲主索引和相對應(yīng)的至少一個服務(wù)索引,只要主索引和至少一個服務(wù)索引可以協(xié)調(diào)操作加速數(shù)據(jù)庫響應(yīng)即可。隨著時間的推移,服務(wù)索引中的節(jié)點相關(guān)的變化還被逐漸更新到主索引中,并且一旦服務(wù)索引中的節(jié)點相關(guān)的變化已經(jīng)被更新到主索引中后,則刪除該節(jié)點。也即,當全部服務(wù)索引中的每個節(jié)點的信息均被更新到主索引之后,服務(wù)索引可以為空(例如,服務(wù)索引一 412所示,字段412下僅有一個空的根節(jié)點422)。或者出于節(jié)約資源目的考慮,還可以刪除該服務(wù)索引。例如,直接刪除服務(wù)索引一 412和根節(jié)點422,此時服務(wù)索引二 414直接跟隨在主索引410之后。在后續(xù)的數(shù)據(jù)操縱操作導(dǎo)致需要更新主索引時,再相應(yīng)地創(chuàng)建至少一個服務(wù)索引。當對數(shù)據(jù)庫中的表進行插入操作導(dǎo)致需要對主索引進行插入操作時,可以在服務(wù)索引中加入標識為“I”類型的節(jié)點(該節(jié)點中記錄與主索引的節(jié)點相關(guān)聯(lián)的節(jié)點信息,例如,行ID和值)。當對數(shù)據(jù)庫中的表進行刪除操作導(dǎo)致需要對主索引進行刪除操作時,可以在服務(wù)索引中加入標識為“D”類型的節(jié)點。盡管僅示出了進行插入(表示為“I”)和刪除(表示為“D”),本領(lǐng)域技術(shù)人員應(yīng)當理解,修改操作可以等效為順序執(zhí)行的刪除操作和插入操作,相應(yīng)的節(jié)點中操作類型可以分別記錄為“D”和“I”。也即,可以向服務(wù)節(jié)點的樹狀結(jié)構(gòu)中分別加入刪除節(jié)點和插入節(jié)點兩者表示修改操作。在一個實施方式中,響應(yīng)于執(zhí)行數(shù)據(jù)操縱操作,并行地更新主索引和至少一個服務(wù)索引;以及響應(yīng)于至少一個服務(wù)索引和主索引中的任一項被成功更新,標記數(shù)據(jù)操縱操作結(jié)束。盡管數(shù)據(jù)庫索引可以加快數(shù)據(jù)庫對于數(shù)據(jù)操作的響應(yīng)速度,然而當數(shù)據(jù)庫索引龐大到一定程度時,對數(shù)據(jù)庫中的數(shù)據(jù)進行操作導(dǎo)致的更新數(shù)據(jù)庫索引的速度成為了影響數(shù)據(jù)庫響應(yīng)時間的瓶頸之一。本發(fā)明實施方式的方法通過創(chuàng)建用于記錄主索引中節(jié)點的數(shù)據(jù)變化過程的至少一個服務(wù)索引,并且將該至少一個服務(wù)索引與主索引作為整體來提供數(shù)據(jù)庫索引的功能。
在一個實施方式中,由于只要至少一個服務(wù)索引和主索引中的任一項被成功更新,則標記數(shù)據(jù)操縱操作結(jié)束,這可以在一定程度上縮短更新數(shù)據(jù)庫索引的時間。盡管有可能存在主索引尚未更新完畢的情況,然而此時在至少一個服務(wù)索引的輔助下,不必等到主索引更新完畢才能標記數(shù)據(jù)操縱操作結(jié)束。在一個實施方式中,并行地更新主索引和至少一個服務(wù)索引包括當主索引首先被成功更新后,停止更新至少一個服務(wù)索引。在一個實施方式中,并行地更新主索引和至少一個服務(wù)索引包括當至少一個服務(wù)索引之一首先被成功更新后,停止更新尚未被成功更新的其他服務(wù)索引;繼續(xù)更新主索引;以及當主索引被成功更新時,在被成功更新的服務(wù)索引中刪除先前被成功更新的節(jié)點?,F(xiàn)在將參見圖5詳細說明并行地更新主索引和至少一個服務(wù)索引的操作流程。圖5是示出根據(jù)本發(fā)明一個實施方式的執(zhí)行數(shù)據(jù)操縱操作的方法的流程圖500。在步驟S502中,響應(yīng)于執(zhí)行數(shù)據(jù)操縱操作,并行地更新主索引和至少一個服務(wù)索引。這里的“并行地”是指,當針對數(shù)據(jù)庫執(zhí)行的數(shù)據(jù)操作(例如,向數(shù)據(jù)庫的表中插入數(shù)據(jù)、從中刪除數(shù)據(jù)以及更新數(shù)據(jù)庫的表中的數(shù)據(jù))導(dǎo)致需要更新主索引時,在更新主索引的同時還向至少一個服務(wù)索引中插入節(jié)點,并且該節(jié)點記錄主索引中節(jié)點的將被更新的變化。在存在多個服務(wù)索引的情況下,需要并行地向該多個服務(wù)索引中插入節(jié)點。在步驟S504中,響應(yīng)于至少一個服務(wù)索引和主索引中的任一項被成功更新,標記數(shù)據(jù)操縱操作結(jié)束。繼而,在步驟S506中,判斷主索引是否首先被成功更新。這里的更新,指任何可以按現(xiàn)有方式對主索引進行的更新。當判斷結(jié)果為“是”,則操作進入步驟S508,停止更新至少一個服務(wù)索引。本發(fā)明實施方式的方法設(shè)立服務(wù)索引的目的之一在于,在更新主索引需要更長時間時,利用至少一個服務(wù)索引來記錄主索引中節(jié)點的將被更新的變化。如果步驟S506的判斷結(jié)果為“是”,則表示對主索引的更新快于對全部服務(wù)索引的更新,此時則無需服務(wù)索引參與。繼而,操作流程結(jié)束。如果步驟S506的判斷結(jié)果為“否”,表示服務(wù)索引之一首先被更新,則操作流程前進至步驟S510。圖5中右側(cè)分支的含義是,需要利用至少一個服務(wù)索引中的節(jié)點記錄所述主索引中將被更新節(jié)點的變化。進入步驟S510的先決條件是,至少一個服務(wù)索引中的一個首先被成功更新。由于此時首先被成功更新的服務(wù)索引已經(jīng)記錄了主索引中將被更新節(jié)點的變化,因而無需在其他服務(wù)索引中重復(fù)記錄這一變化。在步驟S510中,停止尚未被成功更新的其他服務(wù)索引。接著,在步驟S512中,繼續(xù)更新主索引,并且在步驟S514中,當主索引被成功更新時,在被成功更新的服務(wù)索引中刪除先前被成功更新的節(jié)點。設(shè)置服務(wù)索引的目的在于記錄將對主索引執(zhí)行的更新,由于在步驟S514中主索引已經(jīng)更新完畢,則此時無需再保留服務(wù)索引中與該更新相關(guān)的節(jié)點,因而應(yīng)當在被成功更新的服務(wù)索引中刪除先前被成功更新的節(jié)點。在一個實施方式中,并不僅限于以圖5所示的順序來實現(xiàn)數(shù)據(jù)操縱操作。而是還可以在發(fā)布操作結(jié)束(步驟S504)的同時,由其他線程判斷是主索引還是服務(wù)索引首先被更新,并相應(yīng)地執(zhí)行如步驟S508至S514的操作。在不同實施方式中,可以采用不同機制來定義服務(wù)索引中的節(jié)點與針對主索引的更新之間的對應(yīng)關(guān)系。例如,當一個服務(wù)索引首先被成功更新時,更新該服務(wù)索引的線程可以向更新主索引的線程發(fā)送消息,并告知該服務(wù)索引的標識以及被更新的節(jié)點的標識(或者位置等);當主索引更新完畢時,則基于被告知的服務(wù)索引的標識以及節(jié)點的標識(或者位置),將相應(yīng)節(jié)點刪除或者標記為無效。本領(lǐng)域技術(shù)人員還可以想到其他具體實施方式
,只要能夠在主索引中的被更新節(jié)點和服務(wù)索引中的被更新節(jié)點之間建立對應(yīng)關(guān)系即可。應(yīng)當注意,每個服務(wù)索引中的節(jié)點的數(shù)量是動態(tài)變化的。隨著對數(shù)據(jù)庫中的表執(zhí)行DML操作而導(dǎo)致需要更新主索引,向至少一個服務(wù)索引中加入記錄相應(yīng)更新的新的節(jié)點;隨著如步驟S514所示的繼續(xù)更新主索引的成功完成,在被成功更新的服務(wù)索引中刪除先前被成功更新的節(jié)點??梢岳斫猓攲?shù)據(jù)庫中的表頻繁進行DML操作時,可能會需要頻繁地更新主索引,進而使得至少一個服務(wù)索引中的節(jié)點數(shù)量增加;而當持續(xù)一段時間無需更新主索引時,由于與至少一個服務(wù)索引中的節(jié)點相關(guān)聯(lián)的變化已經(jīng)被更新到主索引中,至少一個服務(wù)索引中的節(jié)點數(shù)量會相應(yīng)地減少。在經(jīng)過特定時間后,還可能出現(xiàn)服務(wù)索引之一可能為空的情況。應(yīng)當注意,盡管此時服務(wù)索引之一為空,并不意味著本發(fā)明實施方式的方法退化成為使用常規(guī)索引(對應(yīng)于本發(fā)明中的主索引)的情況。而是,當再次出現(xiàn)需要更新主索引時,可以繼續(xù)依據(jù)上文所述的方法向服務(wù)索引中增加新的節(jié)點。本發(fā)明實施方式并不考慮那些不涉及主索引(對應(yīng)于常規(guī)索引)操作的數(shù)據(jù)庫操作。本發(fā)明的實施方式關(guān)注于如何更高效地管理數(shù)據(jù)庫的索 弓丨,進而通過加速數(shù)據(jù)庫索引的響應(yīng)來達到提高針對數(shù)據(jù)庫的數(shù)據(jù)操作的響應(yīng)速度。在一個實施方式中,當執(zhí)行數(shù)據(jù)查詢操作時,通過合并查詢主索引和至少一個服務(wù)索引所得的結(jié)果集合以獲得查詢結(jié)果。在一個實施方式中,當進行數(shù)據(jù)庫查詢時,主索引可能尚未完成更新,因而主索引自身并不能正確反映數(shù)據(jù)庫中的各個表的實際內(nèi)容。此時,需要合并查詢主索引和至少一個服務(wù)索引所得的結(jié)果集合以獲得查詢結(jié)果。至少一個服務(wù)索引記錄主索引中將被更新節(jié)點的變化,基于主索引和服務(wù)索引中的這些變化,可以計算得出當前的真實數(shù)據(jù)庫內(nèi)容。在一個實施方式中,通過合并查詢主索引和至少一個服務(wù)索引所得的結(jié)果集合以獲得查詢結(jié)果包括在主索引和至少一個服務(wù)索引中,基于操作類型而將具有相同節(jié)點信息的節(jié)點合成為一個節(jié)點。現(xiàn)在將參考圖6詳細描述,圖6是示出根據(jù)本發(fā)明一個實施方式的合并查詢主索引和服務(wù)索引所得的結(jié)果集合以獲得查詢結(jié)果的過程的示意圖600。
例如圖6左上部所示,已經(jīng)創(chuàng)建了一個主索引610和多個服務(wù)索引620(包括服務(wù)索引一至服務(wù)索引N)。在查詢時,可以按值-鍵搜索主索引610和服務(wù)索引620 (分別如箭頭A和箭頭B所示)。在上文所示以三元組(行ID,值,操作類型)的具體示例中,可以分別獲得主集合612和服務(wù)集合622。例如,主集合612為{(R0,V1,I),(R2,VI,I)},而服務(wù)集合 622 為{(Rl, VI, I), (R2,V1,D),(R3, VI, I), (R1,V1,D),(R1,V1,I)}。應(yīng)當注意,與前文所述相同,這里“I”表示插入操作,而“D”表示刪除操作。在經(jīng)過并集運算后(如箭頭C 所示),所得的結(jié)果集合 630 為{(R0,VI,I),(R2, VI, I), (Rl, VI, I), (R2,V1,D),(R3,VI,I),(R1,V1,D), (Rl, VI, I)}。由于此時服務(wù)索引中的變化信息尚未被更新至主索引中,因而需要在主索引基礎(chǔ)上結(jié)合服務(wù)索引中的節(jié)點信息才能得知數(shù)據(jù)庫的當前數(shù)據(jù)。應(yīng)當注意,在各個索引中,具有相同節(jié)點信息的節(jié)點是針對數(shù)據(jù)庫中表的相同數(shù)據(jù)項的操作。在此實施方式中,具有相同的行ID和相同值的三元組對應(yīng)于對相同數(shù)據(jù)項的操作。例如在結(jié)果集合630中,第3個三 元組(Rl,VI,I)和第6個三元組(R1,V1,D)兩者都是針對行ID為Rl、且值為Vl的數(shù)據(jù)項的操作。不同之處在于前者是插入操作而后者是刪除操作,這兩個操作可以合并。接著如箭頭D所示,將結(jié)果集合630按行ID和值排序,以便合并具有相同行ID和相同值的節(jié)點,排序后的結(jié)果集合’示出為632。此時,如結(jié)果集合’632左側(cè)括號所示,第I個三元組是針對第一數(shù)據(jù)項的操作,第2至4個三元組是針對第二數(shù)據(jù)項的操作,第5-6個三元組是針對第三數(shù)據(jù)項的操作,而最后一個三元組是針對第四數(shù)據(jù)項的操作。最后,如箭頭E所示,合成后的最終查詢結(jié)果640包括三個三元組,也即對應(yīng)于三個節(jié)點{(R0,V1,I),(Rl, VI, I),(R3,VI,I)}。應(yīng)當注意在合并操作中,針對相同節(jié)點,“I”操作和“D”操作可以相互抵消,例如在結(jié)果集合’ 632中所示的第5-6個三元組所示的操作可以相互抵消。應(yīng)當注意,本發(fā)明實施方式的方法在服務(wù)索引620為空時同樣適用,此時主索引610即可正確反映數(shù)據(jù)庫中的數(shù)據(jù)。當搜索服務(wù)索引620時,則返回的服務(wù)集合622也將為空,并且在主集合612和服務(wù)集合622的并集(即,結(jié)果集合630)中的數(shù)據(jù)即為查詢主索引610所得結(jié)果。可見,本發(fā)明實施方式的方法此時也是正確有效的?;跀?shù)據(jù)庫的各個表中數(shù)據(jù)的特征,以及基于針對數(shù)據(jù)庫中的表進行的不同類型的操作,各種類型的索引可以具有不同的操作性能。在一個實施方式中,至少一個服務(wù)索引中可以是相同類型或者不同類型。在一個實施方式中,還可以以不同參數(shù)定義至少一個服務(wù)索引中的任一項,以便滿足不同操作需要。應(yīng)當注意,以不同參數(shù)定義的服務(wù)索引可以是相同類型或者不同類型的服務(wù)索引。例如,可以采用普通索弓丨,也可以采用逆向索引。例如逆向索引適用于連續(xù)數(shù)據(jù),諸如在1、2、3、4、...這種非離散的集中式插入數(shù)據(jù)的情況下可以使用逆向索引。又例如,如果在一段時間內(nèi)插入的數(shù)據(jù)是離散的,那么可以使用普通索引;如果在一定的時間段內(nèi),產(chǎn)生的數(shù)據(jù)是連續(xù)的,并需要在一個時間段內(nèi)集中地插入連續(xù)的數(shù)據(jù),則可以使用逆向索引。具體而言,對于一個銀行的數(shù)據(jù)庫系統(tǒng),在白天的工作時間,當銀行的眾多客戶頻繁執(zhí)行存取現(xiàn)金時,需要對數(shù)據(jù)庫系統(tǒng)進行大量操作。那么在短時間內(nèi)產(chǎn)生連續(xù)插入順序數(shù)據(jù)的可能性很小(這是由于多個客戶同時進行同一類型操作的可能性較小,并且每個客戶進行操作的具體時間也不同),此時可以使用普通索引。而數(shù)據(jù)庫管理員在夜間可能會集中進行清算操作,并且該操作在短時間內(nèi)完成,此時可能會產(chǎn)生在短時間內(nèi)連續(xù)插入順序數(shù)據(jù)的情況,因而可以使用逆向索引。關(guān)于如何采用不同參數(shù)定義服務(wù)索引,本領(lǐng)域技術(shù)人員可以參考創(chuàng)建索引時涉及的各種參數(shù)的定義,根據(jù)具體情況實現(xiàn),在此不再贅述。上文已經(jīng)參見圖I至圖6詳細示出了根據(jù)本發(fā)明的方法的某些實施方式,現(xiàn)在將參考圖7說明如何實現(xiàn)相應(yīng)的裝置。圖7是示出根據(jù)本發(fā)明一個實施方式的用于利用服務(wù)索引管理數(shù)據(jù)庫的裝置的框圖700。在一個實施方式中,提供了一種管理數(shù)據(jù)庫索引的裝置,包括第一創(chuàng)建裝置710,被配置用于創(chuàng)建主索引;第二創(chuàng)建裝置720,被配置用于創(chuàng)建至少一個服務(wù)索引,其中至少一個服務(wù)索引用于記錄主索引中將被更新節(jié)點的變化;檢測裝置730,被配置用于檢測數(shù)據(jù)庫中是否出現(xiàn)涉及主索引的、針對數(shù)據(jù)庫執(zhí)行的操作;索引 裝置740,被配置用于響應(yīng)于在數(shù)據(jù)庫中出現(xiàn)涉及主索引的、針對數(shù)據(jù)庫執(zhí)行的操作,利用至少一個服務(wù)索引來對主索引進行維護,其中維護是基于至少一個服務(wù)索引中記錄的、主索引中將被更新節(jié)點的變化進行的。在一個實施方式中,至少一個服務(wù)索引中的節(jié)點至少包括與主索引的節(jié)點相關(guān)聯(lián)的節(jié)點信息以及針對主索引進行的操作類型。在一個實施方式中,索引裝置740還可以包括操縱裝置742,被配置用于在對數(shù)據(jù)庫執(zhí)行的數(shù)據(jù)操縱操作中對主索引和服務(wù)索引中的至少一項進行維護;以及查詢裝置744,被配置用于在對數(shù)據(jù)庫執(zhí)行的數(shù)據(jù)查詢操作中獲取查詢結(jié)果。在一個實施方式中,操縱裝置還包括用于響應(yīng)于執(zhí)行數(shù)據(jù)操縱操作,并行地更新主索引和至少一個服務(wù)索引的裝置;以及用于響應(yīng)于至少一個服務(wù)索引和主索引中的任一項被成功更新,標記數(shù)據(jù)操縱操作結(jié)束的裝置。在一個實施方式中,用于并行地更新主索引和至少一個服務(wù)索引的裝置包括用于當主索引首先被成功更新后,停止更新至少一個服務(wù)索引的裝置。在一個實施方式中,用于并行地更新主索引和至少一個服務(wù)索引的裝置包括用于執(zhí)行如下的裝置當至少一個服務(wù)索引之一首先被成功更新后,停止更新尚未被成功更新的其他服務(wù)索引;繼續(xù)更新主索引;以及當主索引被成功更新時,在被成功更新的服務(wù)索引中刪除先前被成功更新的節(jié)點。在一個實施方式中,查詢裝置還包括用于當執(zhí)行數(shù)據(jù)查詢操作時,通過合并查詢主索引和至少一個服務(wù)索引所得的結(jié)果集合以獲得查詢結(jié)果的裝置。在一個實施方式中,用于通過合并查詢主索引和至少一個服務(wù)索引所得的結(jié)果集合以獲得查詢結(jié)果的裝置包括用于在主索引和至少一個服務(wù)索引中,基于操作類型而將具有相同節(jié)點信息的節(jié)點合成為一個節(jié)點的裝置。在一個實施方式中,至少一個服務(wù)索引是相同類型或者不同類型。應(yīng)當注意,根據(jù)本發(fā)明各種實施方式的方法和裝置特別適用于在數(shù)據(jù)庫中存在大規(guī)模索引、并且針對數(shù)據(jù)庫的頻繁操作導(dǎo)致需要頻繁更新該大規(guī)模索引的情況。采用常規(guī)索引,當針對數(shù)據(jù)庫進行DML操作時,需要等到索引被完全更新完畢時才能標識該DML操作結(jié)束,這在時間和計算資源的利用方面都是巨大浪費。而使用根據(jù)本發(fā)明各實施方式的方法和裝置,采用創(chuàng)建多個服務(wù)索引的方式提供了一種快速響應(yīng)的管理數(shù)據(jù)庫索引的方法。該方法可以通過提高更新數(shù)據(jù)庫索引的工作效率來提高針對數(shù)據(jù)庫的數(shù)據(jù)操作的效率。本發(fā)明可以采取硬件實施方式、軟件實施方式或既包含硬件組件又包含軟件組件的實施方式的形式。在優(yōu)選實施方式中,本發(fā)明實現(xiàn)為軟件,其包括但不限于固件、駐留軟件、微代碼等。而且,本發(fā)明還可以采取可從計算機可用或計算機可讀介質(zhì)訪問的計算機程序產(chǎn)品的形式,這些介質(zhì)提供程序代碼以供計算機或任何指令執(zhí)行系統(tǒng)使用或與其結(jié)合使用。出于描述目的,計算機可用或計算機可讀機制可以是任何有形的裝置,其可以包含、存儲、通信、傳播或傳輸程序以由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或與其結(jié)合使用。介質(zhì)可以是電的、磁的、光的、電磁的、紅外線的、或半導(dǎo)體的系統(tǒng)(或裝置或器件)或傳播介質(zhì)。計算機可讀介質(zhì)的例子包括半導(dǎo)體或固態(tài)存 儲器、磁帶、可移動計算機磁盤、隨機訪問存儲器(RAM)、只讀存儲器(ROM)、硬磁盤和光盤。目前光盤的例子包括緊湊盤-只讀存儲器(CD-ROM)、壓縮盤-讀/寫(CD-R/W)和DVD。適合于存儲/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)將包括至少一個處理器,其直接地或通過系統(tǒng)總線間接地耦合到存儲器元件。存儲器元件可以包括在程序代碼的實際執(zhí)行期間所利用的本地存儲器、大容量存儲器、以及提供至少一部分程序代碼的臨時存儲以便減少執(zhí)行期間從大容量存儲器必須取回代碼的次數(shù)的高速緩存存儲器。輸入/輸出或I/O設(shè)備(包括但不限于鍵盤、顯示器、指點設(shè)備等等)可以直接地或通過中間I/o控制器耦合到系統(tǒng)。網(wǎng)絡(luò)適配器也可以耦合到系統(tǒng),以使得數(shù)據(jù)處理系統(tǒng)能夠通過中間的私有或公共網(wǎng)絡(luò)而耦合到其他數(shù)據(jù)處理系統(tǒng)或遠程打印機或存儲設(shè)備。調(diào)制解調(diào)器、線纜調(diào)制解調(diào)器以及以太網(wǎng)卡僅僅是當前可用的網(wǎng)絡(luò)適配器類型的幾個例子。從上述描述應(yīng)當理解,在不脫離本發(fā)明真實精神的情況下,可以對本發(fā)明各實施方式進行修改和變更。本說明書中的描述僅僅是用于說明性的,而不應(yīng)被認為是限制性的。本發(fā)明的范圍僅受所附權(quán)利要求書的限制。
權(quán)利要求
1.ー種管理數(shù)據(jù)庫索引的方法,包括 創(chuàng)建主索引; 創(chuàng)建至少ー個服務(wù)索引,其中所述至少一個服務(wù)索引用于記錄所述主索引中將被更新節(jié)點的變化; 檢測所述數(shù)據(jù)庫中是否出現(xiàn)涉及所述主索引的、針對所述數(shù)據(jù)庫執(zhí)行的操作; 響應(yīng)于在所述數(shù)據(jù)庫中出現(xiàn)涉及所述主索引的、針對所述數(shù)據(jù)庫執(zhí)行的操作,利用所述至少一個服務(wù)索引來對所述主索引進行維護,其中所述維護是基于所述至少一個服務(wù)索引中記錄的、所述主索引中將被更新節(jié)點的變化進行的。
2.根據(jù)權(quán)利要求I所述的方法,其中所述至少一個服務(wù)索引中的節(jié)點至少包括與所述主索引的節(jié)點相關(guān)聯(lián)的節(jié)點信息以及針對所述主索引進行的操作類型。
3.根據(jù)權(quán)利要求I或2所述的方法,其中針對所述數(shù)據(jù)庫執(zhí)行的操作包括針對所述數(shù)據(jù)庫執(zhí)行的數(shù)據(jù)操縱操作和數(shù)據(jù)查詢操作中的至少ー個。
4.根據(jù)權(quán)利要求3所述的方法,其中 響應(yīng)于執(zhí)行所述數(shù)據(jù)操縱操作,并行地更新所述主索引和所述至少一個服務(wù)索引;以及 響應(yīng)于所述至少一個服務(wù)索引和所述主索引中的任ー項被成功更新,標記所述數(shù)據(jù)操縱操作結(jié)束。
5.根據(jù)權(quán)利要求4所述的方法,其中所述并行地更新所述主索引和所述至少一個服務(wù)索引包括 當所述主索引首先被成功更新后,停止更新所述至少一個服務(wù)索引。
6.根據(jù)權(quán)利要求4所述的方法,其中所述并行地更新所述主索引和所述至少一個服務(wù)索引包括 當所述至少一個服務(wù)索引之一首先被成功更新后, 停止更新尚未被成功更新的其他服務(wù)索引; 繼續(xù)更新所述主索引;以及 當所述主索引被成功更新時,在所述被成功更新的服務(wù)索引中刪除先前被成功更新的節(jié)點。
7.根據(jù)權(quán)利要求3所述的方法,其中當執(zhí)行所述數(shù)據(jù)查詢操作時,通過合并查詢所述主索引和所述至少一個服務(wù)索引所得的結(jié)果集合以獲得所述查詢結(jié)果。
8.根據(jù)權(quán)利要求7所述的方法,其中所述通過合并查詢所述主索引和所述至少ー個服務(wù)索引所得的結(jié)果集合以獲得所述查詢結(jié)果包括 在所述主索引和所述至少一個服務(wù)索引中,基于操作類型而將具有相同節(jié)點信息的節(jié)點合成為ー個節(jié)點。
9.ー種管理數(shù)據(jù)庫索引的裝置,包括 第一創(chuàng)建裝置,被配置用于創(chuàng)建主索引; 第二創(chuàng)建裝置,被配置用于創(chuàng)建至少ー個服務(wù)索引,其中所述至少一個服務(wù)索引用于記錄所述主索引中將被更新節(jié)點的變化; 檢測裝置,被配置用于檢測所述數(shù)據(jù)庫中是否出現(xiàn)涉及所述主索引的、針對所述數(shù)據(jù)庫執(zhí)行的操作;索引裝置,被配置用于響應(yīng)于在所述數(shù)據(jù)庫中出現(xiàn)涉及所述主索引的、針對所述數(shù)據(jù)庫執(zhí)行的操作,利用所述至少一個服務(wù)索引來對所述主索引進行維護,其中所述維護是基于所述至少ー個服務(wù)索引中記錄的、所述主索引中將被更新節(jié)點的變化進行的。
10.根據(jù)權(quán)利要求9所述的裝置,其中所述至少一個服務(wù)索引中的節(jié)點至少包括與所述主索引的節(jié)點相關(guān)聯(lián)的節(jié)點信息以及針對所述主索引進行的操作類型。
11.根據(jù)權(quán)利要求9或10所述的裝置,其中所述索引裝置包括以下至少ー個 操縱裝置,被配置用于在對所述數(shù)據(jù)庫執(zhí)行的數(shù)據(jù)操縱操作中對所述主索引和所述服務(wù)索引中的至少ー項進行維護;以及 查詢裝置,被配置用于在對所述數(shù)據(jù)庫執(zhí)行的數(shù)據(jù)查詢操作中獲取查詢結(jié)果。
12.根據(jù)權(quán)利要求11所述的裝置,其中所述操縱裝置包括 用于響應(yīng)于執(zhí)行所述數(shù)據(jù)操縱操作,并行地更新所述主索引和所述至少一個服務(wù)索引的裝置;以及 用于響應(yīng)于所述至少ー個服務(wù)索引和所述主索引中的任ー項被成功更新,標記所述數(shù)據(jù)操縱操作結(jié)束的裝置。
13.根據(jù)權(quán)利要求12所述的裝置,其中用于所述并行地更新所述主索引和所述至少一個服務(wù)索引的裝置包括 用于當所述主索引首先被成功更新后,停止更新所述至少一個服務(wù)索引的裝置。
14.根據(jù)權(quán)利要求12所述的裝置,其中用于所述并行地更新所述主索引和所述至少一個服務(wù)索引的裝置包括用于執(zhí)行如下的裝置 當所述至少一個服務(wù)索引之一首先被成功更新后, 停止更新尚未被成功更新的其他服務(wù)索引; 繼續(xù)更新所述主索引;以及 當所述主索引被成功更新時,在所述被成功更新的服務(wù)索引中刪除先前被成功更新的節(jié)點。
15.根據(jù)權(quán)利要求11所述的裝置,所述查詢裝置包括用于當執(zhí)行所述數(shù)據(jù)查詢操作時,通過合并查詢所述主索引和所述至少一個服務(wù)索引所得的結(jié)果集合以獲得所述查詢結(jié)果的裝置。
16.根據(jù)權(quán)利要求15所述的裝置,其中用于所述通過合并查詢所述主索引和所述至少一個服務(wù)索引所得的結(jié)果集合以獲得所述查詢結(jié)果的裝置包括 用于在所述主索引和所述至少一個服務(wù)索引中,基于操作類型而將具有相同節(jié)點信息的節(jié)點合成為ー個節(jié)點的裝置。
全文摘要
本發(fā)明的各實施方式涉及一種管理數(shù)據(jù)庫索引的方法和裝置。在一個實施方式中,提供了一種管理數(shù)據(jù)庫索引的方法,包括創(chuàng)建主索引;創(chuàng)建至少一個服務(wù)索引,其中至少一個服務(wù)索引用于記錄主索引中將被更新節(jié)點的變化;檢測數(shù)據(jù)庫中是否出現(xiàn)涉及主索引的、針對數(shù)據(jù)庫執(zhí)行的操作;當在數(shù)據(jù)庫中出現(xiàn)涉及主索引的、針對數(shù)據(jù)庫執(zhí)行的操作時,利用至少一個服務(wù)索引來對主索引進行維護,其中維護是基于至少一個服務(wù)索引中記錄的、主索引中將被更新節(jié)點的變化進行的。在其他實施方式中,還提供了管理數(shù)據(jù)庫索引的相應(yīng)裝置。
文檔編號G06F17/30GK102651007SQ20111005157
公開日2012年8月29日 申請日期2011年2月28日 優(yōu)先權(quán)日2011年2月28日
發(fā)明者張凱, 鄒獻, 霍嘉, 高英明 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1