一種基于動(dòng)態(tài)分片的分布式事務(wù)執(zhí)行方法
【專利摘要】本發(fā)明公開(kāi)一種基于動(dòng)態(tài)分片的分布式事務(wù)執(zhí)行方法,在每個(gè)數(shù)據(jù)中心的數(shù)據(jù)庫(kù)管理服務(wù)器中部署有用于控制和管理對(duì)事務(wù)的動(dòng)態(tài)事務(wù)分片單元,動(dòng)態(tài)事務(wù)分片單元包括動(dòng)態(tài)分片模塊和動(dòng)態(tài)沖突分析模塊,采用動(dòng)態(tài)事務(wù)分片單元處理來(lái)自應(yīng)用服務(wù)器的事務(wù)請(qǐng)求,對(duì)該事務(wù)請(qǐng)求進(jìn)行動(dòng)態(tài)分片和動(dòng)態(tài)沖突分析,隨后對(duì)分片后的事務(wù)采用分片執(zhí)行模塊進(jìn)行執(zhí)行,并在數(shù)據(jù)庫(kù)存儲(chǔ)器上執(zhí)行具體的數(shù)據(jù)訪問(wèn)操作。本發(fā)明是基于事務(wù)分片技術(shù),在數(shù)據(jù)中心引入動(dòng)態(tài)分片模塊和動(dòng)態(tài)沖突分析模塊,實(shí)現(xiàn)程序化自動(dòng)化的事務(wù)分片技術(shù),使得事務(wù)有更多的機(jī)會(huì)在本地?cái)?shù)據(jù)中心提交,有效地減少分布式存儲(chǔ)系統(tǒng)中跨數(shù)據(jù)中心通信的次數(shù),降低事務(wù)管理的延時(shí)從而獲得良好的響應(yīng)性能。
【專利說(shuō)明】
一種基于動(dòng)態(tài)分片的分布式事務(wù)執(zhí)行方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及數(shù)據(jù)訪問(wèn)領(lǐng)域,更具體地,涉及一種基于動(dòng)態(tài)分片的分布式事務(wù)執(zhí)行方法。
【背景技術(shù)】
[0002]大規(guī)模的分布式存儲(chǔ)系統(tǒng)會(huì)把數(shù)據(jù)分塊放在不同的數(shù)據(jù)中心上,即數(shù)據(jù)分區(qū)。對(duì)于部署在多數(shù)據(jù)中心上的應(yīng)用,事務(wù)操作通常需要訪問(wèn)不同分區(qū)的數(shù)據(jù),即訪問(wèn)不同數(shù)據(jù)中心。按照事務(wù)分片技術(shù),事務(wù)會(huì)按照訪問(wèn)數(shù)據(jù)分區(qū)的不同被劃分為多個(gè)分片。其中每個(gè)分片只會(huì)訪問(wèn)單個(gè)數(shù)據(jù)中心的數(shù)據(jù)分區(qū),并且以單個(gè)ACID事務(wù)的形式執(zhí)行和提交,同時(shí)第一個(gè)分片在客戶端所在的本地?cái)?shù)據(jù)中心執(zhí)行。第一個(gè)分片執(zhí)行并提交后,事務(wù)就可以返回已完成的狀態(tài)給客戶端,剩下的分片會(huì)在返回后在后臺(tái)被發(fā)送到其他數(shù)據(jù)中心執(zhí)行。從而使得客戶端等待的時(shí)間不包括跨越數(shù)據(jù)中心的通信延時(shí)。為了保證被分片事務(wù)的ACID特性,尤其是可以確保強(qiáng)一致性的可串行性,需要在分片事務(wù)執(zhí)行之前進(jìn)行沖突分析。如果對(duì)某事務(wù)的分片執(zhí)行會(huì)違背可串行性,它就不能被分片執(zhí)行。對(duì)事務(wù)的沖突分析基于SC圖理論,用SC圖表示分片事務(wù)。SC圖中節(jié)點(diǎn)表示事務(wù)分片,連接同個(gè)事務(wù)不同分片的是S邊,另一種邊(C邊)連接不同事務(wù)中的分片并表示這兩個(gè)分片存在數(shù)據(jù)訪問(wèn)沖突,即二者訪問(wèn)同個(gè)數(shù)據(jù)分區(qū)并且其中一個(gè)訪問(wèn)是寫操作。文獻(xiàn)“Dennis Shasha, Francois Llirbat, EricSimon, and Patrick Valduriez."Transact1n chopping: Algorithms andperformance studies, ACM Transact1ns on Database Systems (TODS) 20,n0.3(1995): 325-363.”證明了在SC圖中非可串行化的沖突可以等價(jià)為SC環(huán)的存在。SC環(huán)是SC圖中的環(huán),既包含S邊又包含C邊。圖1展示了兩個(gè)SC圖,其中一個(gè)有SC環(huán),另一個(gè)沒(méi)有。其中Tm表示事務(wù)O的第一個(gè)分片,其他以此類推。
[0003]文南犬“Yang Zhang, Russell Power, Siyuan Zhou, Yair Sovran, Marcos K.Aguilera, and Jinyang L1."Transact1n chains: achieving serializability withlow latency in geo-distributed storage systems, In Proceedings of theTwenty-Fourth ACM Symposium on Operating Systems Principles, pp.276-291.ACM, 2013.”提出的靜態(tài)事務(wù)分片技術(shù),在應(yīng)用開(kāi)發(fā)階段,對(duì)所有類型的事務(wù)進(jìn)行靜態(tài)的分片和沖突分析,分析出事務(wù)是否可分片執(zhí)行。靜態(tài)沖突分析是應(yīng)用開(kāi)發(fā)者對(duì)所有事務(wù)的全局檢測(cè),是一個(gè)人工過(guò)程,并且需要在應(yīng)用的事務(wù)代碼中進(jìn)行標(biāo)注。
[0004]在靜態(tài)分片的技術(shù)方案中,程序員對(duì)應(yīng)用所有事務(wù)進(jìn)行靜態(tài)分片和全局靜態(tài)分析,分片信息和分析結(jié)果標(biāo)注在程序代碼中。這種由開(kāi)發(fā)者執(zhí)行的靜態(tài)分片技術(shù)有以下幾種缺點(diǎn):
I)對(duì)程序員不透明。在程序代碼中標(biāo)注分片信息首先需要對(duì)代碼進(jìn)行額外的定制與修改,而且需要程序員完全掌握SC圖理論來(lái)進(jìn)行沖突分析。這些都會(huì)帶來(lái)額外的工作量。
[0005]2)缺乏靈活性。靜態(tài)分析在程序編碼階段就完成,即事務(wù)是否可分片在編寫事務(wù)代碼時(shí)已經(jīng)確定,并不能根據(jù)事務(wù)的具體執(zhí)行情況進(jìn)行動(dòng)態(tài)調(diào)整。
[0006]3)只能采用靜態(tài)的數(shù)據(jù)分區(qū)方案。事務(wù)分片的依據(jù)是數(shù)據(jù)的分區(qū),靜態(tài)檢測(cè)在編碼階段就確定事務(wù)能否分片,只能使用一種特定的數(shù)據(jù)分區(qū)方案。
[0007]近年來(lái),大型網(wǎng)絡(luò)應(yīng)用都構(gòu)建在基于多數(shù)據(jù)中心的分布式存儲(chǔ)系統(tǒng)之上,并且采用常規(guī)的關(guān)系型數(shù)據(jù)庫(kù)和事務(wù)操作。在基于多數(shù)據(jù)中心的分布式存儲(chǔ)系統(tǒng)中,為了保證事務(wù)的ACID特性,事務(wù)管理(如并發(fā)控制和提交協(xié)議)需要完成多次跨數(shù)據(jù)中心的通信。為了向用戶提供良好的可用性,多個(gè)數(shù)據(jù)中心通常位于相隔遙遠(yuǎn)的不同地理位置??鐢?shù)據(jù)中心的通信延時(shí)很高,給事務(wù)管理造成非常高的時(shí)間開(kāi)銷。事務(wù)分片技術(shù)能讓事務(wù)在本地?cái)?shù)據(jù)中心提交。
【發(fā)明內(nèi)容】
[0008]本發(fā)明提出一種基于動(dòng)態(tài)分片的分布式事務(wù)執(zhí)行方法,基于事務(wù)分片技術(shù),在數(shù)據(jù)中心引入動(dòng)態(tài)分片模塊和動(dòng)態(tài)沖突分析模塊,實(shí)現(xiàn)程序化自動(dòng)化的事務(wù)分片技術(shù),使得事務(wù)有更多的機(jī)會(huì)在本地?cái)?shù)據(jù)中心提交,有效地減少分布式存儲(chǔ)系統(tǒng)中跨數(shù)據(jù)中心通信的次數(shù),降低事務(wù)管理的延時(shí)從而獲得良好的響應(yīng)性能。
[0009 ]為解決上述技術(shù)問(wèn)題,本發(fā)明的技術(shù)方案如下:
一種基于動(dòng)態(tài)分片的分布式事務(wù)執(zhí)行方法,在每個(gè)數(shù)據(jù)中心的數(shù)據(jù)庫(kù)管理服務(wù)器中部署有用于控制和管理對(duì)事務(wù)的動(dòng)態(tài)事務(wù)分片單元,動(dòng)態(tài)事務(wù)分片單元包括動(dòng)態(tài)分片模塊和動(dòng)態(tài)沖突分析模塊,采用動(dòng)態(tài)事務(wù)分片單元處理來(lái)自應(yīng)用服務(wù)器的事務(wù)請(qǐng)求,對(duì)該事務(wù)請(qǐng)求進(jìn)行動(dòng)態(tài)分片和動(dòng)態(tài)沖突分析,隨后對(duì)分片后的事務(wù)采用分片執(zhí)行模塊進(jìn)行執(zhí)行,并在數(shù)據(jù)庫(kù)存儲(chǔ)器上執(zhí)行具體的數(shù)據(jù)訪問(wèn)操作。
[0010]優(yōu)選地,在所述動(dòng)態(tài)事務(wù)分片單元中進(jìn)行動(dòng)態(tài)分片時(shí),需要判斷事務(wù)是否可以分片執(zhí)行以實(shí)時(shí)的方式動(dòng)態(tài)地確定,如果事務(wù)不可分片,該事務(wù)就會(huì)以整個(gè)事務(wù)為單位參與到常規(guī)的并發(fā)控制協(xié)議中,按照常規(guī)分布式事務(wù)的形式執(zhí)行并提交。
[0011 ]優(yōu)選地,所述動(dòng)態(tài)分片模塊的工作過(guò)程為:在某時(shí)刻,當(dāng)有事務(wù)請(qǐng)求從應(yīng)用服務(wù)器發(fā)送過(guò)來(lái),動(dòng)態(tài)分片模塊按照當(dāng)前的數(shù)據(jù)分區(qū)方案,把當(dāng)前收到的所有事務(wù)都拆分成小的分片,最后把事務(wù)的分片情況發(fā)送到動(dòng)態(tài)沖突分析模塊進(jìn)行下一步處理;
其中數(shù)據(jù)分區(qū)方案是動(dòng)態(tài)可變的,動(dòng)態(tài)分片模塊讀取到的都是實(shí)時(shí)的分區(qū)方案。
[0012]優(yōu)選地,所述動(dòng)態(tài)沖突分析模塊的工作包括分析沖突和監(jiān)控事務(wù)執(zhí)行情況,其中分析沖突是由沖突分析算法完成,而監(jiān)控事務(wù)執(zhí)行情況向分析算法提供當(dāng)前系統(tǒng)的負(fù)載信息,使得實(shí)時(shí)的沖突分析可以更加準(zhǔn)確。
[0013]優(yōu)選地,所述沖突分析算法基于SC圖理論,主要目標(biāo)是分析出SC圖中的所有SC環(huán),在SC環(huán)中的事務(wù)不可分片,其余的事務(wù)就可分片;所有在動(dòng)態(tài)分片模塊同時(shí)被分片的事務(wù)分片,再加上當(dāng)前在系統(tǒng)中執(zhí)行但未提交的事務(wù),就會(huì)構(gòu)成一個(gè)臨時(shí)的局部SC圖,這個(gè)臨時(shí)的局部SC圖就是沖突分析算法的具體操作對(duì)象;此處加上已執(zhí)行但未提交的事務(wù)是為了分析出其與未執(zhí)行事務(wù)的沖突關(guān)系,在動(dòng)態(tài)化的分析過(guò)程中是必要的,而這些已執(zhí)行但未提交事務(wù)的信息就是由動(dòng)態(tài)沖突分析模塊監(jiān)控事務(wù)執(zhí)行情況的時(shí)候產(chǎn)生的。
[0014]本發(fā)明提出的動(dòng)態(tài)事務(wù)分片技術(shù)給分布式系統(tǒng)引入動(dòng)態(tài)事務(wù)分片和動(dòng)態(tài)沖突分析的模塊,可以動(dòng)態(tài)地對(duì)當(dāng)前需要執(zhí)行的事務(wù)進(jìn)行分片和沖突分析。對(duì)應(yīng)靜態(tài)分片的三個(gè)缺點(diǎn),動(dòng)態(tài)分片技術(shù)有三個(gè)優(yōu)點(diǎn): I)對(duì)程序員透明。在動(dòng)態(tài)分片技術(shù)中,分布式存儲(chǔ)系統(tǒng)加上了動(dòng)態(tài)分片模塊和動(dòng)態(tài)沖突分析模塊,分別負(fù)責(zé)動(dòng)態(tài)對(duì)事務(wù)分片和沖突分析,程序員不需要理會(huì)事務(wù)是否可分片而只需要編寫常規(guī)的事務(wù)代碼。對(duì)程序員的透明性不僅減少了程序員的開(kāi)發(fā)工作量,程序化的模塊工作起來(lái)還會(huì)更加準(zhǔn)確。此外,還可以在不需要修改應(yīng)用代碼的前提下,把分片技術(shù)引入到在一些老舊的應(yīng)用中。
[0015]2)更靈活和準(zhǔn)確?;诋?dāng)前的實(shí)時(shí)數(shù)據(jù)分區(qū)情況和事務(wù)執(zhí)行狀態(tài),動(dòng)態(tài)分片技術(shù)中的事務(wù)分片和沖突分析可以更準(zhǔn)確地分析出當(dāng)前的實(shí)際沖突情況。特別是動(dòng)態(tài)沖突分析模塊,不像靜態(tài)檢測(cè)那樣保守地讓所有可能出現(xiàn)沖突的事務(wù)都不能分片,更靈活和準(zhǔn)確的分析使得更多的事務(wù)可以分片執(zhí)行,從而實(shí)現(xiàn)低延時(shí)提交。
[0016]3)可適應(yīng)于動(dòng)態(tài)可變的數(shù)據(jù)分區(qū)方案。大規(guī)模應(yīng)用的用戶訪問(wèn)通常來(lái)自不同地區(qū)甚至不同時(shí)區(qū),不穩(wěn)定且不可預(yù)測(cè)。為了能在動(dòng)態(tài)的訪問(wèn)模式中保持良好的性能,大規(guī)模分布式存儲(chǔ)系統(tǒng)需要采用動(dòng)態(tài)可變的數(shù)據(jù)分區(qū)方案。動(dòng)態(tài)分片模塊部署在數(shù)據(jù)存儲(chǔ)管理服務(wù)器中,可以根據(jù)當(dāng)前的分區(qū)方案,動(dòng)態(tài)地對(duì)事務(wù)進(jìn)行分片。
【附圖說(shuō)明】
[0017]圖1為兩個(gè)SC圖,1(a)為有SC環(huán)圖,1(b)為無(wú)SC環(huán)圖。
[0018]圖2為數(shù)據(jù)中心中動(dòng)態(tài)事務(wù)分片技術(shù)與其他模塊之間的關(guān)系圖。
[0019]圖3為可分片事務(wù)的執(zhí)行過(guò)程圖。
[0020]圖4為沖突分析算法涉及到的幾種圖的示例圖,4(a)為SC圖,4(b)為復(fù)合C圖,4(C)為簡(jiǎn)單C圖,4(d)為關(guān)聯(lián)矩陣。
[0021 ]圖5為SC圖中分析兩類SC環(huán)的算法流程圖。
【具體實(shí)施方式】
[0022]附圖僅用于示例性說(shuō)明,不能理解為對(duì)本專利的限制;為了更好說(shuō)明本實(shí)施例,附圖某些部件會(huì)有省略、放大或縮小,并不代表實(shí)際產(chǎn)品的尺寸;
對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō),附圖中某些公知結(jié)構(gòu)及其說(shuō)明可能省略是可以理解的。下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的說(shuō)明。
[0023]一種基于動(dòng)態(tài)分片的分布式事務(wù)執(zhí)行方法,在每個(gè)數(shù)據(jù)中心的數(shù)據(jù)庫(kù)管理服務(wù)器中部署有用于控制和管理對(duì)事務(wù)的動(dòng)態(tài)事務(wù)分片單元,動(dòng)態(tài)事務(wù)分片單元包括動(dòng)態(tài)分片模塊和動(dòng)態(tài)沖突分析模塊,采用動(dòng)態(tài)事務(wù)分片單元處理來(lái)自應(yīng)用服務(wù)器的事務(wù)請(qǐng)求,對(duì)該事務(wù)請(qǐng)求進(jìn)行動(dòng)態(tài)分片和動(dòng)態(tài)沖突分析,隨后對(duì)分片后的事務(wù)采用分片執(zhí)行模塊進(jìn)行執(zhí)行,并在數(shù)據(jù)庫(kù)存儲(chǔ)器上執(zhí)行具體的數(shù)據(jù)訪問(wèn)操作。
[0024]本發(fā)明的核心包含兩個(gè)部分:動(dòng)態(tài)分片模塊和動(dòng)態(tài)沖突分析模塊,部署在每個(gè)數(shù)據(jù)中心的數(shù)據(jù)庫(kù)管理服務(wù)器中,負(fù)責(zé)控制和管理對(duì)事務(wù)的動(dòng)態(tài)分片。在數(shù)據(jù)中心中,事務(wù)請(qǐng)求來(lái)自負(fù)責(zé)向用戶響應(yīng)的應(yīng)用服務(wù)器,事務(wù)請(qǐng)求在動(dòng)態(tài)分片的兩個(gè)模塊中完成處理,隨后分片后的事務(wù)受分片執(zhí)行模塊控制,在數(shù)據(jù)存儲(chǔ)服務(wù)器上執(zhí)行具體的數(shù)據(jù)訪問(wèn)操作。圖2展示了數(shù)據(jù)中心中動(dòng)態(tài)事務(wù)分片技術(shù)與其他模塊之間的關(guān)系。
[0025]分布式系統(tǒng)中加入了動(dòng)態(tài)事務(wù)分片技術(shù)之后,事務(wù)是否可以分片執(zhí)行是以實(shí)時(shí)的方式動(dòng)態(tài)地確定。如果事務(wù)不可分片,該事務(wù)就會(huì)以整個(gè)事務(wù)為單位參與到常規(guī)的并發(fā)控制協(xié)議中,按照常規(guī)分布式事務(wù)的形式執(zhí)行并提交。圖3展現(xiàn)了可分片事務(wù)的執(zhí)行過(guò)程,下面詳細(xì)描述動(dòng)態(tài)分片模塊和動(dòng)態(tài)沖突分析模塊的工作過(guò)程。
[0026](I)動(dòng)態(tài)分片模塊
在某個(gè)時(shí)刻,當(dāng)有事務(wù)請(qǐng)求從應(yīng)用服務(wù)器發(fā)送過(guò)來(lái),動(dòng)態(tài)分片模塊會(huì)按照當(dāng)前的數(shù)據(jù)分區(qū)方案,把當(dāng)前收到的所有事務(wù)都拆分成小的分片。最后把事務(wù)的分片情況發(fā)送到動(dòng)態(tài)沖突分析模塊進(jìn)行下一步處理。
[0027]數(shù)據(jù)分區(qū)方案是動(dòng)態(tài)可變的,動(dòng)態(tài)分片模塊讀取到的都是實(shí)時(shí)的分區(qū)方案。另外,為了保證可分片事務(wù)的第一個(gè)分片可在用戶的本地?cái)?shù)據(jù)中心提交,從而實(shí)現(xiàn)低延時(shí)提交。該事務(wù)必須在本地?cái)?shù)據(jù)中心被分片,數(shù)據(jù)分區(qū)方案通常都可以保證這個(gè)性質(zhì)。但若某些情況下不能保證,如分區(qū)方案臨時(shí)改變,該事務(wù)請(qǐng)求應(yīng)該被重新發(fā)送到本地?cái)?shù)據(jù)中心。
[0028](2)動(dòng)態(tài)沖突分析模塊
動(dòng)態(tài)沖突分析模塊的工作分為兩個(gè)方面:分析沖突和監(jiān)控事務(wù)執(zhí)行情況。分析沖突由一個(gè)沖突分析算法完成,而監(jiān)控事務(wù)執(zhí)行情況向分析算法提供當(dāng)前系統(tǒng)的負(fù)載信息,使得實(shí)時(shí)的沖突分析可以更加準(zhǔn)確。
[0029]沖突分析算法是基于SC圖理論,主要目標(biāo)是分析出SC圖中的所有SC環(huán),在SC環(huán)中的事務(wù)不可分片執(zhí)行,其余的事務(wù)就可分片執(zhí)行。所有在動(dòng)態(tài)分片模塊同時(shí)被分片的事務(wù)分片,再加上當(dāng)前在系統(tǒng)中執(zhí)行但未提交的事務(wù),就會(huì)構(gòu)成一個(gè)臨時(shí)的局部SC圖。這個(gè)臨時(shí)的局部SC圖就是分析算法的具體操作對(duì)象。此處加上已執(zhí)行但未提交的事務(wù)是為了分析出它們與未執(zhí)行事務(wù)的沖突關(guān)系,在動(dòng)態(tài)化的分析過(guò)程中是必要的。而這些已執(zhí)行但未提交事務(wù)的信息就是由動(dòng)態(tài)沖突分析模塊監(jiān)控事務(wù)執(zhí)行情況的時(shí)候產(chǎn)生的。
[0030]分析算法在SC圖中檢測(cè)SC環(huán),是一個(gè)圖論算法。首先,分析算法把SC環(huán)分成兩種類型。如圖4(a)中的SC圖,有兩個(gè)SC環(huán):{To,i,To,2, T2>1,T1>2,T1J和{IV,T2,2, Τ2’3}。它是不同類型的SC環(huán),為方便描述,把前者命名為A類SC環(huán),后者為B類SC環(huán)。
[0031 ]兩種類型SC-環(huán)在原始SC圖中不方便檢測(cè),所以分析算法根據(jù)SC圖中事務(wù)的關(guān)系,構(gòu)建對(duì)應(yīng)的以事務(wù)為節(jié)點(diǎn)的復(fù)合C圖,如圖4(b)。復(fù)合C圖是一個(gè)加權(quán)有向多重圖,即兩個(gè)節(jié)點(diǎn)間的邊是有向邊并且可能存在多條邊并且每條邊都有一個(gè)權(quán)值。從始點(diǎn)Ti到終點(diǎn)T2的復(fù)合C邊CT1,T2>的權(quán)值定義如下:
a)若SC圖中TjPT2之間只有一條C邊相連,CT1,Τ2>權(quán)值為正值并且數(shù)值等于T1中與T2相連的分片的編號(hào);
b)若SC圖中TjPT2之間有兩條或更多的C邊相連,〈Ti,T2>權(quán)值為負(fù)值,不失一般性,數(shù)值統(tǒng)一定義為-1。
[0032]復(fù)合C邊的權(quán)值可以用一個(gè)關(guān)聯(lián)矩陣表示,如圖4(d)。顯然,每個(gè)關(guān)聯(lián)矩陣的負(fù)值項(xiàng)都代表著B(niǎo)類SC環(huán)的存在,這是檢測(cè)B類SC環(huán)的條件。
[0033]A類SC環(huán)涉及兩個(gè)以上事務(wù)的分片沖突關(guān)系,需要進(jìn)一步分析。從復(fù)合C圖中去除所有負(fù)值邊,并把每對(duì)對(duì)稱的正值復(fù)合C邊用一條無(wú)向邊表示,就會(huì)得到簡(jiǎn)單C圖,如圖4(c)所示。對(duì)A類SC環(huán)的檢測(cè)是一個(gè)遞歸的環(huán)檢測(cè)過(guò)程,本質(zhì)上是深度優(yōu)先搜索過(guò)程。首先,對(duì)簡(jiǎn)單C圖進(jìn)行的環(huán)檢測(cè)算法可以用常規(guī)的深度優(yōu)先搜索實(shí)現(xiàn),找出某個(gè)環(huán)如{To,Ti, T2}后再進(jìn)行深入的分析。對(duì)于在簡(jiǎn)單C圖中環(huán)中的事務(wù),根據(jù)關(guān)聯(lián)矩陣的信息分析該事務(wù)與相鄰兩個(gè)事務(wù)連接的分片是否同一個(gè)。如To的第一個(gè)分片與Ti相連,而與Τ2相連的是To的第二個(gè)分片。如果是不同的分片,說(shuō)明簡(jiǎn)單C圖中由C邊構(gòu)成的環(huán)經(jīng)過(guò)了 To的S邊〈Το,ιΤο.Α,β卩A類SC環(huán)存在。在SC圖中分析兩類SC環(huán)的算法流程圖如圖5。對(duì)于兩類SC環(huán)中的事務(wù)節(jié)點(diǎn)都標(biāo)記為不可分片,需要以常規(guī)分布式事務(wù)形式執(zhí)行。其余的事務(wù)節(jié)點(diǎn)標(biāo)記為可分片。
[0034]可分片事務(wù)交由分片執(zhí)行模塊執(zhí)行,由分片協(xié)調(diào)器順序依次調(diào)用第一個(gè)分片和后續(xù)分片執(zhí)行,并把每個(gè)分片的執(zhí)行和提交情況都報(bào)告給動(dòng)態(tài)沖突分析模塊,即動(dòng)態(tài)沖突分析模塊監(jiān)控具體的執(zhí)行情況。需要注意的是,動(dòng)態(tài)沖突分析模塊在接收到第一個(gè)分片的提交狀態(tài)之后就會(huì)向應(yīng)用服務(wù)器返回響應(yīng)。
[0035]顯然,本發(fā)明的上述實(shí)施例僅僅是為清楚地說(shuō)明本發(fā)明所作的舉例,而并非是對(duì)本發(fā)明的實(shí)施方式的限定。對(duì)于所屬領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在上述說(shuō)明的基礎(chǔ)上還可以做出其它不同形式的變化或變動(dòng)。這里無(wú)需也無(wú)法對(duì)所有的實(shí)施方式予以窮舉。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明權(quán)利要求的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種基于動(dòng)態(tài)分片的分布式事務(wù)執(zhí)行方法,其特征在于,在每個(gè)數(shù)據(jù)中心的數(shù)據(jù)庫(kù)管理服務(wù)器中部署有用于控制和管理對(duì)事務(wù)的動(dòng)態(tài)事務(wù)分片單元,動(dòng)態(tài)事務(wù)分片單元包括動(dòng)態(tài)分片模塊和動(dòng)態(tài)沖突分析模塊,采用動(dòng)態(tài)事務(wù)分片單元處理來(lái)自應(yīng)用服務(wù)器的事務(wù)請(qǐng)求,對(duì)該事務(wù)請(qǐng)求進(jìn)行動(dòng)態(tài)分片和動(dòng)態(tài)沖突分析,隨后對(duì)分片后的事務(wù)采用分片執(zhí)行模塊進(jìn)行執(zhí)行,并在數(shù)據(jù)庫(kù)存儲(chǔ)器上執(zhí)行具體的數(shù)據(jù)訪問(wèn)操作。2.根據(jù)權(quán)利要求1所述的基于動(dòng)態(tài)分片的分布式事務(wù)執(zhí)行方法,其特征在于,在所述動(dòng)態(tài)事務(wù)分片單元中進(jìn)行動(dòng)態(tài)分片時(shí),需要判斷事務(wù)是否可以分片執(zhí)行以實(shí)時(shí)的方式動(dòng)態(tài)地確定,如果事務(wù)不可分片,該事務(wù)就會(huì)以整個(gè)事務(wù)為單位參與到常規(guī)的并發(fā)控制協(xié)議中,按照常規(guī)分布式事務(wù)的形式執(zhí)行并提交。3.根據(jù)權(quán)利要求1所述的基于動(dòng)態(tài)分片的分布式事務(wù)執(zhí)行方法,其特征在于,所述動(dòng)態(tài)分片模塊的工作過(guò)程為:在某時(shí)刻,當(dāng)有事務(wù)請(qǐng)求從應(yīng)用服務(wù)器發(fā)送過(guò)來(lái),動(dòng)態(tài)分片模塊按照當(dāng)前的數(shù)據(jù)分區(qū)方案,把當(dāng)前收到的所有事務(wù)都拆分成小的分片,最后把事務(wù)的分片情況發(fā)送到動(dòng)態(tài)沖突分析模塊進(jìn)行下一步處理; 其中數(shù)據(jù)分區(qū)方案是動(dòng)態(tài)可變的,動(dòng)態(tài)分片模塊讀取到的都是實(shí)時(shí)的分區(qū)方案。4.根據(jù)權(quán)利要求3所述的基于動(dòng)態(tài)分片的分布式事務(wù)執(zhí)行方法,其特征在于,所述動(dòng)態(tài)沖突分析模塊的工作包括分析沖突和監(jiān)控事務(wù)執(zhí)行情況,其中分析沖突是由沖突分析算法完成,而監(jiān)控事務(wù)執(zhí)行情況向分析算法提供當(dāng)前系統(tǒng)的負(fù)載信息,使得實(shí)時(shí)的沖突分析可以更加準(zhǔn)確。5.根據(jù)權(quán)利要求4所述的基于動(dòng)態(tài)分片的分布式事務(wù)執(zhí)行方法,其特征在于,所述沖突分析算法基于SC圖理論,主要目標(biāo)是分析出SC圖中的所有SC環(huán),在SC環(huán)中的事務(wù)不可分片,其余的事務(wù)就可分片;所有在動(dòng)態(tài)分片模塊同時(shí)被分片的事務(wù)分片,再加上當(dāng)前在系統(tǒng)中執(zhí)行但未提交的事務(wù),就會(huì)構(gòu)成一個(gè)臨時(shí)的局部SC圖,這個(gè)臨時(shí)的局部SC圖就是沖突分析算法的具體操作對(duì)象;此處加上已執(zhí)行但未提交的事務(wù)是為了分析出其與未執(zhí)行事務(wù)的沖突關(guān)系,在動(dòng)態(tài)化的分析過(guò)程中是必要的,而這些已執(zhí)行但未提交事務(wù)的信息就是由動(dòng)態(tài)沖突分析模塊監(jiān)控事務(wù)執(zhí)行情況的時(shí)候產(chǎn)生的。
【文檔編號(hào)】G06F3/06GK105892957SQ201610427437
【公開(kāi)日】2016年8月24日
【申請(qǐng)日】2016年6月14日
【發(fā)明人】黃寧, 吳維剛
【申請(qǐng)人】中山大學(xué)