国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于數(shù)據(jù)庫更新管理的系統(tǒng)和方法

      文檔序號:6612474閱讀:244來源:國知局
      專利名稱:用于數(shù)據(jù)庫更新管理的系統(tǒng)和方法
      技術(shù)領(lǐng)域
      本發(fā)明一般涉及數(shù)據(jù)庫的更新管理。特別地,本發(fā)明涉及用于減少 可能發(fā)生在針對多個數(shù)據(jù)庫的更新處理中由多個并發(fā)事務(wù)所造成的死 鎖的頻率的更新管理。
      背景技術(shù)
      在執(zhí)行對多個數(shù)據(jù)庫的獨(dú)占控制中,可能發(fā)生這樣的情況也即死鎖,例如一個事務(wù)鎖定數(shù)據(jù)庫A并等待數(shù)據(jù)庫B被解鎖,而另一事務(wù) 鎖定數(shù)據(jù)庫B并等待數(shù)據(jù)庫A被解鎖,并且所述處理永遠(yuǎn)不會前進(jìn)。 當(dāng)死鎖發(fā)生時, 一般采用這樣的處理例如, 一個事務(wù)被丟棄而另一個 事務(wù)被完成,以便解決所述死鎖。常規(guī)地,為了減少這種死鎖的發(fā)生,應(yīng)用開發(fā)者已經(jīng)按以下這種方 式創(chuàng)建應(yīng)用該多個數(shù)據(jù)庫的更新順序被預(yù)先確定并且根據(jù)該順序來執(zhí) 行對這些數(shù)據(jù)庫的更新。參考圖1以提供更詳細(xì)的描述,當(dāng)有兩個數(shù)據(jù)庫(表格T1和表格 T2)時,應(yīng)用開發(fā)者預(yù)先確定表格Tl和T2按照上述所列順序更新, 并且創(chuàng)建所有應(yīng)用Al和A2,其訪問數(shù)據(jù)庫以按該順序更新數(shù)據(jù)庫。由 此,這使得可能減少死鎖的發(fā)生。在專利文獻(xiàn)1 (日本未審查專利公開(Kokai)號2005 - 122560) 中公開了一種相關(guān)技術(shù)。在專利文獻(xiàn)l中所描述的技術(shù)是用于解決在沒 有實(shí)際操作程序之前檢測死鎖的可能性的問題。該技術(shù)被配置以確定程 序?qū)?shù)據(jù)庫的訪問順序是否與預(yù)定的訪問順序相一致,并且如果確定了 該訪問順序與該預(yù)定的順序不一致則報告背離了預(yù)定的訪問順序。也 即,這是用于確定已創(chuàng)建的程序是否是根據(jù)該預(yù)定的訪問順序正確創(chuàng)建
      的技術(shù)。 發(fā)明內(nèi)容近幾年,應(yīng)用開發(fā)已經(jīng)變得更加可能通過使用現(xiàn)有組件和資源來創(chuàng)且提出了面向服務(wù)的架構(gòu)(SOA),其使客戶操作實(shí)現(xiàn)了服務(wù)/組件的靈 活組合。在這樣的基于組件的應(yīng)用開發(fā)中,死鎖頻率的增加在數(shù)據(jù)訪問實(shí)現(xiàn) 方面是個問題。死鎖頻率增加的原因是組件的靈活組合導(dǎo)致執(zhí)行次序的 改變,結(jié)果導(dǎo)致不能維持?jǐn)?shù)據(jù)庫的更新順序的一致性。在圖1中所示出的例子中,在應(yīng)用A1中組件C1和C2的執(zhí)行次序的重新配置(reshuffle) 導(dǎo)致如圖2中所示出的針對數(shù)據(jù)庫的更新順序的不一致性,結(jié)果導(dǎo)致死 鎖的發(fā)生。如上所述,避免死鎖的常規(guī)基本策略是創(chuàng)建應(yīng)用使得更新順序在共 享數(shù)據(jù)庫的各應(yīng)用之中被標(biāo)準(zhǔn)化。然而,在基于SOA的應(yīng)用中或者基 于組件的應(yīng)用中確保該順序的這種標(biāo)準(zhǔn)化是困難的,這些應(yīng)用根據(jù)操作 中的改變靈活地重新配置執(zhí)行次序。另外,在每個組件的開發(fā)中,雖然一個組件內(nèi)的更新順序可以被標(biāo) 準(zhǔn)化,但是如果用多個組件來實(shí)現(xiàn)一個處理則更新順序總體上會不可避 免地變成嵌套結(jié)構(gòu),如圖3所示。盡管數(shù)據(jù)庫的更新順序依賴于執(zhí)行數(shù)據(jù)庫訪問的各組件的組合順 序,但是關(guān)心組件的組合的人很難也理解組件內(nèi)的數(shù)據(jù)訪問的內(nèi)容。此 外,依賴于組件的內(nèi)容,不管調(diào)用組件的順序為何都對更新順序進(jìn)行標(biāo) 準(zhǔn)化可能是不可能的。由此,本發(fā)明的目的是提供一種數(shù)據(jù)庫更新管理系統(tǒng)、程序和方法, 其可以減少可能在針對多個數(shù)據(jù)庫的更新處理中發(fā)生由各事務(wù)引起的 死鎖的發(fā)生頻率。本發(fā)明的另一目的是提供一種數(shù)據(jù)庫更新管理系統(tǒng)、程序和方法, 其在事務(wù)需要以預(yù)定的順序更新數(shù)據(jù)庫時,可更新各數(shù)據(jù)庫而不必在應(yīng) 用側(cè)知道該更新順序,并且根據(jù)針對該物理數(shù)據(jù)庫的順序來實(shí)現(xiàn)該更新。為了實(shí)現(xiàn)上面所提及的目的,本發(fā)明提供一種數(shù)據(jù)庫更新管理系 統(tǒng),其用于防止在針對多個數(shù)據(jù)庫的更新處理中發(fā)生由多個并發(fā)事務(wù)所造成的死鎖。該數(shù)據(jù)庫更新管理系統(tǒng)包括訪問順序存儲單元,其用于 預(yù)先存儲對該多個數(shù)據(jù)庫的訪問順序;數(shù)據(jù)請求接收單元,其用于從該 事務(wù)接收針對待更新的數(shù)據(jù)庫中數(shù)據(jù)的數(shù)據(jù)請求;數(shù)據(jù)裝載單元,其用 于將該數(shù)據(jù)從該數(shù)據(jù)庫裝載到虛擬數(shù)據(jù)區(qū)域;已更新數(shù)據(jù)存儲單元,其 用于響應(yīng)于該虛擬數(shù)據(jù)區(qū)域中的數(shù)據(jù)被該事務(wù)更新,存儲指明已更新數(shù) 據(jù)的信息;以及數(shù)據(jù)排序單元,其用于響應(yīng)于該事務(wù)的完成根據(jù)該訪問 順序?qū)λ鎯Φ闹该饕迅聰?shù)據(jù)的信息進(jìn)行排序。使用該已排序的指明 已更新數(shù)據(jù)的信息來執(zhí)行對數(shù)據(jù)庫的更新。由此,使得有可能將各事務(wù) 間的與數(shù)據(jù)庫的更新順序有關(guān)的一致性的保證與事務(wù)相分離。優(yōu)選地,數(shù)據(jù)裝載單元每次從事務(wù)接收到數(shù)據(jù)請求時從數(shù)據(jù)庫中裝 載隸屬于該數(shù)據(jù)請求的數(shù)據(jù)。作為替代,該數(shù)據(jù)裝載單元可以被如此配 置使得響應(yīng)于事務(wù)的開始從數(shù)據(jù)庫中集體地裝載由該事務(wù)所請求的全 部數(shù)據(jù)。該事務(wù)更新已裝載到虛擬數(shù)據(jù)區(qū)域的數(shù)據(jù)。當(dāng)該事務(wù)包括多個組件 時,相同的虛擬數(shù)據(jù)區(qū)域被用于來自在相同事務(wù)中處理的組件的數(shù)據(jù)請 求。由此,有可能在相同的事務(wù)中處理的各組件之間傳遞數(shù)據(jù)。可以如此配置使得根據(jù)已裝載到虛擬數(shù)據(jù)區(qū)域的數(shù)據(jù)被更新,在已 更新數(shù)據(jù)存儲單元中設(shè)置對應(yīng)于該數(shù)據(jù)的更新標(biāo)記。由此,可以指明已 更新的數(shù)據(jù)。優(yōu)選地,該數(shù)據(jù)庫更新管理系統(tǒng)可以還包括鎖定管理單元,其用于 確定從數(shù)據(jù)庫裝載的數(shù)據(jù)是否被其它事務(wù)更新。該鎖定管理單元可以被 配置成使得具有更新時間存儲單元,其用于響應(yīng)于從數(shù)據(jù)庫裝載隸屬于 數(shù)據(jù)請求的數(shù)據(jù)而存儲所獲取的數(shù)據(jù)的更新時間,并且在更新數(shù)據(jù)庫時 通過比較所存儲的更新時間和從數(shù)據(jù)庫裝載的數(shù)據(jù)的更新時間來再次 確定該數(shù)據(jù)是否被另一事務(wù)更新。
      優(yōu)選地,該數(shù)據(jù)庫更新管理系統(tǒng)可以包括用于監(jiān)視事務(wù)是否完成的事務(wù)監(jiān)視單元。該事務(wù)監(jiān)視單元響應(yīng)于^r測到事務(wù)的完成來啟動數(shù)據(jù)庫的更新處理。優(yōu)選地,該數(shù)據(jù)庫更新管理系統(tǒng)使用已排序的指明了已更新數(shù)據(jù)的 信息來創(chuàng)建更新命令,以便將該更新命令發(fā)出給數(shù)據(jù)庫。如上面所提及,盡管本發(fā)明的要點(diǎn)已經(jīng)被描述為數(shù)據(jù)庫更新管理系 統(tǒng),但是本發(fā)明還可被領(lǐng)會成一種方法或程序(或程序產(chǎn)品)。該程序介質(zhì)。應(yīng)當(dāng)注意,本發(fā)明的上述概要沒有列舉所有的本發(fā)明所需要的特


      圖1說明了一種用于避免死鎖的常規(guī)方法;圖2說明用于避免死鎖的常規(guī)方法存在的問題;圖3說明用于避免死鎖的常規(guī)方法存在的問題;圖4說明根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)庫更新管理系統(tǒng)的概貌的例子;圖5說明根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)庫更新管理系統(tǒng),其被歸類成 功能塊;圖6說明根據(jù)本發(fā)明的實(shí)施例的已更新數(shù)據(jù)存儲單元的配置例子; 圖7說明根據(jù)本發(fā)明的實(shí)施例的已更新數(shù)據(jù)存儲單元的另 一配置例子;圖8說明一種用于根據(jù)預(yù)定的訪問順序?qū)⒂墒聞?wù)以任意順序更新了 的數(shù)據(jù)反射給數(shù)據(jù)庫的機(jī)制;圖9說明根據(jù)本發(fā)明的實(shí)施例的更新時間存儲單元的配置例子; 圖10是示出根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)庫的更新處理的流程圖;以及圖11說明根據(jù)本發(fā)明的實(shí)施例的用作應(yīng)用服務(wù)器和客戶端計算機(jī)
      的信息處理裝置的硬件配置的例子。
      具體實(shí)施方式
      在下文中,雖然將基于附圖詳細(xì)描述實(shí)現(xiàn)本發(fā)明的最佳方式,但是 下面所描述的各實(shí)施例并不旨在限制根據(jù)權(quán)利要求所述的本發(fā)明,并且 在各實(shí)施例中所描述的特征的所有組合并不必然是解決本發(fā)明的方法 的要素。另外,本發(fā)明可以用許多不同的方式來實(shí)現(xiàn),并且本發(fā)明不應(yīng)當(dāng)被 解釋為局限于各實(shí)施例中的描迷內(nèi)容。還應(yīng)當(dāng)注意,在各實(shí)施例中所描 述的特征的所有組合并不必然是解決本發(fā)明的方法的要素。貫穿各實(shí)施 例中的描述,相同的標(biāo)號表示相同的部件。圖4示出根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)庫更新管理系統(tǒng)的概貌的例子。應(yīng)用服務(wù)器100被連接到客戶端計算機(jī)200和數(shù)據(jù)庫300。該數(shù)據(jù) 庫更新管理系統(tǒng)用作應(yīng)用服務(wù)器100的一部分。用戶從客戶端計算機(jī) 200調(diào)用數(shù)據(jù)庫應(yīng)用以訪問數(shù)據(jù)庫300。該數(shù)據(jù)庫更新管理系統(tǒng)對從該 數(shù)據(jù)庫應(yīng)用到數(shù)據(jù)庫300的訪問進(jìn)行管理。戶端計算機(jī)200的信息處理裝置1100的硬件配置。該信息處理裝置包 括中央處理單元(CPU) l和主存儲器4。 CPU l和主存儲器4通過總 線2連接到作為輔助存儲器的硬盤設(shè)備13。此外,諸如軟盤驅(qū)動器20、 MO驅(qū)動器28、或CR-ROM驅(qū)動器26和29之類的可移除存儲裝置(在 其中記錄介質(zhì)可被更換的外部存儲系統(tǒng))通過相關(guān)聯(lián)的軟盤控制器19、 IDE控制器25或SCSI控制器27連接到總線2。諸如軟盤驅(qū)動器20、 MO驅(qū)動器28、或CR-ROM驅(qū)動器26和29 之類的可移除存儲裝置可分別在其中插入諸如軟盤、MO、 CD-ROM之 類的存儲介質(zhì),并且這種軟盤或類似物、硬盤驅(qū)動器13、或ROM 14 可以記錄計算機(jī)程序的代碼,其用于提供指令給CPU等與操作系統(tǒng)協(xié) 作以實(shí)現(xiàn)本發(fā)明。該計算機(jī)程序是通過被裝載到主存儲器4來執(zhí)行的。 該計算機(jī)程序可以被壓縮或者還可以被分成多片以記錄在多個介質(zhì)中。
      該信息處理裝置還可以具有諸如鼠標(biāo)等之類的指示設(shè)備7、鍵盤6 和用于向用戶呈現(xiàn)可視數(shù)據(jù)的顯示器12作為用戶接口硬件。另外,可 以通過并行口 16將其連接到打印機(jī)(未示出)或者通過串行口 15將其 連接到調(diào)制解調(diào)器(未示出)。服務(wù)器100通過串行口 15和調(diào)制解調(diào)器 或者通過通信適配器18 (諸如以太網(wǎng)(注冊商標(biāo))卡或令牌環(huán)卡)或類 似物連接到網(wǎng)絡(luò),從而能夠與其它計算機(jī)或類似物進(jìn)行通信。揚(yáng)聲器23通過放大器22接收由音頻控制器21進(jìn)行過D/A轉(zhuǎn)換(數(shù) 字/模擬轉(zhuǎn)換)的音頻信號,并且將它作為音頻輸出。另外,音頻控制器 21使得有可能對從麥克風(fēng)24接收到的音頻信息進(jìn)行A/D轉(zhuǎn)換(模擬/ 數(shù)字轉(zhuǎn)換),由此將系統(tǒng)外部的音頻信息取進(jìn)系統(tǒng)。根據(jù)上面所描述的解釋,容易理解本發(fā)明的實(shí)施例中的信息處理 裝置是通過諸如大型機(jī)、工作站或通用個人計算機(jī)(PC)或它們的組合 之類的信息處理裝置來實(shí)現(xiàn)的。然而,這些組件是說明性的并且所有這 些組件對于本發(fā)明并不必然是必要的。本領(lǐng)域的普通技術(shù)人員可以容易想到各種各樣的修改,諸如組合多 個機(jī)器以及給它們分配功能用于實(shí)現(xiàn)在本發(fā)明的實(shí)施例中所使用的信 息處理器的各硬件組件,而且這些變化自然在本發(fā)明的思想所包括的概 念內(nèi)。根據(jù)本發(fā)明的實(shí)施例的應(yīng)用服務(wù)器100和客戶端計算機(jī)200可以使 用由微軟公司所提供的Windows (注冊商標(biāo))操作系統(tǒng),由國際商業(yè)機(jī) 器公司所提供的AIX (注冊商標(biāo))z/OS (注冊商標(biāo))、由蘋果計算機(jī)公 司所提供的Mac OS、或者諸如Linux (注冊商標(biāo))之類的支持GUI多 窗口環(huán)境的那些操作系統(tǒng)作為操作系統(tǒng)。另外,客戶端計算機(jī)200和應(yīng)用服務(wù)器100可以使用諸如由國際商 業(yè)機(jī)器公司所提供的PC-DOS或由微軟公司所提供的MS-DOS之類的支持基于字符的環(huán)境的那些操作系統(tǒng)作為操作系統(tǒng)。此外,根據(jù)本發(fā)明 的實(shí)施例的客戶端計算機(jī)200和應(yīng)用服務(wù)器100還可使用被并入網(wǎng)絡(luò)計 算機(jī)中的操作系統(tǒng),諸如由國際商業(yè)機(jī)器公司提供的OS/Open、由Wind River Systems公司提供的諸如Vx Works之類的實(shí)時OS、或Java (注冊
      商標(biāo))OS。如上面所提及,應(yīng)當(dāng)理解,根據(jù)本發(fā)明的實(shí)施例的客戶端計算機(jī)200 和應(yīng)用服務(wù)器100不限于特定的操作系統(tǒng)環(huán)境。顯然,客戶端計算機(jī)200 和應(yīng)用服務(wù)器100可以分別工作在彼此不同的操作系統(tǒng)環(huán)境中。圖5示出根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)庫更新管理系統(tǒng)110,其被歸 類成功能塊。在具有圖11中所例示的硬件配置的信息處理裝置中,通 過將存儲在硬盤驅(qū)動器13或類似物中的待被讀入CPU 1中的操作系統(tǒng) 或計算機(jī)程序裝載進(jìn)主存儲器14,可以實(shí)現(xiàn)圖5的功能框圖中所示出的 每個部件,并且使硬件資源和軟件協(xié)同工作。該數(shù)據(jù)庫更新管理系統(tǒng)110包括訪問順序存儲單元lll、數(shù)據(jù)請 求接收單元112、數(shù)據(jù)區(qū)域初始化單元113、虛擬數(shù)據(jù)區(qū)域114、數(shù)據(jù)裝 載單元115、已更新數(shù)據(jù)存儲單元116、事務(wù)監(jiān)視單元117、命令發(fā)出單 元118、數(shù)據(jù)排序單元119、鎖定管理單元120、和更新時間存儲單元 121。該訪問順序存儲單元111預(yù)先存儲訪問順序,其代表用于對多個數(shù) 據(jù)庫的訪問的順序。只要該訪問順序是唯一的,則它可以是任意順序。 例如,如果有三個表格,表格T1、表格T2和表格T3,并確定了以上 述所列順序來訪問它們,則該訪問順序存儲單元111以該順序來存儲表 格名字Tl、 T2和T3。該數(shù)據(jù)請求接收單元112從數(shù)據(jù)庫應(yīng)用210的事務(wù)接收針對將由該 應(yīng)用更新的數(shù)據(jù)庫300中的數(shù)據(jù)的數(shù)據(jù)請求。由此,該更新管理系統(tǒng)110 可以識別應(yīng)用210需要例如表格T1中的數(shù)據(jù)。該數(shù)據(jù)裝載單元115響應(yīng)于數(shù)據(jù)請求接收單元112從應(yīng)用210的事 務(wù)接收到數(shù)據(jù)請求,將該事務(wù)所請求的數(shù)據(jù)從數(shù)據(jù)庫300裝載到虛擬數(shù) 據(jù)區(qū)域114。在基于該數(shù)據(jù)請求來裝載數(shù)據(jù)的步驟中,數(shù)據(jù)裝載單元115 不獲取對由DBMS (數(shù)據(jù)管理系統(tǒng))所提供的目標(biāo)數(shù)據(jù)的物理鎖定。在隸屬于數(shù)據(jù)請求的數(shù)據(jù)還未被裝載到虛擬數(shù)據(jù)區(qū)域114的條件 下,每當(dāng)從事務(wù)接收到數(shù)據(jù)請求時,優(yōu)選地執(zhí)行從數(shù)據(jù)庫300中裝載數(shù) 據(jù)。 然而,基于對可用存儲器容量或優(yōu)化來自/去往數(shù)據(jù)庫的輸出/輸入 的考慮,數(shù)據(jù)裝載單元115可以被配置成響應(yīng)于事務(wù)的開始從數(shù)據(jù)庫 300中集體地裝載該事務(wù)所請求的所有數(shù)據(jù)。這可以通過預(yù)先存儲事務(wù)所需要的數(shù)據(jù)的列表和獲取該數(shù)據(jù)列表的數(shù)據(jù)請求接收單元112來實(shí)現(xiàn)。數(shù)據(jù)區(qū)域初始化單元113對事務(wù)所請求的數(shù)據(jù)應(yīng)當(dāng)被裝載到的虛擬 數(shù)據(jù)區(qū)域114進(jìn)行初始化,以將它設(shè)置為數(shù)據(jù)可以被裝載的狀態(tài)。虛擬 數(shù)據(jù)區(qū)域114可以^皮構(gòu)建成例如在Java (注冊商標(biāo))堆棧上的例子。該 事務(wù)訪問并更新在虛擬數(shù)據(jù)區(qū)域114中的數(shù)據(jù)。如果該事務(wù)已經(jīng)更新了 虛擬數(shù)據(jù)區(qū)域114中的數(shù)據(jù),則該更新不被立即反射給數(shù)據(jù)庫300,而 是僅被保持在虛擬數(shù)據(jù)區(qū)域114中直到該事務(wù)完成為止。更新包括對數(shù) 據(jù)的修改以及對其的刪除和插入。如果該事務(wù)是由多個組件組成,則在相同事務(wù)中的這些組件屬于相 同的線程。至于來自相同事務(wù)里處理的組件的數(shù)據(jù)請求,相同的虛擬數(shù) 據(jù)區(qū)域114被分配和被使用。由此,當(dāng)在屬于相同事務(wù)的各組件中首次 被執(zhí)行的一個組件更新數(shù)據(jù)時,更新管理系統(tǒng)110可以將已更新數(shù)據(jù)提 供給后來被執(zhí)行的組件,而不需要從數(shù)據(jù)庫300中裝載該數(shù)據(jù)。如果被裝載到虛擬數(shù)據(jù)區(qū)域114的數(shù)據(jù)被應(yīng)用210更新,則已更新 數(shù)據(jù)存儲單元116存儲指明了已更新數(shù)據(jù)的信息。例如,指明了已更新 數(shù)據(jù)的信息是包括已更新數(shù)據(jù)的表格或數(shù)據(jù)記錄的標(biāo)識符。圖6示出根 據(jù)本發(fā)明的實(shí)施例的已更新數(shù)據(jù)存儲單元116的配置例子。這個例子示 出,表格T2的數(shù)據(jù)記錄R2已經(jīng)被更新,以及表格Tl的數(shù)據(jù)記錄R3 隨后已經(jīng);波更新。圖7示出根據(jù)本發(fā)明的實(shí)施例的已更新數(shù)據(jù)存儲單元116的另一配 置例子。像圖6的配置例子一樣,這個例子示出,表格T2的數(shù)據(jù)記錄 R2已經(jīng)被更新,接著表格T1的數(shù)據(jù)記錄R3已經(jīng)被更新。這個配置例提供了對應(yīng)著每個數(shù)據(jù)記錄的標(biāo)記區(qū)域,并且通過使用該更新標(biāo)記來指 明已更新數(shù)據(jù)記錄。在這個例子中,雖然更新標(biāo)記是按數(shù)據(jù)記錄來提供,
      但是它也可以按欄來提供。事務(wù)監(jiān)視單元117監(jiān)視該應(yīng)用的更新事務(wù)是否完成。根據(jù)對該更新 事務(wù)的完成的檢測,對數(shù)據(jù)庫的更新處理被啟動。命令發(fā)出單元118使用更新事務(wù)的完成作為觸發(fā)以將由該事務(wù)所更新的數(shù)據(jù)集體地反射給數(shù)據(jù)庫300。通過向數(shù)據(jù)庫發(fā)出諸如SQL之類的 更新命令來執(zhí)行對數(shù)據(jù)庫300的反射。如果DBMS提供優(yōu)化功能用于 以塊的形式集體地更新,諸如批處理更新,則該命令發(fā)出單元118可以 通過使用該功能高效地執(zhí)行對數(shù)據(jù)庫300的反射。必須根據(jù)預(yù)定的訪問順序發(fā)出更新命令,以1更避免發(fā)生死鎖。與下 面所描述的數(shù)據(jù)排序單元119相協(xié)作地實(shí)現(xiàn)根據(jù)訪問順序發(fā)出更新命 令。該數(shù)據(jù)排序單元119對被存儲在已更新數(shù)據(jù)存儲單元116中的信息 進(jìn)行排序,用于指明由該事務(wù)根據(jù)存儲在訪問順序存儲單元111中的訪 問順序更新數(shù)據(jù)。參考圖8,那里描述了一種用于根據(jù)預(yù)定的訪問順序?qū)⒂墒聞?wù)按任 意順序更新的數(shù)據(jù)反射給數(shù)據(jù)庫300的機(jī)制。該訪問順序存儲單元111 表示在對數(shù)據(jù)庫的更新處理中應(yīng)當(dāng)按哪個順序來訪問表格Tl和表格 T2。應(yīng)用210被創(chuàng)建,而不需要知道那個更新順序,并且因此它首先對 展開在虛擬數(shù)據(jù)區(qū)域114的表格T2的數(shù)據(jù)記錄R2中的數(shù)據(jù)進(jìn)行更新, 并接著更新表格T1的數(shù)據(jù)記錄R3中的數(shù)據(jù)。作為結(jié)果,條目"T2 'R2" 和"T1 .R3"按由事務(wù)所更新的順序存儲在已更新數(shù)據(jù)存儲單元116中。響應(yīng)于該事務(wù)的完成,該數(shù)據(jù)排序單元119根據(jù)訪問順序存儲單元 111中的順序來對已更新數(shù)據(jù)存儲單元116中的內(nèi)容進(jìn)行排序。命令發(fā) 出單元118通過參考已更新數(shù)據(jù)存儲單元116的已排序的內(nèi)容以及取回 虛擬數(shù)據(jù)區(qū)域114中的數(shù)據(jù),創(chuàng)建待發(fā)出給數(shù)據(jù)庫300的更新命令。在針對數(shù)據(jù)庫執(zhí)行更新處理時,需要執(zhí)行針對目標(biāo)數(shù)據(jù)的獨(dú)占控 制。然而,如上所述,數(shù)據(jù)裝載單元115不獲取對基于來自事務(wù)的數(shù)據(jù) 請求從數(shù)據(jù)庫300裝載數(shù)據(jù)的物理鎖定。接著,在執(zhí)行對數(shù)據(jù)庫300的 更新處理時,需要通過使用另一方法來實(shí)現(xiàn)獨(dú)占控制。在本發(fā)明的實(shí)施
      例中,鎖定管理單元120提供了一種獨(dú)占控制功能。鎖定管理單元120確定當(dāng)從數(shù)據(jù)庫300中裝載的數(shù)據(jù)被一事務(wù)處理 時該數(shù)據(jù)是否已經(jīng)被數(shù)據(jù)庫300上的另一事務(wù)所更新。當(dāng)從數(shù)據(jù)庫300 裝載該事務(wù)所請求的數(shù)據(jù)時,鎖定管理單元120還裝載保持在數(shù)據(jù)庫 300上的時間,其指示該數(shù)據(jù)先前在何時已經(jīng)^皮更新。鎖定管理單元120 將所獲取的更新時間存儲在連接到鎖定管理單元的更新時間存儲單元 121中。圖9示出根據(jù)本發(fā)明的實(shí)施例的更新時間存儲單元121的配置例 子。在這個例子中,已經(jīng)從數(shù)據(jù)庫300中裝載了表格T2的數(shù)據(jù)記錄R2 和表格T1的數(shù)據(jù)記錄R3。它也表示,先前已經(jīng)分別在時間1和時間2 處在數(shù)據(jù)庫300上更新了表格T2的數(shù)據(jù)記錄R2和表格Tl的數(shù)據(jù)記錄 R3。當(dāng)打算將該事務(wù)所更新的表格T2的數(shù)據(jù)記錄R2反射到數(shù)據(jù)庫300 時,鎖定管理單元120再次從數(shù)據(jù)庫300中裝載數(shù)據(jù)記錄R2的更新時 間3。鎖定管理單元120接著比較存儲在更新時間存儲單元121中的更 新時間1和新獲取的更新時間3。如果這兩個時間彼此一致,則鎖定管 理單元120就確定該數(shù)據(jù)記錄還沒有被另一事務(wù)更新過。相反,如果這 兩個時間彼此不一致,則鎖定管理單元120就確定該數(shù)據(jù)記錄已經(jīng)被另 一事務(wù)更新過。圖10是描述根據(jù)本發(fā)明的實(shí)施例的對數(shù)據(jù)庫的更新處理的流程圖 1000。該處理始于步驟IOOI,其中預(yù)先確定對多個數(shù)據(jù)庫的訪問順序并 將其存儲在訪問順序存儲單元111中。數(shù)據(jù)請求接收單元112從事務(wù)接收對數(shù)據(jù)庫300中待更新的數(shù)據(jù)的 數(shù)據(jù)請求(步驟1002)。響應(yīng)于數(shù)據(jù)請求接收單元112接收到該數(shù)據(jù)請 求,數(shù)據(jù)區(qū)域初始化單元113初始化/設(shè)置虛擬數(shù)據(jù)區(qū)域114,其中數(shù)據(jù) 隸屬于待^皮展開的數(shù)據(jù)請求(步驟1003 )。同樣,響應(yīng)于數(shù)據(jù)請求接收單元112接收該數(shù)據(jù)請求,數(shù)據(jù)裝載單 元115從數(shù)據(jù)庫300中將隸屬于該數(shù)據(jù)請求的數(shù)據(jù)裝載到虛擬數(shù)據(jù)區(qū)域 114 (步驟1004)。在這一步驟處,不獲取用于獨(dú)占控制的物理鎖定。作 為替代,當(dāng)從數(shù)據(jù)庫300中裝載數(shù)據(jù)時,數(shù)據(jù)裝載單元115還裝載該數(shù) 據(jù)的更新時間,并在連接到鎖定管理單元120的更新時間存儲單元121 中存儲所獲取的更新時間(步驟1005 )。應(yīng)用210訪問并更新在虛擬數(shù)據(jù)區(qū)域114中展開的數(shù)據(jù)。在步驟 1006處,用于管理虛擬數(shù)據(jù)區(qū)域114的程序(未示出)監(jiān)視虛擬數(shù)據(jù)區(qū) 域114中的數(shù)據(jù)是否被應(yīng)用210中的事務(wù)更新。如果檢測到數(shù)據(jù)被更新(步驟1006處的"是"分支),則用于管理虛擬數(shù)據(jù)區(qū)域114的程序存 儲在已更新數(shù)據(jù)存儲單元116中存儲指明已更新數(shù)據(jù)的信息(步驟 1007)。接著,該處理前進(jìn)到步驟1008。相反,如果數(shù)據(jù)未被更新(步 驟1006處的"否"分支),則該處理直接前進(jìn)到步驟1008。在步驟1008處,事務(wù)監(jiān)視單元117監(jiān)視該事務(wù)是否完成。如果該 事務(wù)監(jiān)視單元117檢測到更新事務(wù)的完成(步驟1008處的"是"分支), 則該處理前進(jìn)到步驟1009,并且在存在已更新數(shù)據(jù)的情況下(步驟1009 處的"是,,分支)啟動針對數(shù)據(jù)庫300的更新處理(步驟IOIO)。如果 不存在已更新數(shù)據(jù),則該處理結(jié)束。相反,如果該事務(wù)監(jiān)視單元117沒 有檢測到更新事務(wù)的完成(步驟1008處的"否,,分支),則該處理返回 到步驟1006以等待事務(wù)的完成。響應(yīng)于針對數(shù)據(jù)庫300的更新處理被啟動,鎖定管理單元120通過 數(shù)據(jù)裝載單元115從數(shù)據(jù)庫300中獲取作為更新目標(biāo)的數(shù)據(jù)的更新時間(步驟1011 )。此刻,由DBMS所提供的物理鎖定被獲取。鎖定管理單時間一致(步驟1012 )。如果這兩個時間彼此一致(步驟1012處的"是" 分支),則意味著從自數(shù)據(jù)庫300中獲取該數(shù)據(jù)的時刻開始直到目前為 止在數(shù)據(jù)庫300上該數(shù)據(jù)還沒有被另一事務(wù)更新,從而該處理前進(jìn)到步 驟1013并且準(zhǔn)備針對數(shù)據(jù)庫300的更新命令。相反,如果這兩個更新時間彼此不一致(步驟1012處的"否"分 支),則意味著該數(shù)據(jù)已經(jīng)被另一事務(wù)更新,從而該處理前進(jìn)到步驟 1015。在步驟1015處,執(zhí)行當(dāng)發(fā)生獨(dú)占錯誤時的處理,其是預(yù)先設(shè)置 的。這個設(shè)置內(nèi)容一般在設(shè)計應(yīng)用時進(jìn)行確定,并且在執(zhí)行時通過使用
      用于數(shù)據(jù)庫更新管理系統(tǒng)的定義文件等來執(zhí)行該設(shè)置。在發(fā)生獨(dú)占錯誤 時的處理的例子包括發(fā)出回退、強(qiáng)迫進(jìn)行更新而不管發(fā)生了獨(dú)占錯誤,等等。在步驟1013處,數(shù)據(jù)排序單元119根據(jù)在訪問順序存儲單元111 中所存儲的訪問順序,對存儲在已更新數(shù)據(jù)存儲單元116中的指明已更 新數(shù)據(jù)的信息進(jìn)行排序。接著,命令發(fā)出單元118通過參考已排序信息 并取回虛擬數(shù)據(jù)區(qū)域114中的數(shù)據(jù),創(chuàng)建并發(fā)出給數(shù)據(jù)庫300的更新命 令(步驟1014)。如上面所描述,根據(jù)本發(fā)明,如果事務(wù)需要以預(yù)定順序來更新數(shù)據(jù) 庫,則為了減少死鎖的發(fā)生頻率,可以在不知道更新順序的情況下更新 數(shù)據(jù)庫,而該更新可以根據(jù)用于物理數(shù)據(jù)庫的順序來實(shí)現(xiàn)。本發(fā)明可以被實(shí)現(xiàn)成硬件、軟件或硬件和軟件的組合。在使用石更件 和軟件的組合的執(zhí)行中,說明性的例子包括在具有預(yù)定程序的數(shù)據(jù)處理 系統(tǒng)中的執(zhí)行。在這種情況下,通過將預(yù)定程序裝載到該數(shù)據(jù)處理系統(tǒng) 并執(zhí)行,該程序控制該數(shù)據(jù)處理系統(tǒng)并執(zhí)行根據(jù)本發(fā)明的處理。該程序 由一組可以由任意語言、代碼和符號來表述的指令組成。該組指令直接 地或者在以下兩個步驟之一或全部步驟之后允許系統(tǒng)執(zhí)行某個功能 (l)轉(zhuǎn)換到不同的語言、代碼、或符號,以及(2)實(shí)現(xiàn)復(fù)制到不同的 介質(zhì)。很明顯,本發(fā)明不僅包括這種程序自身而且還包括在其范圍中記錄 了該程序的介質(zhì)。用于執(zhí)行本發(fā)明的功能的程序可以被存儲于任何計算 機(jī)可讀記錄介質(zhì),諸如軟盤、MO、 CD-ROM、 DVD、硬盤驅(qū)動器、ROM、 MRAM、 RAM,等等??梢詮耐ㄟ^通信線所連接的其它數(shù)據(jù)處理系統(tǒng) 中下載該程序,或者從其他記錄介質(zhì)進(jìn)行復(fù)制以便存儲在記錄介質(zhì)中。 該程序產(chǎn)品還可以被壓縮或被分成多個以存儲在單個記錄介質(zhì)或多個 記錄介質(zhì)中。另外,應(yīng)當(dāng)注意,明顯地也可以用各種各樣的形式來提供 用于執(zhí)行本發(fā)明的程序產(chǎn)品。樣的修改或改進(jìn)。自然,添加了這種修改或改進(jìn)的模式也被包括在本發(fā) 明的技術(shù)范圍中。如上所述,雖然已經(jīng)使用各實(shí)施例描述了本發(fā)明,但是本發(fā)明的技 術(shù)范圍不限于在前述各實(shí)施例中所描述的范圍。本領(lǐng)域的普通技術(shù)人員了這種修改或改進(jìn)的模式也被包括在本發(fā)明的技術(shù)范圍中。
      權(quán)利要求
      1.一種數(shù)據(jù)庫更新管理系統(tǒng),其用于防止在針對多個數(shù)據(jù)庫的更新處理中發(fā)生由多個并發(fā)事務(wù)所造成的死鎖,所述數(shù)據(jù)庫更新管理系統(tǒng)包括訪問順序存儲單元,其用于預(yù)先存儲對所述多個數(shù)據(jù)庫的訪問順序;數(shù)據(jù)請求接收單元,其用于從所述事務(wù)接收針對待更新的數(shù)據(jù)庫中的數(shù)據(jù)的數(shù)據(jù)請求;數(shù)據(jù)裝載單元,其用于將所述數(shù)據(jù)從所述數(shù)據(jù)庫裝載到虛擬數(shù)據(jù)區(qū)域;已更新數(shù)據(jù)存儲單元,其用于響應(yīng)于所述虛擬數(shù)據(jù)區(qū)域中的數(shù)據(jù)被所述事務(wù)更新,存儲指明所述已更新數(shù)據(jù)的信息;以及數(shù)據(jù)排序單元,其用于響應(yīng)于所述事務(wù)的完成根據(jù)所述訪問順序?qū)λ龃鎯Φ男畔⑦M(jìn)行排序,所述已排序的信息被用于更新所述數(shù)據(jù)庫。
      2. 根據(jù)權(quán)利要求1所述的系統(tǒng),其中每當(dāng)從所述事務(wù)接收到所述 數(shù)據(jù)請求時,所述數(shù)據(jù)裝載單元從所述數(shù)據(jù)庫中裝載隸屬于所述數(shù)據(jù)請 求的數(shù)據(jù)。
      3. 根據(jù)權(quán)利要求1所述的系統(tǒng),其中響應(yīng)于所述事務(wù)的開始,所 述數(shù)據(jù)裝載單元從所述數(shù)據(jù)庫中集體地裝載由所述事務(wù)所請求的全部 數(shù)據(jù)。
      4. 根據(jù)權(quán)利要求1所迷的系統(tǒng),其中所述事務(wù)更新被裝載到所述 虛擬數(shù)據(jù)區(qū)域的數(shù)據(jù)。
      5. 根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述事務(wù)包括多個組件,并 且相同的虛擬數(shù)據(jù)區(qū)域被用于來自在相同事務(wù)中處理的組件的所述數(shù) 據(jù)請求。
      6. 根據(jù)權(quán)利要求4所迷的系統(tǒng),其中響應(yīng)于所述數(shù)據(jù)被更新,在 所述已更新數(shù)據(jù)存儲單元中設(shè)置對應(yīng)于被裝載到所述虛擬數(shù)據(jù)區(qū)域的所述數(shù)據(jù)的更新標(biāo)記。
      7. 根據(jù)權(quán)利要求1所述的系統(tǒng),還包括鎖定管理單元,其用于確 定從所述數(shù)據(jù)庫中裝載的數(shù)據(jù)是否被另一事務(wù)更新。
      8. 根據(jù)權(quán)利要求7所述的系統(tǒng),其中所述鎖定管理單元包括更新時間存儲單元,用于響應(yīng)于從所述數(shù)據(jù)庫中裝載所述數(shù)據(jù),存儲所獲取 的作為所述數(shù)據(jù)請求的目標(biāo)的數(shù)據(jù)的更新時間,并且在更新所述數(shù)據(jù)庫 時通過比較所述存儲的更新時間和從所述數(shù)據(jù)庫中裝載的所述數(shù)據(jù)的 更新時間來再次確定所述數(shù)據(jù)是否被另 一事務(wù)更新。
      9. 根據(jù)權(quán)利要求1所述的系統(tǒng),還包括事務(wù)監(jiān)視單元,其用于監(jiān)視所述事務(wù)是否完成,所述事務(wù)監(jiān)視單元響應(yīng)于檢測到所述事務(wù)的完 成,啟動所述數(shù)據(jù)庫的更新處理。
      10. 根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述指明已更新數(shù)據(jù)的信息 是包含被所述事務(wù)更新的數(shù)據(jù)的表格和數(shù)據(jù)記錄的標(biāo)識符。
      11. 根據(jù)權(quán)利要求1所述的系統(tǒng),還包括命令發(fā)出單元,其用于使 用所述已排序的信息來創(chuàng)建更新命令以便將所述更新命令發(fā)出給所述 數(shù)據(jù)庫。
      12. —種用于使計算機(jī)用作數(shù)據(jù)庫更新管理系統(tǒng)的程序產(chǎn)品,所述 數(shù)據(jù)庫更新管理系統(tǒng)防止在針對多個數(shù)據(jù)庫的更新處理中發(fā)生由多個 并發(fā)事務(wù)所造成的死鎖,所述程序產(chǎn)品使所述計算機(jī)用作訪問順序存儲單元,其用于預(yù)先存儲對所述多個數(shù)據(jù)庫的訪問順序;數(shù)據(jù)請求接收單元,其用于從所述事務(wù)接收針對待更新的數(shù)據(jù)庫中 的數(shù)據(jù)的數(shù)據(jù)請求;數(shù)據(jù)裝載單元,其用于將所述數(shù)據(jù)從所述數(shù)據(jù)庫裝載到虛擬數(shù)據(jù)區(qū)域;已更新數(shù)據(jù)存儲單元,其用于響應(yīng)于所述虛擬數(shù)據(jù)區(qū)域中的數(shù)據(jù)被 所述事務(wù)更新,存儲指明已更新數(shù)據(jù)的信息;以及數(shù)據(jù)排序單元,其用于響應(yīng)于所述事務(wù)的完成根據(jù)所述訪問順序?qū)?所述存儲的信息進(jìn)行排序,所述已排序的信息被用于更新所述數(shù)據(jù)庫。
      13. —種使計算機(jī)用作數(shù)據(jù)庫更新管理系統(tǒng)的程序產(chǎn)品,所述數(shù)據(jù) 庫更新管理系統(tǒng)用于防止在針對多個數(shù)據(jù)庫的更新處理中發(fā)生由多個并發(fā)事務(wù)所造成的死鎖,所述程序產(chǎn)品用于使所述計算機(jī)用作訪問順序存儲單元,其用于預(yù)先存儲對所述多個數(shù)據(jù)庫的訪問順序;數(shù)據(jù)請求接收單元,其用于從所述事務(wù)接收針對待更新的數(shù)據(jù)庫中數(shù)據(jù)的數(shù)據(jù)請求;已更新數(shù)據(jù)存儲單元,其用于響應(yīng)于基于所述數(shù)據(jù)請求裝載到虛擬 數(shù)據(jù)區(qū)域中的數(shù)據(jù)被所述事務(wù)更新,存儲指明已更新數(shù)據(jù)的信息;以及數(shù)據(jù)排序單元,其用于響應(yīng)于所述事務(wù)的完成根據(jù)所述訪問順序?qū)?所述存儲的信息進(jìn)行排序,所述已排序信息被用于更新所述數(shù)據(jù)庫。
      14. 一種管理數(shù)據(jù)庫更新的方法,其用于防止在針對多個數(shù)據(jù)庫的 更新處理中發(fā)生由多個并發(fā)事務(wù)所造成的死鎖,所述方法包括步驟預(yù)先存儲對所述多個數(shù)據(jù)庫的訪問順序; 從所述事務(wù)接收針對待更新的數(shù)據(jù)庫中數(shù)據(jù)的數(shù)據(jù)請求; 將所述數(shù)據(jù)從所述數(shù)據(jù)庫裝載到虛擬數(shù)據(jù)區(qū)域; 響應(yīng)于所述虛擬數(shù)據(jù)區(qū)域中的數(shù)據(jù)被所述事務(wù)更新,存儲指明所述 已更新數(shù)據(jù)的信息;以及響應(yīng)于所述事務(wù)的完成,根據(jù)所述訪問順序?qū)λ龃鎯Φ男畔⑦M(jìn)行排序。
      全文摘要
      本發(fā)明是為了防止在針對多個數(shù)據(jù)庫的更新處理中發(fā)生由多個并發(fā)事務(wù)所造成的死鎖。本發(fā)明提供了一種數(shù)據(jù)庫更新管理系統(tǒng)和方法,該系統(tǒng)包括訪問順序存儲單元,其用于預(yù)先存儲對多個數(shù)據(jù)庫的訪問順序;數(shù)據(jù)請求接收單元,其用于從事務(wù)接收針對待更新的數(shù)據(jù)庫中的數(shù)據(jù)的數(shù)據(jù)請求;數(shù)據(jù)裝載單元,其用于將作為數(shù)據(jù)請求的目標(biāo)的數(shù)據(jù)從數(shù)據(jù)庫裝載到虛擬數(shù)據(jù)區(qū)域;已更新數(shù)據(jù)存儲單元,其用于響應(yīng)于虛擬數(shù)據(jù)區(qū)域中的數(shù)據(jù)被事務(wù)更新,存儲指明已更新數(shù)據(jù)的信息;以及數(shù)據(jù)排序單元,其用于響應(yīng)于事務(wù)的完成根據(jù)訪問順序?qū)λ鎯Φ男畔⑦M(jìn)行排序,該已排序的信息被用于更新數(shù)據(jù)庫。
      文檔編號G06F17/30GK101211362SQ20071016002
      公開日2008年7月2日 申請日期2007年12月20日 優(yōu)先權(quán)日2006年12月26日
      發(fā)明者二上哲也, 松本龍幸 申請人:國際商業(yè)機(jī)器公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1