一種操作數(shù)據(jù)及管理事務(wù)的方法、裝置及分布式系統(tǒng)的制作方法【專利摘要】本發(fā)明的目的是提供一種操作數(shù)據(jù)及管理事務(wù)的方法、裝置及分布式系統(tǒng)。其中,本發(fā)明包括一種在數(shù)據(jù)庫(kù)中用于操作數(shù)據(jù)的方法和裝置。本發(fā)明還包括一種在分布式數(shù)據(jù)庫(kù)系統(tǒng)中用于管理事務(wù)的方法和裝置,其中,所述分布式數(shù)據(jù)庫(kù)系統(tǒng)包含多個(gè)數(shù)據(jù)庫(kù),所述數(shù)據(jù)庫(kù)適于執(zhí)行上述用于操作數(shù)據(jù)的方法。并且本發(fā)明還包括一種分布式數(shù)據(jù)庫(kù)系統(tǒng),其包括包含多個(gè)上述在數(shù)據(jù)庫(kù)中用于操作數(shù)據(jù)的裝置的數(shù)據(jù)庫(kù)設(shè)備,以及包含上述用于管理分布式數(shù)據(jù)庫(kù)系統(tǒng)中的事務(wù)的裝置的設(shè)備。與現(xiàn)有技術(shù)相比,本發(fā)明可以根據(jù)歷史版本號(hào)來獲取數(shù)據(jù)的歷史版本,從而為數(shù)據(jù)操作提供了更加靈活的方式,并保證分布式數(shù)據(jù)的一致性?!緦@f明】一種操作數(shù)據(jù)及管理事務(wù)的方法、裝置及分布式系統(tǒng)【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及數(shù)據(jù)庫(kù)領(lǐng)域,尤其涉及數(shù)據(jù)操作及事務(wù)管理的方法與裝置以及分布式數(shù)據(jù)庫(kù)系統(tǒng)?!?br>背景技術(shù):
】[0002]當(dāng)前,在保證分布式數(shù)據(jù)一致性方面典型地可以使用基于XA協(xié)議的兩階段提交方法。然而,當(dāng)使用XA協(xié)議時(shí),為了保證分布式數(shù)據(jù)的一致性,通常需要將在數(shù)據(jù)庫(kù)實(shí)例上所執(zhí)行的事務(wù)的隔離級(jí)別設(shè)置為可串行化(Serializable)級(jí)別。然而,可串行化隔離級(jí)別將會(huì)導(dǎo)致讀、寫操作相互阻塞,從而嚴(yán)重影響系統(tǒng)性能。現(xiàn)有技術(shù)中,在單機(jī)數(shù)據(jù)庫(kù)或數(shù)據(jù)庫(kù)集群中可以使用例如多版本并發(fā)控制MVCC(MultiVersionConcurrencyControl)來使系統(tǒng)運(yùn)行在例如可重復(fù)讀(ReadR印eatable)隔離級(jí)別,并提供數(shù)據(jù)一致性保證。使用MVCC,系統(tǒng)性能得以提升,然而,將XA協(xié)議與MVCC技術(shù)相結(jié)合應(yīng)用于分布式數(shù)據(jù)庫(kù)系統(tǒng)時(shí),對(duì)于一些特定的場(chǎng)景,例如全局事務(wù)僅在某些數(shù)據(jù)庫(kù)實(shí)例上提交成功時(shí),仍然存在一致性問題。[0003]對(duì)于分布式數(shù)據(jù)一致性的另一種解決方案是在是應(yīng)用層來進(jìn)行保證,然而對(duì)于已有的應(yīng)用層系統(tǒng),通過改寫代碼以增加保證數(shù)據(jù)一致性支持的邏輯,代價(jià)很大。[0004]因此,如何保證分布式數(shù)據(jù)的一致性是一個(gè)需要解決的問題?!?br/>發(fā)明內(nèi)容】[0005]本發(fā)明的目的是提供一種在數(shù)據(jù)庫(kù)中用于操作數(shù)據(jù)的方法和裝置,以及一種在分布式數(shù)據(jù)庫(kù)系統(tǒng)中用于管理事務(wù)的方法和裝置,以及一種分布式數(shù)據(jù)存儲(chǔ)與操作系統(tǒng)。[0006]根據(jù)本發(fā)明的一個(gè)方面,提供一種在數(shù)據(jù)庫(kù)中用于操作數(shù)據(jù)的方法,其中,該方法包括:[0007]-獲取正在運(yùn)行的第一事務(wù)中所包含的對(duì)于所述數(shù)據(jù)庫(kù)的查詢操作命令,其中所述查詢操作命令包含歷史版本號(hào);[0008]-根據(jù)所述查詢操作命令執(zhí)行所述查詢操作,以獲取所述數(shù)據(jù)庫(kù)中的相關(guān)數(shù)據(jù)的相應(yīng)的歷史版本。[0009]根據(jù)本發(fā)明的另一個(gè)方面,提供一種在分布式數(shù)據(jù)庫(kù)系統(tǒng)中用于管理事務(wù)的方法,其中,所述分布式數(shù)據(jù)庫(kù)系統(tǒng)包含多個(gè)數(shù)據(jù)庫(kù),所述數(shù)據(jù)庫(kù)適于執(zhí)行本發(fā)明一個(gè)上述方面的在數(shù)據(jù)庫(kù)中用于操作數(shù)據(jù)的方法,所述用于管理事務(wù)的方法包括:[0010]-獲取正在運(yùn)行的第二事務(wù)中所包含的對(duì)于所述分布式數(shù)據(jù)庫(kù)系統(tǒng)的第一操作命令;[0011]-根據(jù)該分布式數(shù)據(jù)庫(kù)系統(tǒng)中各個(gè)第二事務(wù)的相關(guān)信息,各個(gè)第二事務(wù)的操作狀態(tài)信息,以及各個(gè)第二事務(wù)所對(duì)應(yīng)的各歷史版本號(hào)來確定所述第一操作所要使用的歷史版本號(hào);[0012]-根據(jù)上述第一操作命令以及上述歷史版本號(hào)來生成所述第二事務(wù)的一個(gè)或多個(gè)第二操作命令,所述第二操作命令包含所述歷史版本號(hào);[0013]-將所述一個(gè)或多個(gè)第二操作命令發(fā)送至該分布式數(shù)據(jù)庫(kù)系統(tǒng)中的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)來執(zhí)行。[0014]根據(jù)本發(fā)明的又一個(gè)方面,提供一種在數(shù)據(jù)庫(kù)設(shè)備中用于操作數(shù)據(jù)的裝置,其包括:[0015]-用于獲取正在運(yùn)行的第一事務(wù)中所包含的對(duì)于所述數(shù)據(jù)庫(kù)的查詢操作命令,其中所述查詢操作命令包含歷史版本號(hào)的裝置;[0016]-用于根據(jù)所述查詢操作命令執(zhí)行所述查詢操作,以獲取所述數(shù)據(jù)庫(kù)中的相關(guān)數(shù)據(jù)的相應(yīng)的歷史版本的裝置。[0017]根據(jù)本發(fā)明的還一個(gè)方面,提供一種在分布式數(shù)據(jù)庫(kù)系統(tǒng)中用于管理事務(wù)的裝置,其中,所述分布式數(shù)據(jù)庫(kù)系統(tǒng)包含多個(gè)數(shù)據(jù)庫(kù),所述數(shù)據(jù)庫(kù)適于執(zhí)行本發(fā)明的一個(gè)上述方面的一種在數(shù)據(jù)庫(kù)中用于操作數(shù)據(jù)的方法中所述的任一項(xiàng)所述的方法,所述用于管理分布式數(shù)據(jù)庫(kù)系統(tǒng)中的事務(wù)的裝置包括:[0018]-用于獲取正在運(yùn)行的第二事務(wù)中所包含的對(duì)于所述分布式數(shù)據(jù)庫(kù)系統(tǒng)的第一操作命令的裝置;[0019]-用于根據(jù)該分布式數(shù)據(jù)庫(kù)系統(tǒng)中各個(gè)第二事務(wù)的相關(guān)信息,各個(gè)第二事務(wù)的操作狀態(tài)信息,以及各個(gè)第二事務(wù)所對(duì)應(yīng)的各歷史版本號(hào)來確定所述第一操作命令所要使用的歷史版本號(hào)的裝置;[0020]-用于根據(jù)上述第一操作命令以及上述歷史版本號(hào)來生成所述第二事務(wù)的一個(gè)或多個(gè)第二操作命令,所述第二操作命令包含所述歷史版本號(hào)的裝置;[0021]-用于將所述一個(gè)或多個(gè)第二操作命令發(fā)送至該分布式數(shù)據(jù)庫(kù)系統(tǒng)中的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)來執(zhí)行的裝置。[0022]根據(jù)本發(fā)明的再一個(gè)方面,提供一種分布式數(shù)據(jù)庫(kù)系統(tǒng),其包括包含多個(gè)本發(fā)明的一個(gè)上述方面的在數(shù)據(jù)庫(kù)設(shè)備中用于操作數(shù)據(jù)的裝置的數(shù)據(jù)庫(kù)設(shè)備,以及包含本發(fā)明的一個(gè)上述方面所述的在分布式數(shù)據(jù)庫(kù)系統(tǒng)中用于管理事務(wù)的裝置的設(shè)備。[0023]與現(xiàn)有技術(shù)相比,依據(jù)本發(fā)明的數(shù)據(jù)庫(kù)支持根據(jù)歷史版本號(hào)來獲取數(shù)據(jù)的歷史版本,從而為數(shù)據(jù)操作提供了更加靈活的方式。尤其當(dāng)數(shù)據(jù)的最新版本存在一致性問題時(shí),依據(jù)本發(fā)明能夠獲取并操作數(shù)據(jù)的歷史版本,以保證數(shù)據(jù)的一致性以及事務(wù)的正確處理。并且,依據(jù)本發(fā)明,可以根據(jù)事務(wù)的相關(guān)信息及操作狀態(tài),確定正在分布式數(shù)據(jù)庫(kù)系統(tǒng)中運(yùn)行的事務(wù)的操作中應(yīng)包含的歷史版本號(hào),以操作對(duì)應(yīng)于該歷史版本號(hào)的歷史數(shù)據(jù)。依據(jù)本發(fā)明的分布式數(shù)據(jù)庫(kù)系統(tǒng)使用上述數(shù)據(jù)操作和事務(wù)處理的方法,從而當(dāng)例如全局事務(wù)僅在某些數(shù)據(jù)庫(kù)實(shí)例上提交成功從而造成分布式數(shù)據(jù)一致性問題時(shí),仍能夠獲取和操作數(shù)據(jù)的歷史版本以保證數(shù)據(jù)的一致性,從而保證事務(wù)的正確處理。因此,本發(fā)明提供了更加靈活的數(shù)據(jù)操作方式,并提供了對(duì)數(shù)據(jù)一致性問題的解決方案?!緦@綀D】【附圖說明】[0024]通過閱讀參照以下附圖所作的對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本發(fā)明的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:[0025]圖1示出根據(jù)本發(fā)明一個(gè)方面的實(shí)施例的用于在數(shù)據(jù)庫(kù)中操作數(shù)據(jù)的方法的流程圖;[0026]圖2示出根據(jù)本發(fā)明另一個(gè)方面的實(shí)施例的在分布式數(shù)據(jù)庫(kù)系統(tǒng)中用于管理事務(wù)的方法的流程圖;[0027]圖3示出根據(jù)本發(fā)明再一個(gè)方面的在數(shù)據(jù)庫(kù)設(shè)備中用于操作數(shù)據(jù)的裝置的示意圖;[0028]圖4示出根據(jù)本發(fā)明還一個(gè)方面的在分布式數(shù)據(jù)存儲(chǔ)和查詢系統(tǒng)中用于事務(wù)處理的裝置的示意圖;[0029]圖5示出根據(jù)本發(fā)明又一個(gè)方面的分布式數(shù)據(jù)存儲(chǔ)和查詢系統(tǒng)的示意圖。[0030]附圖中相同或相似的附圖標(biāo)記代表相同或相似的部件。【具體實(shí)施方式】[0031]下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。[0032]在本文中,數(shù)據(jù)庫(kù)是指按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù),典型地,其可以為關(guān)系數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)可以運(yùn)行在單獨(dú)的設(shè)備或共享的設(shè)備上。為簡(jiǎn)明起見,在下文中,如非另有說明,數(shù)據(jù)庫(kù)將為關(guān)系數(shù)據(jù)庫(kù)。本領(lǐng)域技術(shù)人員應(yīng)能理解,其他的數(shù)據(jù)庫(kù)類型如同樣適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并以引用方式包含于此。[0033]-般地,數(shù)據(jù)庫(kù)可以通過特定的接口或網(wǎng)絡(luò)與客戶端通信,從而客戶端可以向數(shù)據(jù)庫(kù)發(fā)送操作命令,并且從數(shù)據(jù)庫(kù)接收操作命令的執(zhí)行結(jié)果。此處客戶端泛指可以與數(shù)據(jù)庫(kù)進(jìn)行上述交互的各種方式,其包括但不限于用戶客戶端、應(yīng)用層、分布式數(shù)據(jù)庫(kù)系統(tǒng)中用于管理事務(wù)的模塊等。本領(lǐng)域技術(shù)人員應(yīng)理解,此處,上述所列舉的客戶端僅為示例性而非限定性描述,存在各種其他的客戶端而不背離本發(fā)明的精神或范疇,并以引用的方式包含于此。[0034]此外,數(shù)據(jù)庫(kù)可以指獨(dú)立數(shù)據(jù)庫(kù),也可以指分布式數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)庫(kù)實(shí)例。此處,分布式數(shù)據(jù)庫(kù)系統(tǒng)指由分布在不同設(shè)備上的多個(gè)數(shù)據(jù)庫(kù)通過網(wǎng)絡(luò)連接所構(gòu)成系統(tǒng),其在邏輯上是統(tǒng)一的整體。[0035]事務(wù)是指作為單個(gè)邏輯工作單元來執(zhí)行的一系列操作,其具有原子性,也即事務(wù)或是完整地執(zhí)行,或是完全不執(zhí)行。通過將一組相關(guān)的操作組合成事務(wù),可以確保除非事務(wù)中的所有操作都成功完成,并且事務(wù)被成功提交,否則該事務(wù)所涉及的數(shù)據(jù)更新(包括增力口、刪除、更改等)均將被回滾。[0036]在數(shù)據(jù)庫(kù)中,為支持多個(gè)事務(wù)的并發(fā)操作,可以為事務(wù)定義不同的隔離級(jí)別并使用不同的并發(fā)機(jī)制。其中,多版本并發(fā)控制(Multi-VersionConcurrencyControl,MVCC)維持?jǐn)?shù)據(jù)的多個(gè)版本,以較小的開銷實(shí)現(xiàn)并發(fā)控制,其允許非阻塞式讀,并在寫操作時(shí)只鎖定必要的記錄。為簡(jiǎn)明起見,在本文的實(shí)施例中,當(dāng)涉及事務(wù)的并發(fā)控制時(shí),將使用MVCC機(jī)制。本領(lǐng)域技術(shù)人員應(yīng)理解,其他的事務(wù)并發(fā)控制方式如同樣適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并以引用方式包含于此。并且在本文中,數(shù)據(jù)的歷史版本是指存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)由于被多個(gè)事務(wù)先后操作所生成的具有先后順序的各個(gè)版本的數(shù)據(jù)。歷史版本號(hào)是指由數(shù)據(jù)庫(kù)所分配的指示數(shù)據(jù)的歷史版本的編號(hào)。當(dāng)數(shù)據(jù)庫(kù)使用MVCC機(jī)制時(shí),其可以為MVCC中所使用的數(shù)據(jù)的版本號(hào)。此外,對(duì)于某事務(wù)TXn,其所對(duì)應(yīng)的歷史版本號(hào)是指,該歷史版本號(hào)所指示的該歷史版本的數(shù)據(jù)為已經(jīng)完成提交(對(duì)于分布式數(shù)據(jù)庫(kù)系統(tǒng)來說,已經(jīng)完成全局提交)的事務(wù)所引起的,并且對(duì)于該事務(wù)TXn為最新并且具有一致性的數(shù)據(jù)。并且,優(yōu)選地,為每個(gè)事務(wù),分布式數(shù)據(jù)庫(kù)系統(tǒng)可以確定對(duì)于每個(gè)數(shù)據(jù)庫(kù)實(shí)例,該事務(wù)所分別對(duì)應(yīng)的歷史版本號(hào)。從而,對(duì)于分布式數(shù)據(jù)庫(kù)系統(tǒng),該事務(wù)所對(duì)應(yīng)的歷史版本號(hào)可以為一個(gè)列表,其包括針對(duì)各個(gè)數(shù)據(jù)庫(kù)實(shí)例,該事務(wù)所對(duì)應(yīng)的各個(gè)歷史版本號(hào)。為簡(jiǎn)明起見,在下文中,除非另有說明,我們將以對(duì)于各個(gè)數(shù)據(jù)庫(kù)實(shí)例,事務(wù)所對(duì)應(yīng)的歷史版本號(hào)相同來進(jìn)行舉例說明。本領(lǐng)域技術(shù)人員應(yīng)理解,對(duì)于不同的數(shù)據(jù)庫(kù)實(shí)例,事務(wù)所對(duì)應(yīng)的歷史版本號(hào)可以不相同。并且,為簡(jiǎn)明起見,在本文中,除非另有說明,我們將以事務(wù)的事務(wù)號(hào)來指代該事務(wù)所對(duì)應(yīng)的歷史版本號(hào)。此外,本領(lǐng)域技術(shù)人員還應(yīng)理解,歷史版本號(hào)不僅限于上述MVCC中所使用的數(shù)據(jù)版本號(hào)或事務(wù)號(hào),歷史版本號(hào)可以為任意能夠指示數(shù)據(jù)由于被各個(gè)事務(wù)所操作所生成歷史版本的編號(hào)的整數(shù)、字符串或其他數(shù)據(jù)類型或數(shù)據(jù)結(jié)構(gòu)。[0037]在分布式數(shù)據(jù)庫(kù)系統(tǒng)中,事務(wù)可以是指針對(duì)該分布式數(shù)據(jù)庫(kù)系統(tǒng)的全局事務(wù),也可以指僅針對(duì)該分布式數(shù)據(jù)庫(kù)系統(tǒng)中的某一個(gè)數(shù)據(jù)庫(kù)的本地事務(wù)。對(duì)于全局事務(wù),其提交和回滾在所有數(shù)據(jù)庫(kù)中必須產(chǎn)生統(tǒng)一的結(jié)果,也即或是在所有數(shù)據(jù)庫(kù)中均全部提交,或是所有數(shù)據(jù)庫(kù)中均全部回滾。在分布式事務(wù)處理中,可以采用ΧΑ規(guī)范來保證分布式數(shù)據(jù)的一致性。ΧΑ規(guī)范的基礎(chǔ)是兩階段提交協(xié)議,其中,在第一階段,所有數(shù)據(jù)庫(kù)進(jìn)行提交準(zhǔn)備。在第二階段,當(dāng)收到所有數(shù)據(jù)庫(kù)的提交準(zhǔn)備就緒的應(yīng)答后,所有數(shù)據(jù)庫(kù)正式提交該事務(wù)。并且,當(dāng)某個(gè)數(shù)據(jù)庫(kù)提交失敗時(shí),所有數(shù)據(jù)庫(kù)回滾該事務(wù)。[0038]為簡(jiǎn)明起見,在下文中,當(dāng)涉及分布式數(shù)據(jù)庫(kù)系統(tǒng)的分布式事務(wù)處理時(shí),如非另有說明,該分布式事務(wù)處理方式將符合ΧΑ規(guī)范。本領(lǐng)域技術(shù)人員應(yīng)理解,其他的分布式事務(wù)處理方式如同樣適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并以引用方式包含于此。[0039]然而,盡管使用了例如ΧΑ規(guī)范來保證分布式數(shù)據(jù)的一致性,但在某些情況下仍然可能出現(xiàn)分布式數(shù)據(jù)的一致性問題。例如,使用ΧΑ規(guī)范進(jìn)行某個(gè)全局事務(wù)ΤΧ1的兩階段提交,假定在第一階段,所有數(shù)據(jù)庫(kù)均做好提交準(zhǔn)備并發(fā)送了同意提交的應(yīng)答。接著,在第二階段,各個(gè)數(shù)據(jù)庫(kù),假定為數(shù)據(jù)庫(kù)DB1,DB2,和DB3進(jìn)行正式提交。然而,雖然DB1及DB2提交成功,DB3遭遇問題無法提交成功。此時(shí),由于該分布式數(shù)據(jù)庫(kù)系統(tǒng)可能仍在等待DB3對(duì)該事務(wù)的提交結(jié)果,該等待尚未超時(shí),從而尚未發(fā)現(xiàn)DB3提交事務(wù)ΤΧ1時(shí)已出現(xiàn)問題。此時(shí),DB1及DB2繼續(xù)處理正在運(yùn)行的另一個(gè)事務(wù)ΤΧ2,ΤΧ2恰好需要操作被事務(wù)ΤΧ1所修改的數(shù)據(jù)。此時(shí),在DB1及DB2中,ΤΧ2將讀取到ΤΧ1的修改。然而,當(dāng)分布式數(shù)據(jù)庫(kù)系統(tǒng)發(fā)現(xiàn)DB3未能正常提交ΤΧ1時(shí),將在所有數(shù)據(jù)庫(kù)上回滾ΤΧ1事務(wù),因此,ΤΧ2所讀取到的由ΤΧ1所做的修改實(shí)質(zhì)上為無效的數(shù)據(jù),從而導(dǎo)致問題。[0040]由此可知,使用現(xiàn)有技術(shù),分布式數(shù)據(jù)的一致性仍存在問題。[0041]應(yīng)注意,上述說明旨在幫助讀者理解本發(fā)明下文的內(nèi)容,其并不意在限制本發(fā)明目的僅為解決分布式數(shù)據(jù)的一致性,也并不意在限制本發(fā)明所使用的任何具體場(chǎng)景或保護(hù)范圍。本發(fā)明保護(hù)范圍應(yīng)由所附權(quán)利要求而非上述說明限定。[0042]此外,在本文中,設(shè)備包括但不限于網(wǎng)絡(luò)設(shè)備、用戶設(shè)備、或網(wǎng)絡(luò)設(shè)備與用戶設(shè)備直接或通過網(wǎng)絡(luò)相集成所構(gòu)成的設(shè)備。其中,所述網(wǎng)絡(luò)設(shè)備包括但不限于計(jì)算機(jī)、網(wǎng)絡(luò)主機(jī)、單個(gè)網(wǎng)絡(luò)服務(wù)器、多個(gè)網(wǎng)絡(luò)服務(wù)器集或多個(gè)服務(wù)器構(gòu)成的云;在此,云由基于云計(jì)算(CloudComputing)的大量計(jì)算機(jī)或網(wǎng)絡(luò)服務(wù)器構(gòu)成,其中,云計(jì)算是分布式計(jì)算的一種,由一群松散耦合的計(jì)算機(jī)集組成的一個(gè)虛擬超級(jí)計(jì)算機(jī)。所述網(wǎng)絡(luò)包括但不限于互聯(lián)網(wǎng)、廣域網(wǎng)、城域網(wǎng)、局域網(wǎng)、VPN網(wǎng)絡(luò)、無線自組織網(wǎng)絡(luò)(AdHoc網(wǎng)絡(luò))等。并且,其中,所述用戶設(shè)備包括但不限于任何一種可與用戶通過鍵盤、鼠標(biāo)、遙控器、觸摸板、或手寫設(shè)備等方式進(jìn)行人機(jī)交互的電子產(chǎn)品,例如計(jì)算機(jī)、手機(jī)、PDA、掌上電腦PPC等。本領(lǐng)域技術(shù)人員應(yīng)能理解,其他的設(shè)備如同樣適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并以引用方式包含于此。[0043]圖1示出根據(jù)本發(fā)明一個(gè)方面的實(shí)施例的在數(shù)據(jù)庫(kù)中用于操作數(shù)據(jù)的方法的流程圖。[0044]在下文中,將以數(shù)據(jù)庫(kù)DB1中的數(shù)據(jù)庫(kù)表employee為例來進(jìn)行說明。該employee表具有兩列"employee_ID"以及"employee_name",并且為方便理解,我們將指示由各個(gè)第一事務(wù)所更改數(shù)據(jù)的版本的各個(gè)歷史版本號(hào)(如上所述,為簡(jiǎn)明起見,該歷史版本號(hào)為引起所述更改的事務(wù)的事務(wù)號(hào))也在下表中列出:[0045]表1[0046]【權(quán)利要求】1.一種在數(shù)據(jù)庫(kù)中用于操作數(shù)據(jù)的方法,其包括:-獲取正在運(yùn)行的第一事務(wù)中所包含的對(duì)于所述數(shù)據(jù)庫(kù)的查詢操作命令,其中所述查詢操作命令包含歷史版本號(hào);-根據(jù)所述查詢操作命令執(zhí)行所述查詢操作,以獲取所述數(shù)據(jù)庫(kù)中的相關(guān)數(shù)據(jù)的相應(yīng)的歷史版本。2.根據(jù)權(quán)利要求1所述的方法,其還包括:-基于所述第一事務(wù)提交操作命令,執(zhí)行第一事務(wù)提交操作并提供相應(yīng)的返回結(jié)果,所述返回結(jié)果中包含該第一事務(wù)所對(duì)應(yīng)的歷史版本號(hào)。3.根據(jù)權(quán)利要求1或2所述的方法,其中,所述數(shù)據(jù)庫(kù)包括主數(shù)據(jù)庫(kù)及一個(gè)或多個(gè)從數(shù)據(jù)庫(kù),所述主數(shù)據(jù)庫(kù)維護(hù)數(shù)據(jù)的最新版本,并且所述主數(shù)據(jù)庫(kù)中的數(shù)據(jù)可以被同步到所述從數(shù)據(jù)庫(kù)中,所述方法還包括:-在完成第一事務(wù)提交準(zhǔn)備操作后,將所述第一事務(wù)的相關(guān)信息記入日志;-對(duì)于應(yīng)提交但主數(shù)據(jù)庫(kù)未能完成提交操作的第一事務(wù),執(zhí)行以下任一操作:-在主數(shù)據(jù)庫(kù)上回滾所述第一事務(wù)并根據(jù)所述日志中所記錄的所述第一事務(wù)的相關(guān)信息執(zhí)行所述第一事務(wù)中所包含的操作并重新提交所述第一事務(wù);-根據(jù)所述日志中所記錄的所述第一事務(wù)的相關(guān)信息在所述一個(gè)或多個(gè)從數(shù)據(jù)庫(kù)中的一個(gè)從數(shù)據(jù)庫(kù)上執(zhí)行所述第一事務(wù)中所包含的操作并重新提交所述第一事務(wù)。4.根據(jù)權(quán)利要求1至3所述的方法,其中,所述方法還包括:-根據(jù)指定的歷史版本號(hào),清理所述數(shù)據(jù)庫(kù)中的歷史數(shù)據(jù)。5.-種在分布式數(shù)據(jù)庫(kù)系統(tǒng)中用于管理事務(wù)的方法,其中,所述分布式數(shù)據(jù)庫(kù)系統(tǒng)包含多個(gè)數(shù)據(jù)庫(kù),所述數(shù)據(jù)庫(kù)適于執(zhí)行權(quán)利要求1至5中任一項(xiàng)所述的方法,所述用于管理事務(wù)的方法包括:-獲取正在運(yùn)行的第二事務(wù)中所包含的對(duì)于所述分布式數(shù)據(jù)庫(kù)系統(tǒng)的第一操作命令;-根據(jù)該分布式數(shù)據(jù)庫(kù)系統(tǒng)中各個(gè)第二事務(wù)的相關(guān)信息,各個(gè)第二事務(wù)的操作狀態(tài)信息,以及各個(gè)第二事務(wù)所對(duì)應(yīng)的各歷史版本號(hào)來確定所述第一操作命令所要使用的歷史版本號(hào);-根據(jù)上述第一操作命令以及上述歷史版本號(hào)來生成所述第二事務(wù)的一個(gè)或多個(gè)第二操作命令,所述第二操作命令包含所述歷史版本號(hào);-將所述一個(gè)或多個(gè)第二操作命令發(fā)送至該分布式數(shù)據(jù)庫(kù)系統(tǒng)中的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)來執(zhí)行。6.根據(jù)權(quán)利要求5所述的方法,其中,根據(jù)上述第一操作命令以及上述歷史版本號(hào)來生成所述第二事務(wù)的一個(gè)或多個(gè)第二操作命令,所述第二操作命令包含所述歷史版本號(hào)的步驟還包括:-根據(jù)該分布式數(shù)據(jù)庫(kù)系統(tǒng)的配置信息來確定其中所述第一操作需要發(fā)送至的所述多個(gè)數(shù)據(jù)庫(kù)中的一個(gè)或多個(gè)數(shù)據(jù)庫(kù);-根據(jù)上述第一操作命令以及上述歷史版本號(hào),并根據(jù)上述其中所述第一操作命令需要發(fā)送至的所述多個(gè)數(shù)據(jù)庫(kù)中的一個(gè)或多個(gè)數(shù)據(jù)庫(kù),生成所述第二事務(wù)的一個(gè)或多個(gè)第二操作命令,所述第二操作命令包含所述歷史版本號(hào)。7.根據(jù)權(quán)利要求5或6所述的方法,其中,所述方法還包括:-接收所述第二操作命令的返回結(jié)果;-當(dāng)所述返回結(jié)果中包含歷史版本號(hào)時(shí),記錄所述第二事務(wù)與所述歷史版本號(hào)的對(duì)應(yīng)關(guān)系。8.根據(jù)權(quán)利要求5至7中任一項(xiàng)所述的方法,其中,所述方法還包括:-對(duì)所述第二操作的返回結(jié)果進(jìn)行合并處理;-將合并后的結(jié)果發(fā)送給客戶端;并且其中,所述方法還包括:-當(dāng)所述第二操作的返回結(jié)果中包含歷史版本號(hào)時(shí),將所述歷史版本號(hào)從所述返回結(jié)果中去除。9.根據(jù)權(quán)利要求5至8中任一項(xiàng)所述的方法,其中,所述方法還包括:-當(dāng)?shù)诙聞?wù)的執(zhí)行時(shí)間超過預(yù)定閾值時(shí),回滾所述第二事務(wù)。10.-種在數(shù)據(jù)庫(kù)設(shè)備中用于操作數(shù)據(jù)的裝置,其包括:-用于獲取正在運(yùn)行的第一事務(wù)中所包含的對(duì)于所述數(shù)據(jù)庫(kù)的查詢操作命令,其中所述查詢操作命令包含歷史版本號(hào)的裝置;-用于根據(jù)所述查詢操作命令執(zhí)行所述查詢操作,以獲取所述數(shù)據(jù)庫(kù)中的相關(guān)數(shù)據(jù)的相應(yīng)的歷史版本的裝置。11.根據(jù)權(quán)利要求10所述的裝置,其還包括:-用于基于所述第一事務(wù)提交操作命令,執(zhí)行第一事務(wù)提交操作并提供相應(yīng)的返回結(jié)果,所述返回結(jié)果中包含該第一事務(wù)所對(duì)應(yīng)的歷史版本號(hào)的裝置。12.根據(jù)權(quán)利要求10或11所述的裝置,其中,所述數(shù)據(jù)庫(kù)包括主數(shù)據(jù)庫(kù)及一個(gè)或多個(gè)從數(shù)據(jù)庫(kù),所述主數(shù)據(jù)庫(kù)維護(hù)數(shù)據(jù)的最新版本,并且所述主數(shù)據(jù)庫(kù)中的數(shù)據(jù)可以被同步到所述從數(shù)據(jù)庫(kù)中,所述裝置還包括:-用于在完成第一事務(wù)提交準(zhǔn)備操作后,將所述第一事務(wù)的相關(guān)信息記入日志的裝置;-用于對(duì)于應(yīng)提交但主數(shù)據(jù)庫(kù)未能完成提交操作的第一事務(wù),執(zhí)行以下任一操作的裝置:-在主數(shù)據(jù)庫(kù)上回滾所述第一事務(wù)并根據(jù)所述日志中所記錄的所述第一事務(wù)的相關(guān)信息執(zhí)行所述第一事務(wù)中所包含的操作并重新提交所述第一事務(wù);-根據(jù)所述日志中所記錄的所述第一事務(wù)的相關(guān)信息在所述一個(gè)或多個(gè)從數(shù)據(jù)庫(kù)中的一個(gè)從數(shù)據(jù)庫(kù)上執(zhí)行所述第一事務(wù)中所包含的操作并重新提交所述第一事務(wù)。13.根據(jù)權(quán)利要求10至12所述的裝置,其中,所述裝置還包括:-用于根據(jù)指定的歷史版本號(hào),清理所述數(shù)據(jù)庫(kù)中的歷史數(shù)據(jù)。14.一種在分布式數(shù)據(jù)庫(kù)系統(tǒng)中用于管理事務(wù)的裝置,其中,所述分布式數(shù)據(jù)庫(kù)系統(tǒng)包含多個(gè)數(shù)據(jù)庫(kù),所述數(shù)據(jù)庫(kù)適于執(zhí)行權(quán)利要求1至4中任一項(xiàng)所述的方法,所述用于管理分布式數(shù)據(jù)庫(kù)系統(tǒng)中的事務(wù)的裝置包括:-用于獲取正在運(yùn)行的第二事務(wù)中所包含的對(duì)于所述分布式數(shù)據(jù)庫(kù)系統(tǒng)的第一操作命令的裝置;-用于根據(jù)該分布式數(shù)據(jù)庫(kù)系統(tǒng)中各個(gè)第二事務(wù)的相關(guān)信息,各個(gè)第二事務(wù)的操作狀態(tài)信息,以及各個(gè)第二事務(wù)所對(duì)應(yīng)的各歷史版本號(hào)來確定所述第一操作命令所要使用的歷史版本號(hào)的裝置;-用于根據(jù)上述第一操作命令以及上述歷史版本號(hào)來生成所述第二事務(wù)的一個(gè)或多個(gè)第二操作命令,所述第二操作命令包含所述歷史版本號(hào)的裝置;-用于將所述一個(gè)或多個(gè)第二操作命令發(fā)送至該分布式數(shù)據(jù)庫(kù)系統(tǒng)中的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)來執(zhí)行的裝置。15.根據(jù)權(quán)利要求14所述的裝置,其中,用于根據(jù)上述第一操作命令以及上述歷史版本號(hào)來生成所述第二事務(wù)的一個(gè)或多個(gè)第二操作命令,所述第二操作命令包含所述歷史版本號(hào)的裝置還包括:-用于根據(jù)該分布式數(shù)據(jù)庫(kù)系統(tǒng)的配置信息來確定其中所述第一操作命令需要發(fā)送至的所述多個(gè)數(shù)據(jù)庫(kù)中的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)的裝置;-用于根據(jù)上述第一操作命令以及上述歷史版本號(hào),并根據(jù)上述其中所述第一操作命令需要發(fā)送至的所述多個(gè)數(shù)據(jù)庫(kù)中的一個(gè)或多個(gè)數(shù)據(jù)庫(kù),生成所述第二事務(wù)的一個(gè)或多個(gè)第二操作命令,所述第二操作命令包含所述歷史版本號(hào)的裝置。16.根據(jù)權(quán)利要求14或15所述的裝置,其中,所述裝置還包括:-用于接收所述第二操作命令的返回結(jié)果的裝置;-用于當(dāng)所述返回結(jié)果中包含歷史版本號(hào)時(shí),記錄所述第二事務(wù)與所述歷史版本號(hào)的對(duì)應(yīng)關(guān)系的裝置。17.根據(jù)權(quán)利要求14至16中任一項(xiàng)所述的裝置,其中,所述裝置還包括:-用于對(duì)所述第二操作的返回結(jié)果進(jìn)行合并處理的裝置;-用于將合并后的結(jié)果發(fā)送給客戶端的裝置;其中,所述用于對(duì)所述第二操作的返回結(jié)果進(jìn)行合并處理的裝置還用于:-當(dāng)所述第二操作的返回結(jié)果中包含歷史版本號(hào)時(shí),將所述歷史版本號(hào)從所述返回結(jié)果中去除。18.根據(jù)權(quán)利要求14至17中任一項(xiàng)所述的裝置,其中,所述裝置還包括:-用于當(dāng)?shù)诙聞?wù)的執(zhí)行時(shí)間超過預(yù)定閾值時(shí),回滾所述第二事務(wù)的裝置。19.一種分布式數(shù)據(jù)庫(kù)系統(tǒng),其包括包含多個(gè)權(quán)利要求9至13中任一項(xiàng)所述的裝置的數(shù)據(jù)庫(kù)設(shè)備,以及包含權(quán)利要求14至18中任一項(xiàng)所述的用于管理分布式數(shù)據(jù)庫(kù)系統(tǒng)中的事務(wù)的裝置的設(shè)備。20.根據(jù)權(quán)利要求19所述的分布式數(shù)據(jù)庫(kù)系統(tǒng),其還包括:-日志存儲(chǔ)系統(tǒng),其用于存儲(chǔ)所述分布式數(shù)據(jù)庫(kù)系統(tǒng)中各事務(wù)的相關(guān)信息以及操作狀態(tài)息?!疚臋n編號(hào)】G06F17/30GK104216955SQ201410412574【公開日】2014年12月17日申請(qǐng)日期:2014年8月20日優(yōu)先權(quán)日:2014年8月20日【發(fā)明者】陳不驕,廖強(qiáng),尹博學(xué),楊林申請(qǐng)人:百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司