專利名稱:在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)庫(kù)升級(jí)的系統(tǒng)和方法,尤其涉及一種在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的系統(tǒng)和方法。
背景技術(shù):
軟件產(chǎn)品在完全停止開(kāi)發(fā)以前,都存在版本升級(jí)的可能,因種種原因,要求由低版本升級(jí)到高版本。在嵌入式通信系統(tǒng)中一般都是采用前后臺(tái)這樣一種體系結(jié)構(gòu),前臺(tái)是嵌入式系統(tǒng)主機(jī),后臺(tái)是Win NT/2000管理系統(tǒng),在后臺(tái)管理系統(tǒng)中應(yīng)用關(guān)系數(shù)據(jù)庫(kù)保存主機(jī)數(shù)據(jù)。在后臺(tái)管理系統(tǒng)軟件版本升級(jí)時(shí),有必要升級(jí)相應(yīng)版本的數(shù)據(jù)庫(kù),方便版本升級(jí)。
現(xiàn)有的數(shù)據(jù)庫(kù)升級(jí)是當(dāng)后臺(tái)管理系統(tǒng)軟件版本升級(jí)安裝后,重新創(chuàng)建數(shù)據(jù)庫(kù),所有與業(yè)務(wù)相關(guān)或者需要定制的數(shù)據(jù)表數(shù)據(jù)需要在后臺(tái)管理系統(tǒng)客戶端重新手工配置。由于與后臺(tái)管理系統(tǒng)的軟件版本相應(yīng)的數(shù)據(jù)庫(kù)不能隨之升級(jí),而是要重新創(chuàng)建數(shù)據(jù)庫(kù),因此原版本中配置的業(yè)務(wù)數(shù)據(jù)也隨之丟失了,這給前臺(tái)主機(jī)數(shù)據(jù)配置帶來(lái)了很多不便。故現(xiàn)有技術(shù)存在以下缺點(diǎn)1.在業(yè)務(wù)數(shù)據(jù)表較多的情況下,重新配置數(shù)據(jù)需要耗費(fèi)大量的人力;2.還原原版本的配置數(shù)據(jù)誤配率高,某些數(shù)據(jù)表易漏配,從而增加了開(kāi)發(fā)和測(cè)試人員問(wèn)題定位的難度;3.重新配置數(shù)據(jù)所花費(fèi)的時(shí)間成本長(zhǎng),不利于快速響應(yīng)客戶需求;4.做不到數(shù)據(jù)庫(kù)隨后臺(tái)管理系統(tǒng)軟件版本的無(wú)縫升級(jí)。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題在于提供一種應(yīng)用于嵌入式通信系統(tǒng)中的在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的系統(tǒng)和方法,其能實(shí)現(xiàn)智能化和自動(dòng)化升級(jí),不需要人參與,能自動(dòng)識(shí)別源版本和目的版本,實(shí)現(xiàn)后臺(tái)管理系統(tǒng)的數(shù)據(jù)庫(kù)隨軟件版本升級(jí)而平滑升級(jí)。
為解決上述技術(shù)問(wèn)題,本發(fā)明所采用的技術(shù)方案是提供一種在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的系統(tǒng),其包括版本識(shí)別子系統(tǒng)、版本升級(jí)子系統(tǒng)和描述/知識(shí)系統(tǒng),其中所述版本識(shí)別子系統(tǒng)產(chǎn)生和維護(hù)軟件現(xiàn)有各個(gè)版本數(shù)據(jù)庫(kù)的描述/知識(shí);所述版本升級(jí)子系統(tǒng)利用所述描述/知識(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行升級(jí);所述描述/知識(shí)系統(tǒng)由若干描述文件組成,是版本升級(jí)子系統(tǒng)的輸入,版本識(shí)別子系統(tǒng)的輸出。
上述技術(shù)方案的進(jìn)一步改進(jìn)在于所述描述文件包括數(shù)據(jù)庫(kù)描述文件、數(shù)據(jù)庫(kù)版本描述文件、數(shù)據(jù)庫(kù)版本識(shí)別文件、數(shù)據(jù)庫(kù)表描述文件和數(shù)據(jù)庫(kù)版本間升級(jí)SQL腳本文件。
所述描述文件還包括預(yù)處理SQL腳本文件和后處理SQL腳本文件。
為解決上述另一技術(shù)問(wèn)題,本發(fā)明所采用的技術(shù)方案是提供一種在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的方法,其包括以下步驟版本識(shí)別子系統(tǒng)產(chǎn)生和維護(hù)軟件現(xiàn)有各個(gè)版本數(shù)據(jù)庫(kù)的描述/知識(shí);版本升級(jí)子系統(tǒng)利用上述描述/知識(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行升級(jí)。
上述技術(shù)方案的進(jìn)一步改進(jìn)在于所述版本識(shí)別子系統(tǒng)產(chǎn)生和維護(hù)軟件現(xiàn)有各個(gè)版本數(shù)據(jù)庫(kù)的描述/知識(shí)包括以下步驟a)版本識(shí)別子系統(tǒng)從數(shù)據(jù)庫(kù)描述文件中,讀取所有需要升級(jí)數(shù)據(jù)的數(shù)據(jù)庫(kù)信息;b)版本識(shí)別子系統(tǒng)生成數(shù)據(jù)庫(kù)版本描述文件;c)版本識(shí)別子系統(tǒng)生成數(shù)據(jù)庫(kù)版本識(shí)別文件;e)版本識(shí)別子系統(tǒng)生成數(shù)據(jù)庫(kù)版本間升級(jí)SQL腳本文件;f)版本識(shí)別子系統(tǒng)生成數(shù)據(jù)庫(kù)表描述文件;g)版本識(shí)別子系統(tǒng)檢查數(shù)據(jù)庫(kù)版本描述文件中的版本間升級(jí)關(guān)系是否構(gòu)成有向無(wú)環(huán)圖,若構(gòu)成有向無(wú)環(huán)圖,則比較版本差異,輸出詳細(xì)報(bào)告,若不構(gòu)成,則結(jié)束版本識(shí)別。
所述步驟c)和e)之間還包括步驟d),即版本識(shí)別子系統(tǒng)判斷數(shù)據(jù)庫(kù)中的表是否存在約束,若存在約束,則版本識(shí)別子系統(tǒng)生成數(shù)據(jù)庫(kù)版本的預(yù)處理SQL腳本文件和后處理SQL腳本文件,若不存在約束則直接執(zhí)行步驟e)。
上述技術(shù)方案的進(jìn)一步改進(jìn)在于所述版本升級(jí)子系統(tǒng)利用上述描述/知識(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行升級(jí)包括以下步驟h)版本升級(jí)子系統(tǒng)從數(shù)據(jù)庫(kù)描述文件中,讀取所有需要升級(jí)數(shù)據(jù)的數(shù)據(jù)庫(kù)信息;i)版本升級(jí)子系統(tǒng)從數(shù)據(jù)庫(kù)版本描述文件中,讀取數(shù)據(jù)庫(kù)的所有版本信息;i)版本升級(jí)子系統(tǒng)根據(jù)數(shù)據(jù)庫(kù)版本識(shí)別文件,讀取數(shù)據(jù)庫(kù)版本特征信息,根據(jù)版本特征信息識(shí)別數(shù)據(jù)庫(kù)的源版本和目的版本;k)版本升級(jí)子系統(tǒng)從數(shù)據(jù)庫(kù)版本描述文件中,讀取數(shù)據(jù)庫(kù)版本間的升級(jí)關(guān)系,分析得到從源版本到目的版本的最短升級(jí)路徑;l)版本升級(jí)子系統(tǒng)沿著從源版本到目的版本的最短升級(jí)路徑,執(zhí)行版本間的升級(jí)SQL腳本文件,調(diào)整源版本數(shù)據(jù)庫(kù)的表結(jié)構(gòu)和數(shù)據(jù);m)版本升級(jí)子系統(tǒng)從數(shù)據(jù)庫(kù)表描述文件中,讀取所有表的導(dǎo)入數(shù)據(jù)方式,根據(jù)導(dǎo)入數(shù)據(jù)方式,將各表的數(shù)據(jù)由源版本數(shù)據(jù)庫(kù)導(dǎo)入目的版本數(shù)據(jù)庫(kù)。
所述步驟m)進(jìn)一步包括步驟n),即如果該表存在約束,則在導(dǎo)入數(shù)據(jù)前執(zhí)行該表的預(yù)處理SQL腳本文件,在導(dǎo)入數(shù)據(jù)后執(zhí)行該表的后處理SQL腳本文件。
步驟k)所述的分析從源版本到目的版本的最短升級(jí)路徑采用求有向無(wú)環(huán)圖中某源點(diǎn)到其余各頂點(diǎn)最短路徑的算法。
本發(fā)明的有益效果是由于本發(fā)明采用版本識(shí)別子系統(tǒng)、版本升級(jí)子系統(tǒng)和描述/知識(shí)系統(tǒng)結(jié)合實(shí)現(xiàn)在后臺(tái)管理系統(tǒng)中的數(shù)據(jù)庫(kù)升級(jí),因此其能實(shí)現(xiàn)智能化和自動(dòng)化升級(jí),不需要人參與,能自動(dòng)識(shí)別源版本和目的版本,實(shí)現(xiàn)后臺(tái)管理系統(tǒng)的數(shù)據(jù)庫(kù)隨軟件版本升級(jí)而平滑升級(jí),該基于描述的數(shù)據(jù)庫(kù)升級(jí)方法使得系統(tǒng)具有良好的可擴(kuò)充性;另外,本發(fā)明能夠集成到后管理模塊軟件安裝盤中,提供升級(jí)安裝選項(xiàng),在安裝后管理模塊軟件的同時(shí)升級(jí)數(shù)據(jù),且數(shù)據(jù)庫(kù)升級(jí)的絕大部分一致性正確性的檢查工作由系統(tǒng)完成,從而減少開(kāi)發(fā)/維護(hù)人員工作;再者,由于本發(fā)明的分析從源版本到目的版本的最短升級(jí)路徑采用的是求有向無(wú)環(huán)圖中某源點(diǎn)到其余各頂點(diǎn)最短路徑的算法,因此在數(shù)據(jù)庫(kù)升級(jí)過(guò)程中能確定從源版本到目的版本的升級(jí)路徑和策略,當(dāng)從后臺(tái)管理系統(tǒng)軟件的低版本升級(jí)到高版本時(shí),它能尋找一條最短的升級(jí)路徑對(duì)數(shù)據(jù)庫(kù)進(jìn)行升級(jí)。
圖1是本發(fā)明在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的系統(tǒng)架構(gòu)圖。
圖2是圖1所示系統(tǒng)的版本識(shí)別子系統(tǒng)工作示意圖。
圖3是圖1所示系統(tǒng)的版本升級(jí)子系統(tǒng)工作示意圖。
圖4是本發(fā)明分析源版本到目的版本升級(jí)路徑的算法所采用的有向無(wú)環(huán)圖。
具體實(shí)施例方式
請(qǐng)參閱圖1,本發(fā)明在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的系統(tǒng)包括版本識(shí)別子系統(tǒng)、版本升級(jí)子系統(tǒng)和描述/知識(shí)系統(tǒng),其中版本識(shí)別子系統(tǒng)產(chǎn)生和維護(hù)軟件現(xiàn)有各個(gè)版本數(shù)據(jù)庫(kù)的描述/知識(shí);版本升級(jí)子系統(tǒng)利用上述描述/知識(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行升級(jí);描述/知識(shí)系統(tǒng)由若干描述文件組成,是版本升級(jí)子系統(tǒng)的輸入,版本識(shí)別子系統(tǒng)的輸出,描述文件包括數(shù)據(jù)庫(kù)描述文件、數(shù)據(jù)庫(kù)版本描述文件、數(shù)據(jù)庫(kù)版本識(shí)別文件、預(yù)處理SQL腳本文件、后處理SQL腳本文件、數(shù)據(jù)庫(kù)表描述文件和數(shù)據(jù)庫(kù)版本間升級(jí)SQL腳本文件。其中1)數(shù)據(jù)庫(kù)描述文件概述描述升級(jí)過(guò)程中所要升級(jí)的數(shù)據(jù)庫(kù)的數(shù)據(jù)。整個(gè)版本升級(jí)系統(tǒng)就使用一個(gè)該數(shù)據(jù)庫(kù)描述文件。
2)數(shù)據(jù)庫(kù)版本描述文件概述描述數(shù)據(jù)庫(kù)的所有版本和版本間的升級(jí)關(guān)系。每個(gè)要升級(jí)的數(shù)據(jù)庫(kù)有一個(gè)該數(shù)據(jù)庫(kù)版本描述文件。
3)數(shù)據(jù)庫(kù)版本識(shí)別文件概述保存該版本的數(shù)據(jù)庫(kù)信息,包含數(shù)據(jù)庫(kù)中所有表信息,如表結(jié)構(gòu)定義(必選,所有表)、字段含義(可選,主機(jī)業(yè)務(wù)表)、字段枚舉值含義(可選,主機(jī)業(yè)務(wù)表),用于識(shí)別各個(gè)版本。數(shù)據(jù)庫(kù)的每個(gè)版本有一個(gè)該數(shù)據(jù)庫(kù)版本識(shí)別文件。
4)預(yù)處理SQL腳本文件概述預(yù)處理SQL腳本文件分為數(shù)據(jù)庫(kù)預(yù)處理SQL腳本文件,表預(yù)處理SQL腳本文件。每個(gè)版本每個(gè)數(shù)據(jù)庫(kù)最多有一個(gè)數(shù)據(jù)庫(kù)預(yù)處理SQL腳本文件,其在數(shù)據(jù)庫(kù)導(dǎo)入數(shù)據(jù)前執(zhí)行,任何需要在數(shù)據(jù)庫(kù)導(dǎo)入數(shù)據(jù)前執(zhí)行的特殊處理,都可以在該文件中寫SQL腳本。每個(gè)版本每個(gè)數(shù)據(jù)庫(kù)每個(gè)表最多有一個(gè)表預(yù)處理SQL腳本文件,其在導(dǎo)入該表數(shù)據(jù)前執(zhí)行,任何需要在導(dǎo)入該表數(shù)據(jù)前執(zhí)行的特殊處理,都可以在該文件中寫SQL腳本。
5)后處理SQL腳本文件概述后處理SQL腳本文件分為數(shù)據(jù)庫(kù)后處理SQL腳本文件,表后處理SQL腳本文件。每個(gè)版本每個(gè)數(shù)據(jù)庫(kù)最多有一個(gè)數(shù)據(jù)庫(kù)后處理SQL腳本文件,其在數(shù)據(jù)庫(kù)導(dǎo)入數(shù)據(jù)后執(zhí)行,任何需要在數(shù)據(jù)庫(kù)導(dǎo)入數(shù)據(jù)后執(zhí)行的特殊處理,都可以在該文件中寫SQL腳本。每個(gè)版本每個(gè)數(shù)據(jù)庫(kù)每個(gè)表最多有一個(gè)表后處理SQL腳本文件,其在導(dǎo)入該表數(shù)據(jù)后執(zhí)行,任何需要在導(dǎo)入該表數(shù)據(jù)后執(zhí)行的特殊處理,都可以在該文件中寫SQL腳本。
6)數(shù)據(jù)庫(kù)版本間升級(jí)SQL腳本文件概述用于寫目的版本相對(duì)源版本變化的升級(jí)腳本。如果目的版本相對(duì)源版本增加了表,應(yīng)該寫創(chuàng)建表的腳本。如果目的版本相對(duì)源版本減少了表,應(yīng)該寫刪除表的腳本。如果兩個(gè)版本之間,某表結(jié)構(gòu)(包括字段定義,枚舉值定義)變化,應(yīng)該為它寫升級(jí)腳本,負(fù)責(zé)調(diào)整表結(jié)構(gòu)和數(shù)據(jù),使其與新版本一致。
7)數(shù)據(jù)庫(kù)表描述文件概述描述升級(jí)過(guò)程中,數(shù)據(jù)庫(kù)中所有表的導(dǎo)入數(shù)據(jù)方式。每個(gè)要升級(jí)的數(shù)據(jù)庫(kù)有一個(gè)該數(shù)據(jù)庫(kù)表描述文件。
數(shù)據(jù)庫(kù)中的表大致分為a、有缺省數(shù)據(jù),不可能修改/刪除缺省數(shù)據(jù)或增加新數(shù)據(jù);b、有缺省數(shù)據(jù),不可能修改/刪除缺省數(shù)據(jù)但可能增加新數(shù)據(jù);c、有缺省數(shù)據(jù),可能修改/刪除缺省數(shù)據(jù)但不可能增加新數(shù)據(jù);d、有缺省數(shù)據(jù),可能修改/刪除缺省數(shù)據(jù)或增加新數(shù)據(jù);e、沒(méi)有缺省數(shù)據(jù),可能增加新數(shù)據(jù)。相應(yīng)地,導(dǎo)入數(shù)據(jù)方式分為0(完全保留新版本的缺省數(shù)據(jù),適合類型a),1(完全導(dǎo)入老版本中的數(shù)據(jù),適合類型d和e),2(自定義SQL腳本方式,比較靈活,能適合類型b和C以及一些可能還沒(méi)有考慮到的特殊情況)。
本發(fā)明在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的方法包括版本識(shí)別子系統(tǒng)產(chǎn)生和維護(hù)軟件現(xiàn)有各個(gè)版本數(shù)據(jù)庫(kù)的描述/知識(shí)的步驟以及版本升級(jí)子系統(tǒng)利用上述描述/知識(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行升級(jí)的步驟。
請(qǐng)參閱圖2,本發(fā)明在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的系統(tǒng)的版本識(shí)別子系統(tǒng)以描述/知識(shí)系統(tǒng)為輸出,負(fù)責(zé)生成描述文件和檢查描述文件的正確性、一致性。版本識(shí)別子系統(tǒng)產(chǎn)生和維護(hù)軟件現(xiàn)有各個(gè)版本數(shù)據(jù)庫(kù)的描述/知識(shí)包括以下步驟a)版本識(shí)別子系統(tǒng)從數(shù)據(jù)庫(kù)描述文件中,讀取所有需要升級(jí)數(shù)據(jù)的數(shù)據(jù)庫(kù)信息;b)版本識(shí)別子系統(tǒng)生成數(shù)據(jù)庫(kù)版本描述文件;c)版本識(shí)別子系統(tǒng)生成數(shù)據(jù)庫(kù)版本識(shí)別文件;d)版本識(shí)別子系統(tǒng)判斷數(shù)據(jù)庫(kù)中的表是否存在約束,若存在約束,則版本識(shí)別子系統(tǒng)生成數(shù)據(jù)庫(kù)版本的預(yù)處理SQL腳本文件和后處理SQL腳本文件,若不存在約束則直接執(zhí)行步驟e);e)版本識(shí)別子系統(tǒng)生成數(shù)據(jù)庫(kù)版本間升級(jí)SQL腳本文件;f)版本識(shí)別子系統(tǒng)生成數(shù)據(jù)庫(kù)表描述文件;g)版本識(shí)別子系統(tǒng)檢查數(shù)據(jù)庫(kù)版本描述文件中的版本間升級(jí)關(guān)系是否構(gòu)成有向無(wú)環(huán)圖,若構(gòu)成有向無(wú)環(huán)圖,則比較版本差異,輸出詳細(xì)報(bào)告,若不構(gòu)成,則結(jié)束版本識(shí)別。
請(qǐng)參閱圖3,本發(fā)明在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的系統(tǒng)的版本升級(jí)子系統(tǒng)利用版本識(shí)別子系統(tǒng)生成的描述文件對(duì)數(shù)據(jù)庫(kù)進(jìn)行升級(jí),版本升級(jí)子系統(tǒng)利用上述描述/知識(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行升級(jí)包括以下步驟h)版本升級(jí)子系統(tǒng)從數(shù)據(jù)庫(kù)描述文件中,讀取所有需要升級(jí)數(shù)據(jù)的數(shù)據(jù)庫(kù)信息;i)版本升級(jí)子系統(tǒng)從數(shù)據(jù)庫(kù)版本描述文件中,讀取數(shù)據(jù)庫(kù)的所有版本信息;
j)版本升級(jí)子系統(tǒng)根據(jù)數(shù)據(jù)庫(kù)版本識(shí)別文件,讀取數(shù)據(jù)庫(kù)版本特征信息,根據(jù)版本特征信息識(shí)別數(shù)據(jù)庫(kù)的源版本和目的版本;k)版本升級(jí)子系統(tǒng)從數(shù)據(jù)庫(kù)版本描述文件中,讀取數(shù)據(jù)庫(kù)版本間的升級(jí)關(guān)系,分析得到從源版本到目的版本的最短升級(jí)路徑;l)版本升級(jí)子系統(tǒng)沿著從源版本到目的版本的最短升級(jí)路徑,執(zhí)行版本間的升級(jí)SQL腳本文件,調(diào)整源版本數(shù)據(jù)庫(kù)的表結(jié)構(gòu)和數(shù)據(jù);m)版本升級(jí)子系統(tǒng)從數(shù)據(jù)庫(kù)表描述文件中,讀取所有表的導(dǎo)入數(shù)據(jù)方式,根據(jù)導(dǎo)入數(shù)據(jù)方式,將各表的數(shù)據(jù)由源版本數(shù)據(jù)庫(kù)導(dǎo)入目的版本數(shù)據(jù)庫(kù),如果該表存在約束,則在導(dǎo)入數(shù)據(jù)前執(zhí)行該表的預(yù)處理SQL腳本文件,在導(dǎo)入數(shù)據(jù)后執(zhí)行該表的后處理SQL腳本文件。
其中步驟k)所述的分析從源版本到目的版本的最短升級(jí)路徑采用求有向無(wú)環(huán)圖中某源點(diǎn)到其余各頂點(diǎn)最短路徑的算法。請(qǐng)參閱圖4,是本發(fā)明的有向無(wú)環(huán)圖,其中V1、V2、V3、V4、V5、V6構(gòu)成現(xiàn)有軟件的版本。Vi(i=1,2,3,4...)構(gòu)成有向無(wú)環(huán)圖中的頂點(diǎn)集。頂點(diǎn)之間用有向的弧連接表示從一個(gè)版本可以升級(jí)到另一個(gè)版本,按照技術(shù)方案中的描述,即是兩個(gè)版本之間存在升級(jí)關(guān)系。例如,從版本V1升級(jí)到V6有以下幾條升級(jí)路徑1) V1 V2 V3 V4 V5 V62) V1 V2 V3 V5 V63) V1 V2 V3 V64) V1 V3 V4 V5 V65) V1 V3 V5 V66) V1 V3 V6根據(jù)上述有向無(wú)環(huán)圖最短路徑算法能夠分析出最短路徑為V1 V3 V6,即為數(shù)據(jù)庫(kù)版本V1升級(jí)到V6的最短路徑。
權(quán)利要求
1.一種在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的系統(tǒng),其特征在于其包括版本識(shí)別子系統(tǒng)、版本升級(jí)子系統(tǒng)和描述/知識(shí)系統(tǒng),其中所述版本識(shí)別子系統(tǒng)產(chǎn)生和維護(hù)軟件現(xiàn)有各個(gè)版本數(shù)據(jù)庫(kù)的描述/知識(shí);所述版本升級(jí)子系統(tǒng)利用所述描述/知識(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行升級(jí);所述描述/知識(shí)系統(tǒng)由若干描述文件組成,是版本升級(jí)子系統(tǒng)的輸入,版本識(shí)別子系統(tǒng)的輸出。
2.如權(quán)利要求1所述的在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的系統(tǒng),其特征在于所述描述文件包括數(shù)據(jù)庫(kù)描述文件、數(shù)據(jù)庫(kù)版本描述文件、數(shù)據(jù)庫(kù)版本識(shí)別文件、數(shù)據(jù)庫(kù)表描述文件和數(shù)據(jù)庫(kù)版本間升級(jí)SQL腳本文件。
3.如權(quán)利要求2所述的在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的系統(tǒng),其特征在于所述描述文件還包括預(yù)處理SQL腳本文件和后處理SQL腳本文件。
4.如權(quán)利要求3所述的在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的系統(tǒng),其特征在于所述預(yù)處理SQL腳本文件包括數(shù)據(jù)庫(kù)預(yù)處理SQL腳本文件和表預(yù)處理SQL腳本文件,每個(gè)版本每個(gè)數(shù)據(jù)庫(kù)最多有一個(gè)該數(shù)據(jù)庫(kù)預(yù)處理SQL腳本文件,其在數(shù)據(jù)庫(kù)導(dǎo)入數(shù)據(jù)前執(zhí)行,任何需要在數(shù)據(jù)庫(kù)導(dǎo)入數(shù)據(jù)前執(zhí)行的特殊處理,都可以在該文件中寫SQL腳本,每個(gè)版本每個(gè)數(shù)據(jù)庫(kù)每個(gè)表最多有一個(gè)表預(yù)處理SQL腳本文件,其在導(dǎo)入該表數(shù)據(jù)前執(zhí)行,任何需要在導(dǎo)入該表數(shù)據(jù)前執(zhí)行的特殊處理,都可以在該文件中寫SQL腳本。
5.如權(quán)利要求3所述的在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的系統(tǒng),其特征在于所述后處理SQL腳本文件包括數(shù)據(jù)庫(kù)后處理SQL腳本文件和表后處理SQL腳本文件,每個(gè)版本每個(gè)數(shù)據(jù)庫(kù)最多有一個(gè)數(shù)據(jù)庫(kù)后處理SQL腳本文件,其在數(shù)據(jù)庫(kù)導(dǎo)入數(shù)據(jù)后執(zhí)行,任何需要在數(shù)據(jù)庫(kù)導(dǎo)入數(shù)據(jù)后執(zhí)行的特殊處理,都可以在該文件中寫SQL腳本,每個(gè)版本每個(gè)數(shù)據(jù)庫(kù)每個(gè)表最多有一個(gè)表后處理SQL腳本文件,其在導(dǎo)入該表數(shù)據(jù)后執(zhí)行,任何需要在導(dǎo)入該表數(shù)據(jù)后執(zhí)行的特殊處理,都可以在該文件中寫SQL腳本。
6.如權(quán)利要求1所述的在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的系統(tǒng),其特征在于所述數(shù)據(jù)庫(kù)描述文件用于描述升級(jí)過(guò)程所要升級(jí)的數(shù)據(jù)庫(kù)的數(shù)據(jù),整個(gè)版本升級(jí)系統(tǒng)使用一個(gè)該數(shù)據(jù)庫(kù)描述文件。
7.如權(quán)利要求1所述的在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的系統(tǒng),其特征在于所述數(shù)據(jù)庫(kù)版本描述文件用于描述數(shù)據(jù)庫(kù)的所有版本和版本間的升級(jí)關(guān)系,每個(gè)要升級(jí)的數(shù)據(jù)庫(kù)有一個(gè)該數(shù)據(jù)庫(kù)版本描述文件。
8.如權(quán)利要求1所述的在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的系統(tǒng),其特征在于所述數(shù)據(jù)庫(kù)版本識(shí)別文件用于保存該版本的數(shù)據(jù)庫(kù)信息,包含數(shù)據(jù)庫(kù)中所有表信息,數(shù)據(jù)庫(kù)的每個(gè)版本有一個(gè)該數(shù)據(jù)庫(kù)版本識(shí)別文件。
9.如權(quán)利要求1所述的在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的系統(tǒng),其特征在于所述數(shù)據(jù)庫(kù)版本間升級(jí)SQL腳本文件用于寫目的版本相對(duì)源版本變化的升級(jí)腳本。
10.如權(quán)利要求1所述的在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的系統(tǒng),其特征在于所述數(shù)據(jù)庫(kù)表描述文件用于描述升級(jí)過(guò)程中,數(shù)據(jù)庫(kù)中所有表的導(dǎo)入數(shù)據(jù)方式,每個(gè)要升級(jí)的數(shù)據(jù)庫(kù)有一個(gè)該數(shù)據(jù)庫(kù)表描述文件。
11.一種在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的方法,其特征在于包括以下步驟版本識(shí)別子系統(tǒng)產(chǎn)生和維護(hù)軟件現(xiàn)有各個(gè)版本數(shù)據(jù)庫(kù)的描述/知識(shí);版本升級(jí)子系統(tǒng)利用上述描述/知識(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行升級(jí)。
12.如權(quán)利要求11所述的在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的方法,其特征在于所述版本識(shí)別子系統(tǒng)產(chǎn)生和維護(hù)軟件現(xiàn)有各個(gè)版本數(shù)據(jù)庫(kù)的描述/知識(shí)包括以下步驟a)版本識(shí)別子系統(tǒng)從數(shù)據(jù)庫(kù)描述文件中,讀取所有需要升級(jí)數(shù)據(jù)的數(shù)據(jù)庫(kù)信息;b)版本識(shí)別子系統(tǒng)生成數(shù)據(jù)庫(kù)版本描述文件;c)版本識(shí)別子系統(tǒng)生成數(shù)據(jù)庫(kù)版本識(shí)別文件;e)版本識(shí)別子系統(tǒng)生成數(shù)據(jù)庫(kù)版本間升級(jí)SQL腳本文件;f)版本識(shí)別子系統(tǒng)生成數(shù)據(jù)庫(kù)表描述文件;g)版本識(shí)別子系統(tǒng)檢查數(shù)據(jù)庫(kù)版本描述文件中的版本間升級(jí)關(guān)系是否構(gòu)成有向無(wú)環(huán)圖,若構(gòu)成有向無(wú)環(huán)圖,則比較版本差異,輸出詳細(xì)報(bào)告,若不構(gòu)成,則結(jié)束版本識(shí)別。
13.如權(quán)利要求12所述的在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的方法,其特征在于所述步驟c)和e)之間還包括步驟d),即版本識(shí)別子系統(tǒng)判斷數(shù)據(jù)庫(kù)中的表是否存在約束,若存在約束,則版本識(shí)別子系統(tǒng)生成數(shù)據(jù)庫(kù)版本的預(yù)處理SQL腳本文件和后處理SQL腳本文件,若不存在約束則直接執(zhí)行步驟e)。
14.如權(quán)利要求11所述的在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的方法,其特征在于所述版本升級(jí)子系統(tǒng)利用上述描述/知識(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行升級(jí)包括以下步驟h)版本升級(jí)子系統(tǒng)從數(shù)據(jù)庫(kù)描述文件中,讀取所有需要升級(jí)數(shù)據(jù)的數(shù)據(jù)庫(kù)信息;i)版本升級(jí)子系統(tǒng)從數(shù)據(jù)庫(kù)版本描述文件中,讀取數(shù)據(jù)庫(kù)的所有版本信息;j)版本升級(jí)子系統(tǒng)根據(jù)數(shù)據(jù)庫(kù)版本識(shí)別文件,讀取數(shù)據(jù)庫(kù)版本特征信息,根據(jù)版本特征信息識(shí)別數(shù)據(jù)庫(kù)的源版本和目的版本;k)版本升級(jí)子系統(tǒng)從數(shù)據(jù)庫(kù)版本描述文件中,讀取數(shù)據(jù)庫(kù)版本間的升級(jí)關(guān)系,分析得到從源版本到目的版本的最短升級(jí)路徑;1)版本升級(jí)子系統(tǒng)沿著從源版本到目的版本的最短升級(jí)路徑,執(zhí)行版本間的升級(jí)SQL腳本文件,調(diào)整源版本數(shù)據(jù)庫(kù)的表結(jié)構(gòu)和數(shù)據(jù);m)版本升級(jí)子系統(tǒng)從數(shù)據(jù)庫(kù)表描述文件中,讀取所有表的導(dǎo)入數(shù)據(jù)方式,根據(jù)導(dǎo)入數(shù)據(jù)方式,將各表的數(shù)據(jù)由源版本數(shù)據(jù)庫(kù)導(dǎo)入目的版本數(shù)據(jù)庫(kù)。
15.如權(quán)利要求14所述的在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的方法,其特征在于所述步驟m)進(jìn)一步包括步驟n),即如果該表存在約束,則在導(dǎo)入數(shù)據(jù)前執(zhí)行該表的預(yù)處理SQL腳本文件,在導(dǎo)入數(shù)據(jù)后執(zhí)行該表的后處理SQL腳本文件。
16.如權(quán)利要求14所述的在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的方法,其特征在于步驟k)所述的分析從源版本到目的版本的最短升級(jí)路徑采用求有向無(wú)環(huán)圖中某源點(diǎn)到其余各頂點(diǎn)最短路徑的算法。
全文摘要
本發(fā)明涉及一種在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)的系統(tǒng),其包括版本識(shí)別子系統(tǒng)、版本升級(jí)子系統(tǒng)和描述/知識(shí)系統(tǒng),其中版本識(shí)別子系統(tǒng)產(chǎn)生和維護(hù)軟件現(xiàn)有各個(gè)版本數(shù)據(jù)庫(kù)的描述/知識(shí);版本升級(jí)子系統(tǒng)利用所述描述/知識(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行升級(jí);描述/知識(shí)系統(tǒng)由若干描述文件組成,是版本升級(jí)子系統(tǒng)的輸入,版本識(shí)別子系統(tǒng)的輸出。本發(fā)明還涉及一種相應(yīng)的數(shù)據(jù)庫(kù)升級(jí)的方法,其包括版本識(shí)別子系統(tǒng)產(chǎn)生和維護(hù)軟件現(xiàn)有各個(gè)版本數(shù)據(jù)庫(kù)的描述/知識(shí)的步驟以及版本升級(jí)子系統(tǒng)利用上述描述/知識(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行升級(jí)的步驟。本發(fā)明可應(yīng)用于嵌入式通信系統(tǒng)中,其能實(shí)現(xiàn)智能化和自動(dòng)化升級(jí),能自動(dòng)識(shí)別源版本和目的版本,實(shí)現(xiàn)后臺(tái)管理系統(tǒng)的數(shù)據(jù)庫(kù)隨軟件版本升級(jí)而平滑升級(jí)。
文檔編號(hào)G06F17/30GK1971556SQ200510101859
公開(kāi)日2007年5月30日 申請(qǐng)日期2005年11月26日 優(yōu)先權(quán)日2005年11月26日
發(fā)明者梁柱添, 柏偉寧 申請(qǐng)人:華為技術(shù)有限公司