在此提出的主題一般地涉及數(shù)據(jù)庫管理系統(tǒng)(DBMS)中的數(shù)據(jù)事務(wù)處理和管理,具體地說,涉及使用事務(wù)性存儲器。
背景技術(shù):
::事務(wù)性存儲器(TM)是一種并發(fā)性控制機(jī)制,用于簡化和實(shí)現(xiàn)出錯率較低的并行編程。通常,TM為程序提供一種靈活的方法,以便作為單個操作以原子方式讀取和修改不同的存儲單元,采用的方式類似于修改磁盤上的許多記錄的原子數(shù)據(jù)庫事務(wù)。例如,TM可以使用樂觀方法潛在地提高多線程程序的執(zhí)行并發(fā)性,所述多線程程序訪問包含多個存儲單元的相同或重疊集合。為了實(shí)現(xiàn)樂觀執(zhí)行,TM執(zhí)行環(huán)境可以依賴于某些特性,包括沖突檢測、版本管理和沖突解決。TM可以以硬件(HTM)、軟件(STM)或硬件和軟件兩者的混合組合來實(shí)現(xiàn)。技術(shù)實(shí)現(xiàn)要素:一個方面提供了一種系統(tǒng),包括:至少一個處理器;以及在操作上連接到所述至少一個處理器的存儲設(shè)備;其中,響應(yīng)于執(zhí)行可由所述至少一個處理器訪問的程序指令,所述至少一個處理器被配置為:使用至少一個事務(wù)標(biāo)記來注釋至少一個數(shù)據(jù)對象,所述至少一個事務(wù)標(biāo)記被配置為指示關(guān)聯(lián)的數(shù)據(jù)對象的狀態(tài);使用事務(wù)性存儲器過程處理至少一個數(shù)據(jù)庫事務(wù),其中基于所述至少一個數(shù)據(jù)對象的狀態(tài)確定對所述至少一個數(shù)據(jù)對象的訪問;以及響應(yīng)于所述至少一個數(shù)據(jù)庫事務(wù)嘗試訪問所述至少一個數(shù)據(jù)對象,更新所述至少一個數(shù)據(jù)對象的狀態(tài)。另一個方面提供了一種方法,包括:經(jīng)由計(jì)算設(shè)備使用至少一個事務(wù)標(biāo)記來注釋位于所述計(jì)算設(shè)備上的至少一個數(shù)據(jù)對象,所述至少一個事務(wù)標(biāo)記被配置為指示關(guān)聯(lián)的數(shù)據(jù)對象的狀態(tài);使用事務(wù)性存儲器過程處理至少一個數(shù)據(jù)庫事務(wù),其中基于所述至少一個數(shù)據(jù)對象的狀態(tài)確定對所述至少一個數(shù)據(jù)對象的訪問;以及響應(yīng)于所述至少一個數(shù)據(jù)庫事務(wù)嘗試訪問所述至少一個數(shù)據(jù)對象,更新所述至少一個數(shù)據(jù)對象的狀態(tài)。另一個方面提供了一種計(jì)算機(jī)程序產(chǎn)品,包括:其上包含有計(jì)算機(jī)可讀程序代碼的計(jì)算機(jī)可讀存儲介質(zhì),所述計(jì)算機(jī)可讀程序代碼包括:被配置為使用至少一個事務(wù)標(biāo)記來注釋至少一個數(shù)據(jù)對象的計(jì)算機(jī)可讀程序代碼,所述至少一個事務(wù)標(biāo)記被配置為指示關(guān)聯(lián)的數(shù)據(jù)對象的狀態(tài);被配置為使用事務(wù)性存儲器過程處理至少一個數(shù)據(jù)庫事務(wù)的計(jì)算機(jī)可讀程序代碼,其中基于所述至少一個數(shù)據(jù)對象的狀態(tài)確定對所述至少一個數(shù)據(jù)對象的訪問;以及被配置為響應(yīng)于所述至少一個數(shù)據(jù)庫事務(wù)嘗試訪問所述至少一個數(shù)據(jù)對象,更新所述至少一個數(shù)據(jù)對象的狀態(tài)的計(jì)算機(jī)可讀程序代碼。以上所述是概要,并且因此可能包含細(xì)節(jié)的簡化、概括和省略;因此,本領(lǐng)域的技術(shù)人員將理解,所述概要只是示例性的并且并非旨在以任何方式進(jìn)行限制。為了更好地理解各實(shí)施例以及它們的其它和進(jìn)一步的特性和優(yōu)點(diǎn),結(jié)合附圖對以下描述進(jìn)行參考。本發(fā)明的范圍將在所附權(quán)利要求中指出。附圖說明圖1提供了數(shù)據(jù)庫系統(tǒng)中的一個實(shí)例事務(wù)過程;圖2提供了根據(jù)各實(shí)施例配置的實(shí)例對象數(shù)據(jù)結(jié)構(gòu);圖3提供了根據(jù)一個實(shí)施例的事務(wù)處理的一個實(shí)例;圖4A-4C提供了根據(jù)各實(shí)施例的實(shí)例應(yīng)用編程接口(API)和關(guān)聯(lián)的實(shí)施方式;圖5A和5B提供了根據(jù)各實(shí)施例配置的應(yīng)用編程接口(API)和實(shí)施方式轉(zhuǎn)換;以及圖6示出了一個實(shí)例計(jì)算設(shè)備。具體實(shí)施方式將很容易地理解,除了所描述的實(shí)例實(shí)施例之外,實(shí)施例的組件如通常在此處附圖中描述和示出的那樣,可以以各種不同的配置來布置和設(shè)計(jì)。因此,以下對實(shí)例實(shí)施例的更詳細(xì)的描述如在附圖中表示的那樣,并非旨在限制權(quán)利要求的范圍,而只是表示這些實(shí)施例。本說明書中對“實(shí)施例(多個)”的引用(或類似語言)指結(jié)合該實(shí)施例描述的特定特性、結(jié)構(gòu)或特征被包括在至少一個實(shí)施例中。因此,在本說明書的各種位置中出現(xiàn)的短語“根據(jù)各實(shí)施例”或“一個實(shí)施例”(或類似語言)并非一定都指同一實(shí)施例。此外,所描述的特性、結(jié)構(gòu)或特征可以以任何適當(dāng)?shù)姆绞浇M合在不同實(shí)施例中。在以下描述中,提供了大量特定的詳細(xì)信息以便徹底理解實(shí)例實(shí)施例。但是,相關(guān)領(lǐng)域的技術(shù)人員將認(rèn)識到,可以在沒有某些特定的詳細(xì)信息的情況下實(shí)現(xiàn)各方面,或者可以通過其它方法、組件、材料等實(shí)現(xiàn)各方面。在其它情況下,未詳細(xì)示出或描述公知的結(jié)構(gòu)、材料或操作以避免模糊不清。事務(wù)性存儲器(TM)提供了許多優(yōu)點(diǎn),包括簡化并行編程和降低與編寫并發(fā)程序關(guān)聯(lián)的難度。盡管如此,TM也有它自己的代價,例如由于需要保存事務(wù)日志以及檢測和解決沖突而導(dǎo)致的性能開銷??梢酝ㄟ^完全以硬件實(shí)現(xiàn)TM(HTM)來最小化開銷。但是,這必然限制事務(wù)可以訪問的數(shù)據(jù)大小,因?yàn)橛布Y源有限,并且HTM為了獲得多數(shù)據(jù)一致性支持而可能采用任何底層高速緩存一致性協(xié)議。因此,對于訪問大量數(shù)據(jù)的事務(wù),系統(tǒng)必須回退到傳統(tǒng)鎖定過程或使用軟件TM(STM),這可能由于性能開銷非常高而失去并發(fā)性優(yōu)勢。啟用TM的程序聲明事務(wù)范圍,作為涉及一個或多個存儲單元的關(guān)鍵執(zhí)行部分。HTM以存儲器操縱單元(例如高速緩存行)的粒度解決沖突。從聲明工作單元及其恢復(fù)的角度看,數(shù)據(jù)庫管理系統(tǒng)(DBMS)中存在類似的結(jié)構(gòu)。例如,應(yīng)用可以在讀取或修改一組數(shù)據(jù)庫對象之前聲明“startoftheunitofrecovery(UR)(恢復(fù)單元(UR)開始)”。在某一時刻,應(yīng)用可以發(fā)出“commit(提交)”或“rollback(回滾)”以便確認(rèn)對數(shù)據(jù)庫的更改或者撤消自“startoftheUR(UR開始)”命令以來的所有更改。通常,數(shù)據(jù)庫記錄可以是DBMS支持的任何大小。DBMS可以使用軟件鎖管理器序列化對相同數(shù)據(jù)實(shí)體的并發(fā)訪問,其中只有獲得鎖的線程才可以繼續(xù)其訪問。取決于應(yīng)用語義,可以阻止其它意圖訪問相同實(shí)體的線程,這也可能取決于語義。鎖管理器可以依據(jù)對象的名稱或標(biāo)識符來區(qū)分對象。因此,可以在表級別、文件級別(表可以被分區(qū)并跨越多個文件)、記錄級別或頁級別(一個或多個記錄可以被存儲在頁中或跨越多個頁,其也是I/O單元)實(shí)現(xiàn)序列化粒度。但是,對象鎖定的成本可能很高。還可以在不同鎖級別的層次結(jié)構(gòu)之間轉(zhuǎn)換。最終,這是在并發(fā)性、性能和系統(tǒng)資源之間進(jìn)行權(quán)衡。此外,在其中事務(wù)范圍覆蓋多個對象的環(huán)境中,經(jīng)由鎖定來序列化每個對象處的訪問還可能導(dǎo)致鎖管理器必須解決的死鎖情況。參考圖1,提供了一個實(shí)例數(shù)據(jù)庫管理過程。系統(tǒng)包括數(shù)據(jù)庫101(包含表102、頁103和行104)、應(yīng)用線程105和鎖管理器106。啟動事務(wù)(107)并定位一個或多個對象(例如,數(shù)據(jù)庫101中的table.page.row)(108)。請求鎖管理器權(quán)限(109)以訪問所述一個或多個對象。如果授予權(quán)限(110),則可以訪問所述一個或多個對象,否則,所述過程等待(111)。所述過程循環(huán)返回以便再次請求權(quán)限以訪問對象(109)。所述過程可以被配置為提交或中止事務(wù)并釋放任何活動鎖。硬件事務(wù)管理(HTM)是一種硬件輔助無鎖機(jī)制,用于處理數(shù)據(jù)訪問沖突解決。它提供良好的性能并伴隨著自己的限制,例如數(shù)據(jù)大小限制以及不能在不同的對象層次結(jié)構(gòu)級別管理并發(fā)訪問。除了記錄、頁、文件和表之外,許多應(yīng)用都需要針對較大數(shù)據(jù)結(jié)構(gòu)進(jìn)行原子操作,特別是那些諸如文本、XML文檔、二進(jìn)制對象和圖像之類的數(shù)據(jù)類型。相應(yīng)地,各實(shí)施例提供了一種事務(wù)處理系統(tǒng),所述事務(wù)處理系統(tǒng)在HTM的幫助下運(yùn)行并被配置為在沒有鎖管理器的情況下運(yùn)行。例如,各實(shí)施例提供了一種組合樂觀機(jī)制和阻止機(jī)制的混合方法,用于針對各種數(shù)據(jù)對象的數(shù)據(jù)庫事務(wù)執(zhí)行。根據(jù)各實(shí)施例布置的用于數(shù)據(jù)庫事務(wù)執(zhí)行的混合方法可以被配置為利用TM的簡化編程接口并使用HTM處理部分沖突檢測和解決,以便比鎖管理器實(shí)現(xiàn)更好的性能。使用此處公開的混合方法的數(shù)據(jù)庫對象事務(wù)可以通過以下操作運(yùn)行:擴(kuò)展數(shù)據(jù)庫對象結(jié)構(gòu)以利用TM,同時在數(shù)據(jù)對象中維護(hù)數(shù)據(jù)一致性而不需要訪問對象占用的所有存儲單元。在一個非限制性實(shí)例中,可以提供API以處理數(shù)據(jù)庫對象,包括但不限于用于數(shù)據(jù)標(biāo)記/注釋以減輕事務(wù)大小限制的API,其中可以使用語言解釋器或編譯器處理任何注釋翻譯。此外,根據(jù)各實(shí)施例配置的事務(wù)處理可以比現(xiàn)有事務(wù)處理系統(tǒng)實(shí)現(xiàn)更好的性能并減少死鎖或鎖等待超時。圖2提供了根據(jù)各實(shí)施例配置的混合系統(tǒng)中的實(shí)例對象。所述混合系統(tǒng)包括數(shù)據(jù)庫201,數(shù)據(jù)庫201包括表202、頁203和行204。根據(jù)各實(shí)施例,可以向系統(tǒng)對象中添加標(biāo)記,所述標(biāo)記對于與對象關(guān)聯(lián)的系統(tǒng)應(yīng)用(例如,應(yīng)用線程)而言是透明的。如圖2中所示,表事務(wù)性標(biāo)記205可以與表202關(guān)聯(lián),頁事務(wù)性標(biāo)記206可以與頁203關(guān)聯(lián),以及行事務(wù)性標(biāo)記207可以與行204關(guān)聯(lián)。每個標(biāo)記可以與被配置為指示關(guān)聯(lián)對象(多個)的可訪問性的狀態(tài)關(guān)聯(lián),并與一個或多個被配置為支持使用事務(wù)性標(biāo)記205-207的TM系統(tǒng)的操作的數(shù)據(jù)結(jié)構(gòu)208、209關(guān)聯(lián)。各實(shí)施例提供了可以使用HTM樂觀地且無鎖地處理標(biāo)記更新。參考圖3,其中提供了根據(jù)一個實(shí)施例配置的實(shí)例混合過程。所述過程與數(shù)據(jù)庫301和應(yīng)用線程302交互。根據(jù)各實(shí)施例,發(fā)起事務(wù)(303)并授予對對象的訪問(304),例如方式為:樂觀地更新Tagged_HTM_Tx函數(shù)中的無鎖對象標(biāo)記,該函數(shù)可以被配置如下:此外,在Tagged_HTM_Tx函數(shù)之后,可以使用HTM樂觀地且無鎖地啟動撤消對象標(biāo)記更新。然后可以將對象提交(305)到所述事務(wù)。作為圖3中所示過程的結(jié)果,可以獲得更緊湊的事務(wù)代碼,包括實(shí)現(xiàn)數(shù)據(jù)引擎層之間的塊更新接口。如上所述,可以根據(jù)各實(shí)施例配置所述混合過程以便組合樂觀機(jī)制和阻止機(jī)制,用于針對各種數(shù)據(jù)對象的數(shù)據(jù)庫事務(wù)執(zhí)行。各實(shí)施例規(guī)定對數(shù)據(jù)對象的訪問可以涉及以下兩個功能:(1)例如使用HTM保留嘗試訪問權(quán)利和訪問操作,以處理訪問嘗試以及相關(guān)的沖突檢測和解決;以及(2)在保留嘗試權(quán)利之后,將數(shù)據(jù)訪問操作設(shè)置為無鎖,以便如果未保留嘗試權(quán)利,則可以阻止數(shù)據(jù)訪問操作。可以根據(jù)各實(shí)施例,通過向DBMS中的對象應(yīng)用HTM來配置事務(wù)處理。例如,可以使用可用于描述訪問意向和數(shù)據(jù)對象狀態(tài)的小型數(shù)據(jù)結(jié)構(gòu)(例如,標(biāo)記和元數(shù)據(jù))來擴(kuò)展現(xiàn)有數(shù)據(jù)庫對象。該數(shù)據(jù)對象例如可以是表、用于表分區(qū)的文件、記錄(例如,在頁中或跨頁)或頁等??梢詫U(kuò)展后的數(shù)據(jù)對象稱為“已標(biāo)記數(shù)據(jù)”。可以定義一個或多個應(yīng)用級API,這些API可以被配置為針對“已標(biāo)記數(shù)據(jù)”啟用事務(wù)聲明??梢蕴峁┧鯝PI的實(shí)現(xiàn)方法,以便可以按如下所示,對應(yīng)用透明地執(zhí)行“已標(biāo)記數(shù)據(jù)”的聲明的事務(wù)??梢栽诔晒Ω聰?shù)據(jù)對象的“標(biāo)記”時授予訪問該數(shù)據(jù)對象的權(quán)限,其中可以經(jīng)由HTM樂觀地執(zhí)行和管理“標(biāo)記”更新的過程。當(dāng)成功保留訪問權(quán)限時,可以無鎖訪問所述數(shù)據(jù)對象。可以通過將多個數(shù)據(jù)對象分組成公共聲明事務(wù)(例如在此處描述的應(yīng)用級API中提供的那些事務(wù))來處理多個數(shù)據(jù)對象訪問??梢越?jīng)由HTM并使用無鎖訪問,將所述數(shù)據(jù)對象組作為一個組來樂觀地進(jìn)行處理。根據(jù)現(xiàn)有技術(shù)開發(fā)的事務(wù)過程未充分處理對大型數(shù)據(jù)對象的并發(fā)性控制,特別是在使用HTM時。如前所述,各實(shí)施例可以通過提供被配置為在不使用鎖管理器的情況下運(yùn)行的事務(wù)過程來解決該問題。可以在聲明時擴(kuò)展主體(subject)數(shù)據(jù)結(jié)構(gòu)(例如,樹、數(shù)據(jù)頁、文檔)。例如,擴(kuò)展可以涉及編程語言的編譯器所使用的事務(wù)標(biāo)記計(jì)數(shù)器,其中一個計(jì)數(shù)器可以用于所述數(shù)據(jù)結(jié)構(gòu)上到“當(dāng)前時間”為止的“活動讀取”計(jì)數(shù),另一個計(jì)數(shù)器用于“活動寫入”計(jì)數(shù)。備選地,“活動寫入”計(jì)數(shù)器可以包括一個或多個位。這些計(jì)數(shù)器可以被稱為數(shù)據(jù)結(jié)構(gòu)的事務(wù)標(biāo)記。參考圖4A-4C,其中提供了根據(jù)各實(shí)施例的實(shí)例API和關(guān)聯(lián)的實(shí)施方式??梢詳U(kuò)展聲明(例如圖4A-4C中所示的那些聲明),以便處置多個離散對象(例如數(shù)據(jù)庫中的數(shù)據(jù)頁和索引頁)和一個“邏輯數(shù)據(jù)單元”(如下面的圖5中所示,被使用標(biāo)記擴(kuò)展)。此外,各實(shí)施例可以允許應(yīng)用在事務(wù)粒度對對象進(jìn)行分組。圖4A-4C中所示的實(shí)例API示出了單個對象事務(wù),而下面的圖5A和5B示出了涉及多個對象的事務(wù)?,F(xiàn)在參考圖5A和5B,其中提供了根據(jù)各實(shí)施例配置的API。圖5A示出了Tagged_Tx_beginAPI,圖5B示出了Tagged_Tx_endAPI,這些API可以用于已標(biāo)記數(shù)據(jù)結(jié)構(gòu)上的數(shù)據(jù)訪問事務(wù)。各實(shí)施例規(guī)定編譯器或語言解釋器可以將事務(wù)Tagged_Tx_begin和Tagged_Tx_end轉(zhuǎn)換為包括以下項(xiàng)的操作:(1)在讀取或更新(數(shù)據(jù)結(jié)構(gòu)類型的)數(shù)據(jù)項(xiàng)之前,可以更新其事務(wù)標(biāo)記;(2)可以使用HTM處理事務(wù)標(biāo)記更新;(3)如果在(1)和(2)時提交線程,則線程有權(quán)“無事務(wù)地”更新或讀取數(shù)據(jù)結(jié)構(gòu)內(nèi)容;(4)當(dāng)完成(1)時,可以相應(yīng)地更新回所述數(shù)據(jù)項(xiàng)的事務(wù)標(biāo)記。此外,各實(shí)施例規(guī)定如果應(yīng)用在結(jié)束時發(fā)出roll-back(回滾),則可以如此處描述的那樣,使用現(xiàn)有DBMS的撤消日志記錄針對已標(biāo)記數(shù)據(jù)結(jié)構(gòu)重復(fù)數(shù)據(jù)訪問事務(wù),從而撤消數(shù)據(jù)更新操作。根據(jù)各實(shí)施例,可以擴(kuò)展上述步驟(1)-(4),以便處理包括小型未標(biāo)記數(shù)據(jù)對象和大型已標(biāo)記數(shù)據(jù)對象的混合的事務(wù)。對于數(shù)據(jù)庫應(yīng)用,這可以提供將離散數(shù)據(jù)對象(例如一組頁)分組成全有或全無(all-or-nothing)事務(wù)范圍的能力。盡管從數(shù)據(jù)更新的角度,這種配置有效地成為一種阻止機(jī)制,但與諸如鎖定或鎖存之類的機(jī)制相比,不必?fù)?dān)心死鎖或死鎖存情況,也不需要查找鎖表。應(yīng)用可能嘗試訪問未提交的(例如,“臟”)數(shù)據(jù)。例如,讀取器可能嘗試讀取未提交的數(shù)據(jù)。各實(shí)施例可以提供其它API和關(guān)聯(lián)的實(shí)施方式以便處理未提交的數(shù)據(jù),包括“update”和“dirty_read”API。例如,對于有關(guān)映射到多個數(shù)據(jù)/索引頁的邏輯對象的更新操作,可以提供轉(zhuǎn)換和執(zhí)行功能以便將某些API轉(zhuǎn)換為一個硬件事務(wù)(“tx_”),該事務(wù)請求對所述邏輯對象的所有子對象標(biāo)記(例如,附加層次結(jié)構(gòu))的寫入訪問。一個示例性updateAPI可以被配置為如下:Tagged_Update_Tx_begin;updatea&b--a&bbelongtosamelogicalobjectTagged_Update_Tx_end.可以按如下所示轉(zhuǎn)換updateAPI以便執(zhí)行:對于dirtyread(臟讀取)API,可以將邏輯對象組分解為逐個的較小子對象事務(wù),同時保持每個對象一個標(biāo)記,以便在單個對象級別維護(hù)數(shù)據(jù)一致性。一個示例性dirtyreadAPI可以被配置為如下:可以按如下所示轉(zhuǎn)換dirtyreadAPI以便執(zhí)行:可以將數(shù)據(jù)對象作為層次結(jié)構(gòu)處理。例如,對于數(shù)據(jù)庫,對象的層次結(jié)構(gòu)可以包括(從上到下)表、頁和行對象。此外,可以基于本地或全局狀態(tài)對層次結(jié)構(gòu)中的對象進(jìn)行分類。相應(yīng)地,各實(shí)施例可以提供附加標(biāo)記以支持阻止的層次結(jié)構(gòu)級別。作為一個非限制性實(shí)例,各實(shí)施例可以提供table_global_write和table_global_read標(biāo)記,并在此實(shí)例之后,可以提供其它標(biāo)記:table_local_write/table_local_read;page_global_write/page_global_read;以及page_local_write/page_local_read??梢愿鶕?jù)各實(shí)施例配置層次結(jié)構(gòu)級別阻止以支持操作,包括通過本地訪問更新本地標(biāo)記、通過本地訪問檢查全局標(biāo)記,以及通過全局訪問檢查和更新全局標(biāo)記。層次結(jié)構(gòu)級別阻止可以被配置為以更粗粒度運(yùn)行。例如,可以在中央位置提供表的用盡(drain)和要求(claim)標(biāo)記并使用HTM(而不是鎖存)進(jìn)行管理。但是,根據(jù)各實(shí)施例,可以通過定義一組特定的標(biāo)記來配置層次結(jié)構(gòu)鎖定。對于表或分區(qū),可以定義以下標(biāo)記:(1)table_global_write_count,用于授予表級別鎖定并阻止其它表級別鎖定線程;(2)table_global_intent_write_count,其可以用于用盡所有頁級別寫入,以便在需要表級別鎖時,實(shí)用程序可以最終獲得訪問;(3)table_local_write_count,其可以被配置為僅當(dāng)在更新頁時其值達(dá)到0時才授予表級別鎖定;(4)table_read_count;以及(5)table_page_read_count。在頁級別,每個頁可以將table_global_write_count和table_global_intent_write_count標(biāo)記配置為在被設(shè)置為非0值時,阻止新的頁更新請求。此外,所有頁級別寫入或行級別寫入均可以被配置為更新table_local_write_count標(biāo)記,例如方式為:在寫入之前遞增該標(biāo)記并在之后遞減該標(biāo)記。因?yàn)镠TM通常在高速緩存行粒度處運(yùn)行,所以可以分發(fā)標(biāo)記(例如,通過散列),以便在統(tǒng)計(jì)上最小化同一高速緩存行中的不同事務(wù)涉及的并置(collocating)標(biāo)記。簡言之,各實(shí)施例可以被配置為提供過程,以便使用HTM以及一個或多個API的運(yùn)行時實(shí)現(xiàn)來處理數(shù)據(jù)庫事務(wù)(包括嵌套事務(wù))。例如,API可以是透明的,并可以向數(shù)據(jù)庫對象添加注釋或標(biāo)記。在已注釋對象的狀態(tài)更改(可以在訪問完成之后被撤消)時,應(yīng)用可以基于成功的HTM提交的執(zhí)行來訪問事務(wù)對象,其中訪問或者被授予或者被拒絕。被授予的訪問允許應(yīng)用更新或讀取對象,被拒絕的訪問不允許應(yīng)用訪問特定對象。根據(jù)各實(shí)施例,可以在全有或全無的基礎(chǔ)上授予對對象組的訪問。例如,將組的范圍定義為對象集合時,可以根據(jù)全有或全無過程訪問該組中的這些對象。參考圖6,將容易地理解,可以使用各種設(shè)備中的任何一個或設(shè)備組合來實(shí)現(xiàn)某些實(shí)施例??梢杂糜趯?shí)現(xiàn)各實(shí)施例的一個實(shí)例設(shè)備包括形式為計(jì)算機(jī)610的計(jì)算設(shè)備,計(jì)算機(jī)610可以采取服務(wù)器、工作站計(jì)算機(jī)、移動設(shè)備等的形式。在此方面,計(jì)算機(jī)610可以執(zhí)行被配置為通過網(wǎng)絡(luò)分析提供預(yù)測性內(nèi)容放置的程序指令,并執(zhí)行各實(shí)施例的其它功能,如此處所述。計(jì)算機(jī)610的組件可以包括但不限于至少一個處理單元620、系統(tǒng)存儲器630和系統(tǒng)總線622,系統(tǒng)總線622將包括系統(tǒng)存儲器630的各種系統(tǒng)組件耦合到處理單元(多個)620。計(jì)算機(jī)610可以包括或具有對各種計(jì)算機(jī)可讀介質(zhì)的訪問。系統(tǒng)存儲器630可以包括易失性和/或非易失性存儲器形式的計(jì)算機(jī)可讀存儲介質(zhì),例如只讀存儲器(ROM)和/或隨機(jī)存取存儲器(RAM)。例如但不限于,系統(tǒng)存儲器630還可以包括操作系統(tǒng)、應(yīng)用程序、其它程序模塊和程序數(shù)據(jù)。用戶可以通過輸入設(shè)備640與計(jì)算機(jī)610連接(例如,輸入命令和信息)。監(jiān)視器或其它類型的設(shè)備也可以經(jīng)由接口(例如輸出接口650)連接到系統(tǒng)總線622。除了監(jiān)視器之外,計(jì)算機(jī)還可以包括其它外圍輸出設(shè)備。計(jì)算機(jī)610可以使用與其它遠(yuǎn)程計(jì)算機(jī)或數(shù)據(jù)庫(遠(yuǎn)程設(shè)備(多個)670)的邏輯連接,在聯(lián)網(wǎng)或分布式環(huán)境中運(yùn)行。所述邏輯連接可以包括諸如局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、蜂窩網(wǎng)絡(luò)之類的網(wǎng)絡(luò),但還可以包括其它網(wǎng)絡(luò)。所屬
技術(shù)領(lǐng)域:
:的技術(shù)人員知道,本發(fā)明的各方面可以體現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明的各方面可以具體實(shí)現(xiàn)為以下形式,即,可以是完全的硬件、完全的軟件(包括固件、駐留軟件、微代碼等)、或者本文一般稱為“電路”、“模塊”或“系統(tǒng)”的軟件部分與硬件部分的組合。此外,本發(fā)明的各方面還可以采取體現(xiàn)在任何有形的表達(dá)介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品的形式,該介質(zhì)中包含計(jì)算機(jī)可用的程序碼??梢允褂靡粋€或多個計(jì)算機(jī)可讀介質(zhì)的任意組合。所述計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號介質(zhì)或計(jì)算機(jī)可讀存儲介質(zhì)。計(jì)算機(jī)可讀存儲介質(zhì)例如可以是(但不限于)電、磁、光、電磁、紅外線或半導(dǎo)體系統(tǒng)、裝置或設(shè)備或上述任意適合的組合。所述計(jì)算機(jī)可讀存儲介質(zhì)的更具體的實(shí)例(非窮舉列表)將包括以下項(xiàng):具有一條或多條線的電連接、便攜式計(jì)算機(jī)軟盤、硬盤、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、可擦寫可編程只讀存儲器(EPROM或閃存)、光纖、便攜式光盤只讀存儲器(CD-ROM)、光存儲設(shè)備、磁存儲設(shè)備或上述任意適合的組合。在本文檔的上下文中,計(jì)算機(jī)可讀存儲介質(zhì)可以是任何能夠包含或存儲由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或與指令執(zhí)行系統(tǒng)、裝置或設(shè)備結(jié)合的程序的有形介質(zhì)。計(jì)算機(jī)可讀信號介質(zhì)可以包括其中包含計(jì)算機(jī)可讀程序代碼(例如,在基帶中或作為載波的一部分)的傳播數(shù)據(jù)信號。此類傳播信號可以采取各種形式中的任一種,包括但不限于電磁、光或其中任意適合的組合。計(jì)算機(jī)可讀信號介質(zhì)可以是任何不屬于計(jì)算機(jī)可讀存儲介質(zhì)并且能夠傳送、傳播或傳輸由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或與指令執(zhí)行系統(tǒng)、裝置或設(shè)備結(jié)合的程序的計(jì)算機(jī)可讀介質(zhì)。可以使用任何適當(dāng)?shù)慕橘|(zhì)(包括但不限于無線、線纜、光纜、RF等或上述任意適合的組合)來傳輸包含在計(jì)算機(jī)可讀介質(zhì)中的程序代碼。用于執(zhí)行本發(fā)明的各方面的操作的計(jì)算機(jī)程序代碼可以使用包含一種或多種編程語言的任意組合來編寫,所述編程語言包括諸如Java、Smalltalk、C++之類的面向?qū)ο蟮木幊陶Z言以及諸如“C”編程語言或類似的編程語言之類的常規(guī)過程編程語言。所述程序代碼可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為獨(dú)立的軟件包、部分地在用戶計(jì)算機(jī)上并部分地在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行,或者完全地在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在后者的情況中,所述遠(yuǎn)程計(jì)算機(jī)可以通過包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)的任何類型網(wǎng)絡(luò)與用戶的計(jì)算機(jī)相連,或者可以與外部計(jì)算機(jī)進(jìn)行連接(例如,使用因特網(wǎng)服務(wù)提供商通過因特網(wǎng)連接)。下面將參考根據(jù)本發(fā)明的實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方塊圖對本發(fā)明的各方面進(jìn)行描述。將理解,所述流程圖和/或方塊圖的每個方塊以及所述流程圖和/或方塊圖中的方塊的組合可以由計(jì)算機(jī)程序指令來實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以被提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器以產(chǎn)生機(jī)器,以便通過所述計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在一個或多個流程圖和/或方塊圖方塊中指定的功能/操作的裝置。這些計(jì)算機(jī)程序指令也可以被存儲在能夠引導(dǎo)計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備以特定方式執(zhí)行功能的計(jì)算機(jī)可讀介質(zhì)中,以便存儲在所述計(jì)算機(jī)可讀介質(zhì)中的指令產(chǎn)生一件包括實(shí)現(xiàn)在一個或多個流程圖和/或方塊圖方塊中指定的功能/操作的指令的制品。所述計(jì)算機(jī)程序指令還可被加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備,以導(dǎo)致在所述計(jì)算機(jī)、其它可編程裝置或其它設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過程,從而在所述計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令提供用于實(shí)現(xiàn)在一個或多個流程圖和/或方塊圖方塊中指定的功能/操作的過程。出于示例和說明目的給出了本公開,但本公開并非旨在是窮舉的或是限制性的。對于本領(lǐng)域的技術(shù)人員來說,許多修改和變化都將是顯而易見的。實(shí)例實(shí)施例的選擇和描述是為了解釋原理和實(shí)際應(yīng)用,并且當(dāng)適合于所構(gòu)想的特定使用時,使得本領(lǐng)域的其它普通技術(shù)人員能夠理解本公開的具有各種修改的各種實(shí)施例。盡管在此參考附圖描述了例示的實(shí)例實(shí)施例,但要理解,各實(shí)施例并不限于這些精確的實(shí)例實(shí)施例,并且本領(lǐng)域的技術(shù)人員可以在其中實(shí)現(xiàn)各種其它更改和修改而不偏離本公開的范圍或精神。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3