并行數(shù)據(jù)庫管理系統(tǒng)及設(shè)計(jì)方案的制作方法
【專利摘要】并行數(shù)據(jù)庫管理系統(tǒng)及設(shè)計(jì)方案,包括對(duì)分支的選擇、聯(lián)合、競爭、同時(shí)這四種操作方式;總表執(zhí)行單元通過映射方式生成和查找到子表執(zhí)行單元和子表,最后將對(duì)虛擬的子表的操作轉(zhuǎn)換為對(duì)物理表的操作,并匯總返回結(jié)果。本發(fā)明相比現(xiàn)有的并行數(shù)據(jù)庫基礎(chǔ)上具有異構(gòu)數(shù)據(jù)庫集成、運(yùn)行時(shí)分支可動(dòng)態(tài)增減、分支操作方式全面、分支(子表)數(shù)目無上限等優(yōu)點(diǎn),從而使得引擎用戶可以快速地配置并行計(jì)算,滿足了用戶備份、系統(tǒng)集成、高性能計(jì)算等方面的需求。
【專利說明】并行數(shù)據(jù)庫管理系統(tǒng)及設(shè)計(jì)方案
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)軟件開發(fā)領(lǐng)域,應(yīng)用于系統(tǒng)集成、分布式數(shù)據(jù)庫和高性能計(jì)算等方面。具體地,設(shè)計(jì)方案通過VirtualDao封裝具體的Dao,形成對(duì)單表操作的一致化;通過MultiDao并行地操縱多個(gè)VirtualDao,實(shí)現(xiàn)對(duì)多表多庫的靈活操作;在MultiDao中聲明對(duì)分支的選擇方式,及ID和虛表名的生成和查找方式,以提供對(duì)并行計(jì)算的有效支持。
【背景技術(shù)】
[0002]并行數(shù)據(jù)庫是數(shù)據(jù)庫技術(shù)和并行計(jì)算結(jié)合的產(chǎn)物,是具有并行計(jì)算能力的數(shù)據(jù)庫系統(tǒng)。
[0003]并行數(shù)據(jù)庫通過多個(gè)節(jié)點(diǎn)并行處理數(shù)據(jù)庫任務(wù),從而提高數(shù)據(jù)庫系統(tǒng)運(yùn)行性能和可用性。
[0004]現(xiàn)有的并行數(shù)據(jù)庫技術(shù)缺乏對(duì)業(yè)務(wù)需求的多樣性的理解,缺乏對(duì)業(yè)務(wù)配置支撐的靈活性,尤其無法突破對(duì)數(shù)據(jù)庫分支(子表)的個(gè)數(shù)限制,因而使得并行數(shù)據(jù)庫難以使用和推廣。
[0005]為了填補(bǔ)了并行數(shù)據(jù)庫在靈活配置和對(duì)多種業(yè)務(wù)兼容等方面的空白,本發(fā)明實(shí)現(xiàn)了總表操作單元對(duì)子表操作單元的操作方式的設(shè)置,以及總表根據(jù)條件向子表進(jìn)行映射,從而使得總表下可以有任意多個(gè)子表。
【發(fā)明內(nèi)容】
[0006]發(fā)明人使用MultiDao表示對(duì)總表的執(zhí)行,VirtualDao表示對(duì)子表(分支)的執(zhí)行,VirtualTable表示子表,PhysicalDao表示物理上的對(duì)子表的執(zhí)行單元。
[0007]并行數(shù)據(jù)庫管理系統(tǒng)使用了三層體系結(jié)構(gòu):第一層是多表并行層,通過MultiDao通過多個(gè)VirtualDao操作子表,實(shí)現(xiàn)多表并行計(jì)算;第二層是單表集成層,通過將異構(gòu)的各類數(shù)據(jù)庫Dao封裝在相同的VirtualDao,從而實(shí)現(xiàn)對(duì)VirtualTable虛擬表的計(jì)算,達(dá)到對(duì)數(shù)據(jù)源和數(shù)據(jù)類型的統(tǒng)一透明處理;第三層通過統(tǒng)一的PhysicalDao,實(shí)現(xiàn)對(duì)物理的表的計(jì)算,具體的表可能分布在不同的數(shù)據(jù)庫介質(zhì)里面。
[0008]
【發(fā)明者】認(rèn)為:對(duì)并行數(shù)據(jù)庫的操作方式有兩種:讀取和寫入(包括增刪改)。數(shù)據(jù)讀取包括聯(lián)合、選擇、競爭等分支選擇方式:聯(lián)合讀取就是從一系列子表中讀取數(shù)據(jù),最后拼裝成結(jié)果集;選擇就是假設(shè)各個(gè)子表數(shù)據(jù)是一樣的,MultiDao從子表中(隨機(jī))選擇一個(gè)子表讀取結(jié)果集;競爭就是假設(shè)各個(gè)子表數(shù)據(jù)是一樣的,MultiDao從各個(gè)子表讀取,但是只取最快的那份,其余的丟棄。數(shù)據(jù)集寫入包括聯(lián)合、同時(shí)等分支選擇方式:聯(lián)合就是將數(shù)據(jù)按照規(guī)則拆散放到各個(gè)分支中,每個(gè)分支得到的是不完整的數(shù)據(jù),但是所有分支數(shù)據(jù)的總和是完整數(shù)據(jù);同時(shí)就是將數(shù)據(jù)集不拆散,完整的保存到各個(gè)分支中。
[0009]特定的VirtualDao可以對(duì)相應(yīng)的某些特定VirtualTable進(jìn)行操作,VirtualTable就是一個(gè)虛擬的子表,表名由MultiDao傳入的參數(shù)映射獲得。映射規(guī)則是,設(shè)有i個(gè)變量,{Xi}為這些變量的集合,VirtualTable的名稱為F ({Xi}),那么找出一個(gè)F({Xi}),通過F({Xi})可以通過逆映射獲得{Xi}中的所需要部分或全部。本并行數(shù)據(jù)庫設(shè)計(jì)方案是通過變量映射規(guī)則而不是通過條件判斷選擇分支,從而獲得對(duì)多種數(shù)據(jù)讀寫方式的支持,這是本發(fā)明的特征。
[0010]本發(fā)明中,MultiDao是通過模板配置的,它可以以“標(biāo)準(zhǔn)”方式調(diào)用VirtualDao,而VirtualDao將虛擬表VirtualTable解釋為不同的物理的表,然后調(diào)用PhysicalDao執(zhí)行對(duì)物理的表的操作。
【專利附圖】
【附圖說明】
[0011]圖1是對(duì)并行數(shù)據(jù)庫管理系統(tǒng)層次結(jié)構(gòu)的解釋。MultiDao可以將操作分配到相應(yīng)的VirtualDao,分配的依據(jù)是,MultiDao所操作的記錄根據(jù)存取條件按規(guī)則映射到VirtualDao 所對(duì)應(yīng)的 VirtualTable。我們注意到,第二層有 VirtualDaol 和 VirtualDaol的副本,這樣寫只是為了表不VirtualTablel和VirtualTable2結(jié)構(gòu)一樣,而VirtualDao2對(duì)應(yīng)的VirtualTable3結(jié)構(gòu)則與前兩個(gè)表不一樣,可能是同一個(gè)類的子類;所有物理的操作都放到第三層。VirtualDao 調(diào)用 PhysicalDao, VirtualTable 解釋為 PhysicalTable。
【具體實(shí)施方式】
本發(fā)明使用但不限于以下技術(shù)手段:
[0012]該并行數(shù)據(jù)庫管理系統(tǒng)的實(shí)現(xiàn)有以下步驟:
I通過模板生成或通過元模式運(yùn)行時(shí)獲得MultiDao,系統(tǒng)將VirtualDao注冊(cè)到MultiDao上,任意的VirtualTable都對(duì)應(yīng)且只對(duì)應(yīng)一個(gè)VirtualDao。VirtualDao也可以通過模板或元模式自動(dòng)生成。,
2.系統(tǒng)通過使用但不限于數(shù)據(jù)庫或配置文件等方式,配置VirtualTable和PhysicalTable之間的--對(duì)應(yīng)關(guān)系。
3.應(yīng)用程序調(diào)用MultiDao并使用一種選擇方式映射到子表及對(duì)子表的操作VirtualDao。
4.系統(tǒng)通過步驟2配置的對(duì)應(yīng)關(guān)系將VirtualDao操作轉(zhuǎn)化成實(shí)際的對(duì)物理數(shù)據(jù)庫的操作 PhysicalDao。
5.如果是更新操作,則失敗后由MultiDao回退操作。
6.MultiDao獲得各個(gè)子操作的結(jié)果,匯總處理并返回給應(yīng)用程序。
[0013]下面結(jié)合具體的應(yīng)用場景,進(jìn)一步闡明本發(fā)明,本發(fā)明可以應(yīng)用于但不限于以下情形:
[0014]假設(shè)應(yīng)用系統(tǒng)需要訪問兩個(gè)數(shù)據(jù)庫,這兩個(gè)數(shù)據(jù)庫數(shù)據(jù)完全一樣,一個(gè)用來備份,一個(gè)用來做正常業(yè)務(wù)訪問;兩個(gè)數(shù)據(jù)庫只有地址不一樣。
對(duì)于任何一個(gè)總表,開發(fā)者可按照如下步驟開發(fā)和配置:
1.系統(tǒng)根據(jù)子表結(jié)構(gòu)生成或配置各個(gè)子表的虛表;
2.編寫系統(tǒng)子表的PhysicalDao;
3.編寫系統(tǒng)子表的VirtualDao,并將PhysicalDao注冊(cè)到VirtualDao;
4.配置對(duì)總表的并行結(jié)構(gòu)的執(zhí)行單元MultiDa0,MultiDa0讀取方式為選擇,用于對(duì)兩個(gè)數(shù)據(jù)庫中的子表進(jìn)行選擇性的讀取操作(讀其中一個(gè)子表); 5.配置MultiDao寫入方式為同時(shí),用于對(duì)兩個(gè)數(shù)據(jù)庫中的子表進(jìn)行選擇性的寫入操作(同時(shí)將數(shù)據(jù)兩個(gè)庫的子表)
6.配置MultiDao的映射方式,以獲得相應(yīng)的VirtualTable和VirtualDao。
[0020]用戶管理系統(tǒng),擁有不同類型的用戶,每種用戶一個(gè)表,用戶系統(tǒng)可以根據(jù)需要訪問其中的一個(gè)表,也可以訪問所有表。
開發(fā)者可按照如下步驟開發(fā)和配置:
1.系統(tǒng)根據(jù)子表結(jié)構(gòu)生成或配置各個(gè)用戶子表的虛表;
2.編寫系統(tǒng)子表的PhysicalDao,系統(tǒng)可以通過不同的PhysicalDao訪問單個(gè)的子表;
3.編寫系統(tǒng)子表的VirtualDao,并將PhysicalDao注冊(cè)到VirtualDao;
4.配置對(duì)總表的并行結(jié)構(gòu)的執(zhí)行單元MultiDa0,MultiDa0讀取方式為聯(lián)合,用于對(duì)各個(gè)子表(可能為不同數(shù)據(jù)庫)進(jìn)行同時(shí)讀取操作;
5.配置MultiDao寫入方式為聯(lián)合,用于將對(duì)數(shù)據(jù)的修改映射到相應(yīng)的子表進(jìn)行寫入操作,比如客戶和管理員的數(shù)據(jù)類型和存儲(chǔ)的表是不同的,對(duì)客戶類型的數(shù)據(jù)的修改操作應(yīng)該映射到對(duì)客戶表的修改操作,對(duì)管理員類型的數(shù)據(jù)的修改操作應(yīng)該映射到對(duì)管理員表的修改操作;
6.配置MultiDao的映射方式,以獲得相應(yīng)的VirtualTable和VirtualDao。
【權(quán)利要求】
1.本發(fā)明提供了一種并行數(shù)據(jù)庫管理系統(tǒng)及方案,其特征是:并行數(shù)據(jù)庫拓展和兼容多種對(duì)分支數(shù)據(jù)庫表的操作方式,總表操作MultiDao可以并行地操作子表。
2.根據(jù)權(quán)利要求1所述的并行數(shù)據(jù)庫管理系統(tǒng)及方案,其特征在于:并行數(shù)據(jù)庫通過變量映射的方式查找和生成不同的分支,有別于傳統(tǒng)的通過條件判斷語句或條件觸發(fā)語句查找和生成分支的方式,因此使得系統(tǒng)分支可以在任何時(shí)間有任意個(gè),而不是只有有限個(gè);映射規(guī)則如下,設(shè)有i個(gè)變量,(Xil為這些變量的集合,分支(子表)名稱為{Y},那么找出一個(gè){Y} = F({Xi})的映射,通過計(jì)算映射將{Xi}映射到F({Xi})。
3.根據(jù)權(quán)利要求1所述的并行數(shù)據(jù)庫管理系統(tǒng)及方案,其特征在于:總表操作方式包括讀取和寫入兩種類型,通過聲明同時(shí)、聯(lián)合、競爭、選擇等選擇方式,從而適應(yīng)不同應(yīng)用情景下并行操作需求。
4.根據(jù)權(quán)利要求1所述的并行數(shù)據(jù)庫管理系統(tǒng)及方案,其特征在于=MultiDao和VirtualDao可以生成或運(yùn)行時(shí)獲得,因此系統(tǒng)容易開發(fā)簡單,效率高。
5.根據(jù)權(quán)利要求1所述的并行數(shù)據(jù)庫管理系統(tǒng)及方案,其特征在于=VirtualDao屏蔽了 PhysicalDao的差異,使得系統(tǒng)可以在運(yùn)行時(shí)自動(dòng)增加分支(子表)及對(duì)分支的操作。
【文檔編號(hào)】G06F17/30GK104239008SQ201310234069
【公開日】2014年12月24日 申請(qǐng)日期:2013年6月7日 優(yōu)先權(quán)日:2013年6月7日
【發(fā)明者】楊姣, 徐淑蘭, 徐國慶 申請(qǐng)人:深圳市并行科技有限公司