本技術(shù)涉及數(shù)據(jù)庫,特別涉及一種數(shù)據(jù)庫系統(tǒng)及其數(shù)據(jù)管理方法。
背景技術(shù):
1、目前,在數(shù)據(jù)庫系統(tǒng)的事務(wù)處理過程中,需要多個數(shù)據(jù)庫節(jié)點的共同參與和協(xié)作處理。并且,在事務(wù)的處理過程中,協(xié)調(diào)者節(jié)點和參與者節(jié)點在接收到客戶端的寫請求后,都需要先進(jìn)行相應(yīng)的持久化操作,然后才能向客戶端返回對應(yīng)的寫響應(yīng)。由于持久化操作處于事務(wù)處理過程中的關(guān)鍵路徑上,其會造成單個事務(wù)的端到端時延過長的問題。
技術(shù)實現(xiàn)思路
1、本技術(shù)提供了一種數(shù)據(jù)庫系統(tǒng)及其數(shù)據(jù)管理方法。本技術(shù)減小了客戶端處理事務(wù)的時延,能夠解決客戶端處理事務(wù)的時延過大的問題,且減輕了數(shù)據(jù)庫節(jié)點的持久化負(fù)載。本技術(shù)提供的技術(shù)方案如下:
2、第一方面,本技術(shù)提供了一種數(shù)據(jù)庫系統(tǒng)。數(shù)據(jù)庫系統(tǒng)包括:客戶端、多個數(shù)據(jù)庫節(jié)點和存儲資源,多個數(shù)據(jù)庫節(jié)點包括第一數(shù)據(jù)庫節(jié)點;客戶端用于向第一數(shù)據(jù)庫節(jié)點發(fā)送目標(biāo)事務(wù)的第一寫請求,第一寫請求用于指示待寫入的第一數(shù)據(jù);第一數(shù)據(jù)庫節(jié)點用于基于第一寫請求,向客戶端發(fā)送第一寫響應(yīng),第一寫響應(yīng)攜帶有第一數(shù)據(jù)的第一寫操作日志;客戶端還用于利用存儲資源對第一寫操作日志進(jìn)行持久化。
3、在該數(shù)據(jù)庫系統(tǒng)中,通過客戶端對第一寫操作日志進(jìn)行持久化,使得第一數(shù)據(jù)庫節(jié)點在不對第一寫操作日志進(jìn)行持久化的情況下,就能夠向客戶端發(fā)送寫響應(yīng),這樣能夠便于客戶端盡快地發(fā)送下一條寫請求,減小了客戶端處理事務(wù)的時延,能夠解決客戶端處理事務(wù)的時延過大的問題,且減輕了數(shù)據(jù)庫節(jié)點的持久化負(fù)載。
4、可選的,多個數(shù)據(jù)庫節(jié)點還包括第二數(shù)據(jù)庫節(jié)點;客戶端還用于向第二數(shù)據(jù)庫節(jié)點發(fā)送目標(biāo)事務(wù)的第二寫請求,第二寫請求用于指示待寫入的第二數(shù)據(jù);第二數(shù)據(jù)庫節(jié)點用于基于第二寫請求,向客戶端發(fā)送第二寫響應(yīng),第二寫響應(yīng)攜帶有第二數(shù)據(jù)的第二寫操作日志;客戶端具體用于利用存儲資源,對第一寫操作日志和第二寫操作日志進(jìn)行批量持久化。這樣一來,能夠減少客戶端向存儲資源發(fā)送的持久化請求的個數(shù),進(jìn)而減少數(shù)據(jù)庫系統(tǒng)處理單個事務(wù)需要發(fā)送的請求的總數(shù),能夠為數(shù)據(jù)庫系統(tǒng)帶來更高的極限吞吐率。
5、在一種實現(xiàn)方式中,客戶端和數(shù)據(jù)庫節(jié)點均具有獨占的存儲資源??蛻舳撕蛿?shù)據(jù)庫節(jié)點的獨占資源均可以通過事先聲明得到。此時,客戶端具體用于在其獨占的存儲資源中對寫操作日志進(jìn)行持久化。并且,客戶端在存儲資源中持久化寫操作日志時,可以通過追加寫的方式向存儲資源寫入寫操作日志。這樣一來,當(dāng)客戶端在其獨占存儲資源中持久化寫操作日志時,該獨占資源中存儲的均為寫操作日志。當(dāng)目標(biāo)事務(wù)有多個寫操作日志時,該多個寫操作日志連續(xù)存儲在存儲資源中。在需要讀取目標(biāo)事務(wù)的所有寫操作日志時,能夠在獨占存儲中順序地讀取該目標(biāo)事務(wù)的多個寫操作日志,能夠縮短讀取寫操作日志耗費(fèi)的時間,保證寫操作日志的讀取速度。
6、在該數(shù)據(jù)庫系統(tǒng)中,多個數(shù)據(jù)庫節(jié)點包括協(xié)調(diào)者節(jié)點和參與者節(jié)點;客戶端還用于向協(xié)調(diào)者節(jié)點提供目標(biāo)事務(wù)的所有寫操作日志;協(xié)調(diào)者節(jié)點用于基于該所有寫操作日志,獲取協(xié)調(diào)者節(jié)點負(fù)責(zé)的第三寫操作日志,利用存儲資源對第三寫操作日志進(jìn)行持久化;協(xié)調(diào)者節(jié)點還用于基于該所有寫操作日志,獲取參與者節(jié)點負(fù)責(zé)的第四寫操作日志,向參與者節(jié)點發(fā)送第四寫操作日志;參與者節(jié)點用于利用存儲資源對第四寫操作日志進(jìn)行持久化。
7、這樣一來,協(xié)調(diào)者節(jié)點和參與者節(jié)點均能夠?qū)ψ陨碡?fù)責(zé)的寫操作日志進(jìn)行持久化,在需要使用寫操作日志時,例如在需要基于寫操作日志進(jìn)行事務(wù)恢復(fù)時,協(xié)調(diào)者節(jié)點和參與者節(jié)點均能夠從各自的存儲資源中獲取各自持久化的寫操作日志,并基于獲取的寫操作日志執(zhí)行相關(guān)的處理,而無需獲取客戶端持久化的寫操作日志,無需反復(fù)讀取自己的存儲資源和客戶端的存儲資源,有利于提高基于寫操作日志執(zhí)行的操作的執(zhí)行速度。
8、為了保證協(xié)調(diào)者節(jié)點能夠獲取目標(biāo)事務(wù)的寫操作日志,客戶端還用于向協(xié)調(diào)者節(jié)點提供所有寫操作日志的存儲地址。
9、當(dāng)協(xié)調(diào)者節(jié)點具有獨占的存儲資源時,協(xié)調(diào)者節(jié)點具體用于在其獨占的存儲資源中對第三寫操作日志進(jìn)行持久化。和/或,當(dāng)參與者節(jié)點具有獨占的存儲資源時,參與者節(jié)點具體用于在其獨占的存儲資源中對第四寫操作日志進(jìn)行持久化。并且,協(xié)調(diào)者節(jié)點和/或參與者節(jié)點可以通過追加寫的方式向存儲資源寫入寫操作日志。這樣一來,當(dāng)數(shù)據(jù)庫節(jié)點在其獨占存儲資源中持久化寫操作日志時,該獨占存儲資源中存儲的數(shù)據(jù)為事務(wù)的相關(guān)信息(如事務(wù)的狀態(tài))和寫操作日志,且事務(wù)的相關(guān)信息和寫操作日志按照時序連續(xù)存儲在存儲資源中。在需要獲取目標(biāo)事務(wù)的相關(guān)信息和寫操作日志時,能夠在獨占存儲中順序地讀取該目標(biāo)事務(wù)的相關(guān)信息和寫操作日志,保證讀取速度。例如,在需要恢復(fù)目標(biāo)事務(wù)時,通常需要先查詢目標(biāo)事務(wù)的狀態(tài),然后根據(jù)該狀態(tài)確定是否需要基于數(shù)據(jù)庫節(jié)點持久化的寫操作日志進(jìn)行事務(wù)恢復(fù),當(dāng)需要基于數(shù)據(jù)庫節(jié)點持久化的寫操作日志進(jìn)行事務(wù)恢復(fù)時,就能夠在目標(biāo)事務(wù)的狀態(tài)的存儲地址后順序地讀取該數(shù)據(jù)庫節(jié)點持久化的寫操作日志,這樣能夠縮短讀取狀態(tài)和寫操作日志耗費(fèi)的時間,有助于保證事務(wù)恢復(fù)的速度。
10、在一種實現(xiàn)方式中,多個數(shù)據(jù)節(jié)點中的任一數(shù)據(jù)節(jié)點還用于在需要恢復(fù)目標(biāo)事務(wù)時,獲取目標(biāo)事務(wù)的當(dāng)前狀態(tài),基于當(dāng)前狀態(tài)執(zhí)行目標(biāo)事務(wù)的恢復(fù)過程。
11、其中,協(xié)調(diào)者節(jié)點具體用于:當(dāng)當(dāng)前狀態(tài)指示目標(biāo)事務(wù)處于正在執(zhí)行狀態(tài)時,在接收客戶端的寫請求后,向客戶端發(fā)送指示重新執(zhí)行目標(biāo)事務(wù)的寫響應(yīng);當(dāng)當(dāng)前狀態(tài)指示目標(biāo)事務(wù)處于已提交狀態(tài)時,獲取客戶端持久化的寫操作日志,基于客戶端持久化的寫操作日志執(zhí)行重放操作;當(dāng)當(dāng)前狀態(tài)指示目標(biāo)事務(wù)處于已完成狀態(tài)時,獲取第三寫操作日志,基于第三寫操作日志執(zhí)行重放操作。
12、可選的,協(xié)調(diào)者節(jié)點還用于當(dāng)當(dāng)前狀態(tài)指示目標(biāo)事務(wù)處于已提交狀態(tài)時,基于客戶端持久化的寫操作日志,獲取參與者節(jié)點負(fù)責(zé)的第四寫操作日志,向參與者節(jié)點發(fā)送第四寫操作日志;參與者節(jié)點還用于利用存儲資源對第四寫操作日志進(jìn)行持久化。
13、參與者節(jié)點具體用于:當(dāng)當(dāng)前狀態(tài)指示參與者節(jié)點已對目標(biāo)事務(wù)的寫操作日志進(jìn)行持久化時,基于第四寫操作日志執(zhí)行重放操作;當(dāng)當(dāng)前狀態(tài)指示參與者節(jié)點未對目標(biāo)事務(wù)的寫操作日志進(jìn)行持久化時,若指定時長內(nèi)接收到參與者節(jié)點負(fù)責(zé)的第四寫操作日志,基于第四寫操作日志執(zhí)行重放操作;當(dāng)當(dāng)前狀態(tài)指示參與者節(jié)點未對目標(biāo)事務(wù)的寫操作日志進(jìn)行持久化時,且指定時長內(nèi)未接收到參與者節(jié)點負(fù)責(zé)的第四寫操作日志,在接收客戶端的寫請求后,向客戶端發(fā)送指示重新執(zhí)行目標(biāo)事務(wù)的寫響應(yīng)。
14、當(dāng)協(xié)調(diào)者節(jié)點和參與者節(jié)點也將各自負(fù)責(zé)的寫操作日志進(jìn)行持久化后,事務(wù)的寫操作日志實際上被存儲了兩份,第一份由客戶端持久化,第二份由協(xié)調(diào)者節(jié)點和參與者節(jié)點持久化。這樣雖然能夠便于對寫操作日志的使用,但這樣也造成了冗余存儲。為了降低存儲空間上的開銷,本技術(shù)實施例提供的數(shù)據(jù)庫系統(tǒng)還具有存儲空間的回收機(jī)制。在一種實現(xiàn)方式中,協(xié)調(diào)者節(jié)點還用于在目標(biāo)事務(wù)完成時,向客戶端發(fā)送存儲空間的回收請求,回收請求攜帶有存儲空間的指示信息;客戶端還用于基于回收請求,對存儲空間進(jìn)行回收。
15、可選的,指示信息為存儲空間的地址。
16、第二方面,本技術(shù)提供了一種數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)管理方法。數(shù)據(jù)庫系統(tǒng)包括:客戶端、多個數(shù)據(jù)庫節(jié)點和存儲資源,多個數(shù)據(jù)庫節(jié)點包括第一數(shù)據(jù)庫節(jié)點,該方法包括:客戶端向第一數(shù)據(jù)庫節(jié)點發(fā)送目標(biāo)事務(wù)的第一寫請求,第一寫請求用于指示待寫入的第一數(shù)據(jù);第一數(shù)據(jù)庫節(jié)點基于第一寫請求,向客戶端發(fā)送第一寫響應(yīng),第一寫響應(yīng)攜帶有第一數(shù)據(jù)的第一寫操作日志;客戶端利用存儲資源對第一寫操作日志進(jìn)行持久化。
17、可選的,多個數(shù)據(jù)庫節(jié)點還包括第二數(shù)據(jù)庫節(jié)點,該方法還包括:客戶端向第二數(shù)據(jù)庫節(jié)點發(fā)送目標(biāo)事務(wù)的第二寫請求,第二寫請求用于指示待寫入的第二數(shù)據(jù);第二數(shù)據(jù)庫節(jié)點基于第二寫請求,向客戶端發(fā)送第二寫響應(yīng),第二寫響應(yīng)攜帶有第二數(shù)據(jù)的第二寫操作日志;客戶端利用存儲資源對第一寫操作日志進(jìn)行持久化,包括:客戶端利用存儲資源,對第一寫操作日志和第二寫操作日志進(jìn)行批量持久化。
18、可選的,客戶端利用存儲資源對第一寫操作日志進(jìn)行持久化,包括:客戶端在其獨占的存儲資源中對寫操作日志進(jìn)行持久化。
19、可選的,多個數(shù)據(jù)庫節(jié)點包括協(xié)調(diào)者節(jié)點和參與者節(jié)點,該方法還包括:客戶端向協(xié)調(diào)者節(jié)點提供目標(biāo)事務(wù)的所有寫操作日志;協(xié)調(diào)者節(jié)點基于所有寫操作日志,獲取協(xié)調(diào)者節(jié)點負(fù)責(zé)的第三寫操作日志,利用存儲資源對第三寫操作日志進(jìn)行持久化;協(xié)調(diào)者節(jié)點基于所有寫操作日志,獲取參與者節(jié)點負(fù)責(zé)的第四寫操作日志,向參與者節(jié)點發(fā)送第四寫操作日志;參與者節(jié)點利用存儲資源對第四寫操作日志進(jìn)行持久化。
20、可選的,該方法還包括:客戶端向協(xié)調(diào)者節(jié)點提供所有寫操作日志的存儲地址。
21、可選的,協(xié)調(diào)者節(jié)點在其獨占的存儲資源中對第三寫操作日志進(jìn)行持久化;和/或,參與者節(jié)點在其獨占的存儲資源中對第四寫操作日志進(jìn)行持久化。
22、可選的,存儲資源中的數(shù)據(jù)通過追加寫的方式寫入。
23、可選的,該方法還包括:多個數(shù)據(jù)節(jié)點中的任一數(shù)據(jù)節(jié)點在需要恢復(fù)目標(biāo)事務(wù)時,獲取目標(biāo)事務(wù)的當(dāng)前狀態(tài),基于當(dāng)前狀態(tài)執(zhí)行目標(biāo)事務(wù)的恢復(fù)過程。
24、可選的,協(xié)調(diào)者節(jié)點基于當(dāng)前狀態(tài)執(zhí)行目標(biāo)事務(wù)的恢復(fù)過程,包括:當(dāng)當(dāng)前狀態(tài)指示目標(biāo)事務(wù)處于正在執(zhí)行狀態(tài)時,在接收客戶端的寫請求后,向客戶端發(fā)送指示重新執(zhí)行目標(biāo)事務(wù)的寫響應(yīng);當(dāng)當(dāng)前狀態(tài)指示目標(biāo)事務(wù)處于已提交狀態(tài)時,獲取客戶端持久化的寫操作日志,基于客戶端持久化的寫操作日志執(zhí)行重放操作;當(dāng)當(dāng)前狀態(tài)指示目標(biāo)事務(wù)處于已完成狀態(tài)時,獲取第三寫操作日志,基于第三寫操作日志執(zhí)行重放操作。
25、可選的,該方法還包括:協(xié)調(diào)者節(jié)點當(dāng)當(dāng)前狀態(tài)指示目標(biāo)事務(wù)處于已提交狀態(tài)時,基于客戶端持久化的寫操作日志,獲取參與者節(jié)點負(fù)責(zé)的第四寫操作日志,向參與者節(jié)點發(fā)送第四寫操作日志;參與者節(jié)點利用存儲資源對第四寫操作日志進(jìn)行持久化。
26、可選的,參與者節(jié)點基于當(dāng)前狀態(tài)執(zhí)行目標(biāo)事務(wù)的恢復(fù)過程,包括:當(dāng)當(dāng)前狀態(tài)指示參與者節(jié)點已對目標(biāo)事務(wù)的寫操作日志進(jìn)行持久化時,基于第四寫操作日志執(zhí)行重放操作;當(dāng)當(dāng)前狀態(tài)指示參與者節(jié)點未對目標(biāo)事務(wù)的寫操作日志進(jìn)行持久化時,若指定時長內(nèi)接收到參與者節(jié)點負(fù)責(zé)的第四寫操作日志,基于第四寫操作日志執(zhí)行重放操作;當(dāng)當(dāng)前狀態(tài)指示參與者節(jié)點未對目標(biāo)事務(wù)的寫操作日志進(jìn)行持久化時,且指定時長內(nèi)未接收到參與者節(jié)點負(fù)責(zé)的第四寫操作日志,在接收客戶端的寫請求后,向客戶端發(fā)送指示重新執(zhí)行目標(biāo)事務(wù)的寫響應(yīng)。
27、可選的,在參與者節(jié)點利用存儲資源對第四寫操作日志進(jìn)行持久化之后,該方法還包括:協(xié)調(diào)者節(jié)點在目標(biāo)事務(wù)完成時,向客戶端發(fā)送存儲空間的回收請求,回收請求攜帶有存儲空間的指示信息;客戶端基于回收請求,對存儲空間進(jìn)行回收。
28、可選的,指示信息為存儲空間的地址。
29、第三方面,本技術(shù)提供了一種計算設(shè)備,包括存儲器和處理器,存儲器存儲有程序指令,處理器運(yùn)行程序指令以實現(xiàn)本技術(shù)第一方面以及其任一種可能的實現(xiàn)方式中提供的系統(tǒng)中的客戶端、數(shù)據(jù)庫節(jié)點或存儲資源。
30、第四方面,本技術(shù)提供了一種計算設(shè)備集群,包括多個計算設(shè)備,多個計算設(shè)備包括多個處理器和多個存儲器,多個存儲器中存儲有程序指令,多個處理器運(yùn)行程序指令,使得計算設(shè)備集群實現(xiàn)本技術(shù)第一方面以及其任一種可能的實現(xiàn)方式中提供的系統(tǒng)。
31、第五方面,本技術(shù)提供了一種計算機(jī)可讀存儲介質(zhì),該計算機(jī)可讀存儲介質(zhì)為非易失性計算機(jī)可讀存儲介質(zhì),該計算機(jī)可讀存儲介質(zhì)包括程序指令,當(dāng)程序指令在計算設(shè)備上運(yùn)行時,使得計算設(shè)備執(zhí)行本技術(shù)第一方面以及其任一種可能的實現(xiàn)方式中提供的系統(tǒng)。
32、第六方面,本技術(shù)提供了一種包含指令的計算機(jī)程序產(chǎn)品,當(dāng)計算機(jī)程序產(chǎn)品在計算機(jī)上運(yùn)行時,使得計算機(jī)執(zhí)行本技術(shù)第一方面以及其任一種可能的實現(xiàn)方式中提供的系統(tǒng)。