專利名稱:數(shù)據(jù)版本升級(jí)的裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)版本升級(jí)的裝置,更具體地,涉及一種適 用于計(jì)算機(jī)、通信領(lǐng)域等以大型數(shù)據(jù)庫(kù)系統(tǒng)為基礎(chǔ)的軟件系統(tǒng)的數(shù) 據(jù)平滑升級(jí)的裝置。
背景技術(shù):
在現(xiàn)有的軟件系統(tǒng)中,有4艮多是以大型tt據(jù)庫(kù)系統(tǒng)(諸如
ORACLE、 SQLSERVER, SYBASE、 DB2等)為基礎(chǔ)來(lái)管理系統(tǒng) 運(yùn)行相關(guān)的配置數(shù)據(jù)和其它數(shù)據(jù)的,但是由于軟件產(chǎn)品總是不斷地 推出新的版本,而每一次新版本的推出都可能涉及到數(shù)據(jù)結(jié)構(gòu)的變 化和相關(guān)數(shù)據(jù)算法的變化,所以必然會(huì)對(duì)舊版本數(shù)據(jù)的平滑升級(jí)提 出要求。而目前很多軟件產(chǎn)品在升級(jí)時(shí)需要提供專門的升級(jí)手冊(cè), 并且編寫專門的升級(jí)程序來(lái)4故處理,這樣的實(shí)現(xiàn)方式不〗義工作量 大,而且擴(kuò)展性、靈活性、可維護(hù)性都很差。另外,有一些軟件產(chǎn) 品雖然估文出了一定改進(jìn),^f旦每個(gè)新版本都要對(duì)應(yīng)編寫相應(yīng)的SQL 升級(jí)腳本文件,通過(guò)對(duì)SQL腳本文件的逐級(jí)調(diào)用來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的升 級(jí),這樣^故的缺點(diǎn)是必須維護(hù)大量的復(fù)雜的升級(jí)腳本文件,不易理 解且可維護(hù)性較差,增加了升級(jí)失敗的可能性。
發(fā)明內(nèi)容
因此,提出本發(fā)明是為了克服現(xiàn)有技術(shù)中的工作量大、擴(kuò)展性、 靈活性和可維護(hù)性差等缺點(diǎn),實(shí)現(xiàn)以一套通用的版本變遷庫(kù)為核心
的數(shù)據(jù)升級(jí)方法,應(yīng)用時(shí)可將該方法嵌入到軟件的安裝程序中,在 軟件系統(tǒng)安裝的同時(shí)實(shí)現(xiàn)數(shù)據(jù)的平滑升級(jí),從而,使得升級(jí)完成后 可以平滑地切換到新版本。這樣,在日常開發(fā)過(guò)程中,只需要維護(hù) 版本變遷庫(kù)中的 一條條相對(duì)簡(jiǎn)單的變遷規(guī)則即可,大大提高了開發(fā) 和維護(hù)效率。
本發(fā)明的一個(gè)方面提供了一種數(shù)據(jù)版本升級(jí)的實(shí)現(xiàn)方法,其包
括將低版本凄t據(jù)庫(kù)以及從低版本到高版本的版本變遷庫(kù)寫入到軟 件系統(tǒng);以及根據(jù)預(yù)定規(guī)則,將低版本數(shù)據(jù)導(dǎo)入到高版本數(shù)據(jù)庫(kù)中, 從而將低版本數(shù)據(jù)庫(kù)升級(jí)到高版本數(shù)據(jù)庫(kù)。
根據(jù)本發(fā)明的一個(gè)方面,版本變遷庫(kù)包括以數(shù)據(jù)表形式存在的 版本演變文件,其中包括每個(gè)版本與前一版本之間的升級(jí)規(guī)則和方法。
根據(jù)本發(fā)明的一個(gè)方面,版本演變文件包括以下至少之一版 本信息表、變遷規(guī)則表、以及實(shí)現(xiàn)變遷規(guī)則的函數(shù)和存儲(chǔ)過(guò)程信息。
根據(jù)本發(fā)明的一個(gè)方面,變遷規(guī)則表保存在數(shù)據(jù)版本升級(jí)過(guò)程 中的數(shù)據(jù)變遷關(guān)見則,數(shù)據(jù)變遷^L則相對(duì)獨(dú)立。
在本發(fā)明中,預(yù)定規(guī)則包括讀取凄t據(jù)庫(kù)版本號(hào),數(shù)據(jù)庫(kù)版本 號(hào)包括待升級(jí)的低版本數(shù)據(jù)庫(kù)和將要升級(jí)到的高版本數(shù)據(jù)庫(kù)的版 本號(hào);將低版本數(shù)據(jù)庫(kù)改名,創(chuàng)建高版本數(shù)據(jù)庫(kù);在高版本數(shù)據(jù)庫(kù) 中,創(chuàng)建版本變遷庫(kù)中定義的版本升級(jí)中要用到的規(guī)則函數(shù)和存儲(chǔ) 過(guò)程信息,讀取變遷規(guī)則表中兩個(gè)版本之間的所有變遷規(guī)則;以及 對(duì)每一張表進(jìn)行升級(jí),在所導(dǎo)入所有表的數(shù)據(jù)之后,返回所有表的 升級(jí)狀態(tài)信息。
在上述對(duì)每張表進(jìn)行升級(jí)的過(guò)程中,包括以下步驟導(dǎo)入執(zhí)行 升級(jí)所需的基本數(shù)據(jù);根據(jù)每張表的變遷規(guī)則,調(diào)用演變文件來(lái)進(jìn) 行數(shù)據(jù)的變化和升級(jí);以及記錄每張表的升級(jí)狀態(tài)信息。
其中,升級(jí)狀態(tài)信息包括升級(jí)成功信息和升級(jí)失敗信息。
在本發(fā)明中,如果返回升級(jí)成功信息,則升級(jí)結(jié)束。如果返回 升級(jí)失敗信息,則恢復(fù)到升級(jí)前的低版本數(shù)據(jù)庫(kù)。
本發(fā)明的另一個(gè)方面提供了一種數(shù)據(jù)版本升級(jí)的實(shí)現(xiàn)裝置,其 包括版本寫入模塊,用于寫入低版本數(shù)據(jù)庫(kù)以及從低版本到高版 本的版本變遷庫(kù)到軟件系統(tǒng);以及升級(jí)代理模塊,用于將低版本數(shù) 據(jù)導(dǎo)入到高版本數(shù)據(jù)庫(kù)中,升級(jí)到高版本凝:據(jù)庫(kù)。
根據(jù)本發(fā)明的一個(gè)方面,在版本寫入4莫塊中,版本變遷庫(kù)包括 以數(shù)據(jù)表形式存在的版本演變文件,其中包括每個(gè)版本與前一版本 之間的升級(jí)失見則和方法。
根據(jù)本發(fā)明的一個(gè)方面,版本演變文件包括以下至少之一版 本信息表、變遷規(guī)則表、以及實(shí)現(xiàn)變遷規(guī)則的函數(shù)和存儲(chǔ)過(guò)程信息。 其中,變遷規(guī)則表保存在數(shù)據(jù)版本升級(jí)過(guò)程中的數(shù)據(jù)變遷規(guī)則,數(shù) 據(jù)變遷力見則相對(duì)獨(dú)立。
在本發(fā)明中,升級(jí)代理;溪塊包括數(shù)據(jù)庫(kù)版本號(hào)讀取單元,用于讀取數(shù)據(jù)庫(kù)版本號(hào),數(shù)據(jù)庫(kù)版本號(hào)包括待升級(jí)的低版本數(shù)據(jù)庫(kù)和將要升級(jí)到的高版本數(shù)據(jù)庫(kù)的版本號(hào);高版本數(shù)據(jù)庫(kù)創(chuàng)建單元,用 于將低版本數(shù)據(jù)庫(kù)改名,創(chuàng)建高版本數(shù)據(jù)庫(kù);變遷規(guī)則讀取單元, 用于在高版本數(shù)據(jù)庫(kù)中,創(chuàng)建版本變遷庫(kù)中定義的版本升級(jí)中要用 到的規(guī)則函數(shù)和存儲(chǔ)過(guò)程信息,讀取變遷規(guī)則表中兩個(gè)版本之間的所有變遷規(guī)則;以及升級(jí)單元,用于對(duì)每一張表進(jìn)行升級(jí),在所導(dǎo)入所有表的數(shù)據(jù)之后,返回所有表的升級(jí)狀態(tài)信息。
根據(jù)本發(fā)明的升級(jí)單元包括數(shù)據(jù)導(dǎo)入組塊,用于導(dǎo)入執(zhí)行升
級(jí)所需的基本數(shù)據(jù);數(shù)據(jù)變化和升級(jí)組塊,用于根據(jù)每張表的變遷
規(guī)則,調(diào)用相關(guān)表達(dá)式、函數(shù)或者存儲(chǔ)過(guò)程信息來(lái)進(jìn)行在數(shù)據(jù)導(dǎo)入
單元中導(dǎo)入的數(shù)據(jù)的特殊變化和升級(jí);以及升級(jí)狀態(tài)記錄組塊,用 于記錄每張表的升級(jí)狀態(tài)信息。其中,升級(jí)狀態(tài)信息包括升級(jí)成功 信息和升級(jí)失敗信息。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種升級(jí)代理方法,其包括 讀取數(shù)據(jù)庫(kù)版本號(hào),數(shù)據(jù)庫(kù)版本號(hào)包括待升級(jí)的低版本數(shù)據(jù)庫(kù)和將 要升級(jí)到的高版本數(shù)據(jù)庫(kù)的版本號(hào);將低版本數(shù)據(jù)庫(kù)改名,創(chuàng)建高 版本數(shù)據(jù)庫(kù);在高版本數(shù)據(jù)庫(kù)中,創(chuàng)建版本變遷庫(kù)中定義的版本升 級(jí)中要用到的規(guī)則函數(shù)和存儲(chǔ)過(guò)程信息,讀取變遷規(guī)則表中兩個(gè)版 本之間的所有變遷MJ!'J;以及對(duì)每一張表進(jìn)行升級(jí),在所導(dǎo)入所有 表的數(shù)據(jù)之后,返回所有表的升級(jí)狀態(tài)信息。
在上述對(duì)每張表進(jìn)行升級(jí)的過(guò)程包括以下步驟導(dǎo)入執(zhí)行升級(jí) 所需的基本數(shù)據(jù);根據(jù)每張表的變遷規(guī)則,調(diào)用演變文件來(lái)進(jìn)行數(shù) 據(jù)的變化和升級(jí);以及記錄每張表的升級(jí)狀態(tài)信息。其中,升級(jí)狀 態(tài)信息包括升級(jí)成功信息和升級(jí)失敗信息。
在該升級(jí)代理方法中,如果返回升級(jí)成功信息,則升級(jí)結(jié)束。 另外,如果返回升級(jí)失敗信息,則恢復(fù)到升級(jí)前的低版本數(shù)據(jù)庫(kù)。
本發(fā)明的又一個(gè)方面提供了一種數(shù)據(jù)版本的升級(jí)代理模塊,其 包括數(shù)據(jù)庫(kù)版本號(hào)讀取單元,用于讀取數(shù)據(jù)庫(kù)版本號(hào),數(shù)據(jù)庫(kù)版 本號(hào)包括待升級(jí)的低版本數(shù)據(jù)庫(kù)和將要升級(jí)到的高版本數(shù)據(jù)庫(kù)的 版本號(hào);高版本數(shù)據(jù)庫(kù)創(chuàng)建單元,用于將低版本數(shù)據(jù)庫(kù)改名,創(chuàng)建 高版本數(shù)據(jù)庫(kù);變遷規(guī)則讀取單元,用于在高版本數(shù)據(jù)庫(kù)中,創(chuàng)建 版本變遷庫(kù)中定義的版本升級(jí)中要用到的失見則函數(shù)和存儲(chǔ)過(guò)程信 息,讀取變遷規(guī)則表中兩個(gè)版本之間的所有變遷少見則;以及升級(jí)單
元,用于對(duì)每一張表進(jìn)行升級(jí),在所導(dǎo)入所有表的數(shù)據(jù)之后,返回 所有表的升級(jí)狀態(tài)信息。
在升級(jí)模塊中,包括數(shù)據(jù)導(dǎo)入組塊,用于導(dǎo)入執(zhí)行升級(jí)所需 的基本數(shù)據(jù);數(shù)據(jù)變化和升級(jí)組塊,用于根據(jù)每張表的變遷規(guī)則,
調(diào)用相關(guān)表達(dá)式、函數(shù)或者存儲(chǔ)過(guò)程信息來(lái)進(jìn)行在凄t據(jù)導(dǎo)入單元中
導(dǎo)入的數(shù)據(jù)的特殊變化和升級(jí);以及升級(jí)狀態(tài)記錄組塊,用于記錄 每張表的升級(jí)狀態(tài)信息。其中,升級(jí)狀態(tài)信息包括升級(jí)成功信息和 升級(jí)失敗信息。
因而,本發(fā)明采用數(shù)據(jù)升級(jí)代理和版本變遷庫(kù)來(lái)進(jìn)行數(shù)據(jù)系統(tǒng) 的升級(jí),不需要每次都編寫專門的升級(jí)程序或復(fù)雜的SQL腳本文 件,只需要維護(hù)好每個(gè)軟件版本對(duì)應(yīng)的版本變遷庫(kù)即可,對(duì)軟件產(chǎn) 品本身具有廣泛的通用性,大大簡(jiǎn)化了開發(fā)工作量,而且系統(tǒng)的靈 活性、擴(kuò)展性、可維護(hù)性更好。
此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申 請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并 不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。
在附圖中
圖1示出了才艮據(jù)本發(fā)明的數(shù)據(jù)版本升級(jí)的實(shí)現(xiàn)方法的流程圖2是本發(fā)明的數(shù)據(jù)版本升級(jí)的實(shí)現(xiàn)方法的系統(tǒng)結(jié)構(gòu)圖3
定-見則的框圖4是示出了對(duì)每張表進(jìn)行升級(jí)的過(guò)程的流程圖
圖5是示出了根據(jù)本發(fā)明實(shí)施例的升級(jí)代理方法的詳細(xì)流程
圖6是根據(jù)本發(fā)明的數(shù)據(jù)版本升級(jí)的實(shí)現(xiàn)裝置的框圖7是示出了在根據(jù)本發(fā)明的數(shù)據(jù)版本升級(jí)的實(shí)現(xiàn)裝置中的升 級(jí)代理模塊的框圖;以及
圖8是示出了在升級(jí)代理才莫塊中的升級(jí)單元的框圖。
具體實(shí)施例方式
下面結(jié)合附圖詳細(xì)描述本發(fā)明的具體實(shí)施例。
圖l示出了根據(jù)本發(fā)明的數(shù)據(jù)版本升級(jí)的實(shí)現(xiàn)方法的框圖,圖
2是本發(fā)明的數(shù)據(jù)版本升級(jí)的實(shí)現(xiàn)方法的系統(tǒng)結(jié)構(gòu)圖。參考圖l和 圖2,升級(jí)的實(shí)現(xiàn)方法包括S102,將低版本數(shù)據(jù)庫(kù)202以及從低 版本到高版本的版本變遷庫(kù)204寫入到軟件系統(tǒng);以及S104, 4艮據(jù) 預(yù)定規(guī)則,將低版本凄t據(jù)導(dǎo)入到高版本數(shù)據(jù)庫(kù)中,從而將該低版本 數(shù)據(jù)庫(kù)升級(jí)到高版本數(shù)據(jù)庫(kù)208,其中,在數(shù)據(jù)升級(jí)代理程序206 中實(shí)現(xiàn)凄t據(jù)版本的升級(jí)方法。版本變遷庫(kù)204包括以數(shù)據(jù)表形式存 在的版本演變文件,其中包括每個(gè)版本與前一版本之間的升級(jí)規(guī)則 和方法。
由圖1和圖2可以看出,數(shù)據(jù)升級(jí)的實(shí)現(xiàn)方法的核心是升級(jí)代 理方法,而升級(jí)方法的基礎(chǔ)就是對(duì)版本變遷庫(kù)的定義和管理。
其中,版本描述表定義了當(dāng)前的數(shù)據(jù)庫(kù)版本號(hào)、發(fā)布日期、產(chǎn)
品類型等描述信息,變遷規(guī)則指的是通過(guò)高低版本數(shù)據(jù)庫(kù)的數(shù)據(jù) 字典的比較不能夠表示出來(lái)的變化,比如說(shuō)字段的拆分、字段的加 減乘除運(yùn)算、字,殳規(guī)則的重定義等。變遷MJJ'j可以是一個(gè)簡(jiǎn)單的運(yùn)算表達(dá)式,也可以利用數(shù)據(jù)庫(kù)本身的技術(shù)靈活編寫復(fù)雜的函數(shù)或存 儲(chǔ)過(guò)程信息等進(jìn)行數(shù)據(jù)的運(yùn)算和轉(zhuǎn)換,而每一條變遷規(guī)則都相對(duì)獨(dú) 立,在新版本的開發(fā)過(guò)程中,只需要增加一條變遷規(guī)則即可。
版本變遷庫(kù)204,包括版本描述表和變遷規(guī)則表,以下給出具 體實(shí)例。
(1 )版本描述表的定義,包括如下的字段 VERSION:產(chǎn)品版本號(hào); VERDATE:版本日期; DBVER:數(shù)據(jù)庫(kù)版本號(hào);
PRODTYPE:產(chǎn)品類別,失見定必須產(chǎn)品類別相同的數(shù)據(jù)庫(kù)才允許升級(jí);以及
PREDB:升級(jí)前的低版本數(shù)據(jù)庫(kù)名稱,該字段在升級(jí)完成后填 寫,初始值為空。
(2)變遷規(guī)則表的定義,包括如下字段
CURVERSION:當(dāng)前版本號(hào);
PREVERSION:前一版本號(hào);
TABLENAME:表名;
FIELDNAME:字段名;
EXPRESSION:變遷規(guī)則表達(dá)式;以及
PROCNAME:調(diào)用的存儲(chǔ)過(guò)程信息名。
表達(dá)式是通過(guò)表中的字段進(jìn)行運(yùn)算的表達(dá)式,此表達(dá)式根據(jù)實(shí) 際的需求進(jìn)4亍編寫,在編寫時(shí)JH呆i正表達(dá)式必須正確,在表達(dá)式中 可以運(yùn)用各種運(yùn)算符以及數(shù)據(jù)庫(kù)函凄t和用戶自定義函凄t等來(lái)實(shí)現(xiàn) 與字段相關(guān)的復(fù)雜的數(shù)據(jù)轉(zhuǎn)換關(guān)系。
為了使系統(tǒng)能夠靈活升級(jí),還增加了 PROCNAME字段,此字 段有效時(shí)前面的表名、字段名和表達(dá)式字段都無(wú)效,描述了升級(jí)時(shí) 需要特別調(diào)用的數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程信息名,相關(guān)的存儲(chǔ)過(guò)程信息是一 段SQL語(yǔ)言程序,可以完成一般的規(guī)則表達(dá)式無(wú)法完成的一些特殊 情況的升級(jí)。
以下將描述表達(dá)式的實(shí)例,其中,^f叚設(shè)在版本1.01中將版本 1.0中TEST表中的數(shù)值字段AA拆分為AA及AA1,AA1的值數(shù)據(jù) 來(lái)源為1.0中的表TEST的AA字段從0位到4位的值,另外,字 段BB在1.0版本中的最小值是0,而在1.01版本中的最小值是100, 那么在版本變遷庫(kù)中應(yīng)有如下的記錄
V01.01, V01.00, TEST, AA1, F—SPLIT—BIT(AA,0,4), NULL VOl.Ol, V01.00, TEST, BB, BB+100, NULL
假設(shè)從版本l.O升級(jí)到版本1.01時(shí)還有一些特殊的數(shù)據(jù)升級(jí)無(wú) 法用表達(dá)式來(lái)定義,則可以寫成相對(duì)復(fù)雜的SQL存儲(chǔ)過(guò)程信息來(lái)完 成,用變遷規(guī)則描述如下
VOl.Ol, VOl.00, NULL, NULL, NULL,
PROC一UPD ATE—TO—VERO101
如果用戶需要進(jìn)行表升級(jí),那么只要定義一條變遷規(guī)則,將其 寫入到變遷規(guī)則表中,這樣,在新版本推出時(shí)只要保證變遷規(guī)則表 的完整,就可以保證數(shù)據(jù)的平滑升級(jí)了。
參考圖3,示出了在根據(jù)本發(fā)明的數(shù)據(jù)版本升級(jí)的實(shí)現(xiàn)方法中 的預(yù)定規(guī)則的框圖。在圖1中的步驟S104的數(shù)據(jù)版本升級(jí)過(guò)程中 進(jìn)行圖3的步驟S302,讀取數(shù)據(jù)庫(kù)版本號(hào),數(shù)據(jù)庫(kù)版本號(hào)包括待 升級(jí)的低版本數(shù)據(jù)庫(kù)202和將要升級(jí)到的高版本數(shù)據(jù)庫(kù)208的版本 號(hào);S304,將低版本數(shù)據(jù)庫(kù)改名,創(chuàng)建高版本數(shù)據(jù)庫(kù)208; S306, 在高版本數(shù)據(jù)庫(kù)中,創(chuàng)建版本變遷庫(kù)中定義的版本升級(jí)中要用到的 規(guī)則函數(shù)和存儲(chǔ)過(guò)程信息,讀取變遷規(guī)則表中兩個(gè)版本之間的所有 變遷MJI'J;以及S308,對(duì)每一張表進(jìn)行升級(jí),在所導(dǎo)入所有表的數(shù) 據(jù)之后,返回所有表的升級(jí)狀態(tài)信息。
圖4是示出了在圖3中的步驟S308中對(duì)每張表進(jìn)行升級(jí)的過(guò)
程的流程圖。在對(duì)每張表升級(jí)的過(guò)程中,要執(zhí)4亍以下步驟S402,
導(dǎo)入執(zhí)行升級(jí)所需的基本數(shù)據(jù);S404,根據(jù)每張表的變遷規(guī)則,調(diào)
用演變文件來(lái)進(jìn)行數(shù)據(jù)的變化和升級(jí);以及S406,記錄每張表的升
級(jí)狀態(tài)信息。其中,升級(jí)狀態(tài)信息包括升級(jí)成功信息和升級(jí)失敗信 自
在步驟S308中,如果返回升級(jí)成功信息,則升級(jí)結(jié)束。另外, 如果返回升級(jí)失敗信息,則根據(jù)步驟S304恢復(fù)到升級(jí)前的低版本 數(shù)據(jù)庫(kù)。
圖5示出了根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)版本的詳細(xì)升級(jí)方法。以 下將參考圖3和圖4詳細(xì)描述圖5的流程圖。
在圖3中的S302:讀取數(shù)據(jù)庫(kù)版本號(hào),數(shù)據(jù)庫(kù)版本號(hào)包括待升 級(jí)的低版本數(shù)據(jù)庫(kù)和將要升級(jí)到的高版本數(shù)據(jù)庫(kù)的版本號(hào),對(duì)應(yīng)圖 5步驟S501,收到版本升級(jí)命令,讀取當(dāng)前數(shù)據(jù)庫(kù)版本號(hào)。
接下來(lái),執(zhí)行步驟S304:將低版本數(shù)據(jù)庫(kù)改名,創(chuàng)建高版本數(shù) 據(jù)庫(kù)。對(duì)應(yīng)圖5步驟為
S502,將低版本的數(shù)據(jù)庫(kù)改名;以及
S503,建立高版本數(shù)據(jù)庫(kù)。
然后,才丸行步驟S306:在高版本數(shù)據(jù)庫(kù)中,創(chuàng)建版本變遷庫(kù)中 定義的版本升級(jí)中要用到的規(guī)則函數(shù)和存儲(chǔ)過(guò)程信息,讀取變遷規(guī) 則表中兩個(gè)版本之間的所有變遷失見則,只于應(yīng)圖5中的以下步驟。
S504,在高版本的數(shù)據(jù)庫(kù)中創(chuàng)建版本升級(jí)中用到的規(guī)則函數(shù)和 存儲(chǔ)過(guò)程信息,讀取變遷規(guī)則表;以及
S505,將需要進(jìn)行導(dǎo)入和升級(jí)的表名放入臨時(shí)表。
接下來(lái)執(zhí)行步驟S506;檢查是否有未導(dǎo)入的表。
在S506中,檢查是有未導(dǎo)入的表時(shí),則進(jìn)入圖3中的步驟S308: 對(duì)每一張表進(jìn)行升級(jí),在所導(dǎo)入所有表的數(shù)據(jù)之后,返回所有表的 升級(jí)狀態(tài)信息。以下,將參考圖4描述對(duì)應(yīng)圖5中的步驟,其中
S507,從臨時(shí)表中取出 一條表名進(jìn)行該表基本數(shù)據(jù)從l氐版本庫(kù) 到高版本庫(kù)的導(dǎo)入;(對(duì)應(yīng)S402 )
S508,檢查在版本變遷庫(kù)中是否定義了該表字段的變遷規(guī)則, 如有則4爭(zhēng)到509,如沒(méi)有定義專爭(zhēng)到510;
S509, 4艮據(jù)變遷少見則完成^t據(jù)的特殊變化升級(jí)(上述兩個(gè)步驟 7于應(yīng)S404 );以及
S510, 將臨時(shí)表的已導(dǎo)入標(biāo)志置為1,記錄該表的升級(jí)成功/ 失敗標(biāo)志(對(duì)應(yīng)S406 )。
S511;檢查是否所有表都已升級(jí)完畢,如沒(méi)有則轉(zhuǎn)到506繼續(xù) 其它表的升級(jí),如已經(jīng)升級(jí)完所有表則專爭(zhēng)到512;以及
最后,執(zhí)行S512;返回?cái)?shù)據(jù)升級(jí)成功/失敗信息,版本升級(jí)結(jié)束。
將上述的升級(jí)代理方法嵌入到軟件系統(tǒng)的安裝程序中,就可以 作為一個(gè)升級(jí)代理模塊,用于系統(tǒng)安裝的同時(shí)實(shí)現(xiàn)數(shù)據(jù)的平滑升級(jí)。
圖6是4艮據(jù)本發(fā)明的數(shù)據(jù)版本升級(jí)的實(shí)現(xiàn)裝置的框圖。如圖6 所示,tt據(jù)版本升級(jí)的實(shí)現(xiàn)裝置600包括版本寫入才莫塊602,用 于寫入低版本數(shù)據(jù)庫(kù)以及從低版本到高版本的版本變遷庫(kù)到軟件 系統(tǒng);以及升級(jí)代理模塊604,用于將低版本數(shù)據(jù)導(dǎo)入到高版本數(shù) 據(jù)庫(kù)中,升級(jí)到高版本數(shù)據(jù)庫(kù)。
在上述的版本寫入才莫塊602中,版本變遷庫(kù)包括以凄t據(jù)表形式 存在的版本演變文件,其中包括每個(gè)版本與前一版本之間的升級(jí)規(guī) 則和方法。版本演變文件包括版本信息表、變遷規(guī)則表、以及實(shí)現(xiàn) 變遷規(guī)則的函數(shù)和存儲(chǔ)過(guò)程信息。變遷規(guī)則表保存在數(shù)據(jù)版本升級(jí) 過(guò)程中的數(shù)據(jù)變遷規(guī)則,數(shù)據(jù)變遷規(guī)則相對(duì)獨(dú)立。
圖7是示出了在根據(jù)本發(fā)明的數(shù)據(jù)版本升級(jí)的實(shí)現(xiàn)裝置600中 的升級(jí)代理才莫塊604的框圖。升級(jí)代理模塊604包括數(shù)據(jù)庫(kù)版本 號(hào)讀取單元702,用于讀取數(shù)據(jù)庫(kù)版本號(hào),數(shù)據(jù)庫(kù)版本號(hào)包括待升級(jí)的低版本數(shù)據(jù)庫(kù)和將要升級(jí)到的高版本數(shù)據(jù)庫(kù)的版本號(hào);高版本
數(shù)據(jù)庫(kù)創(chuàng)建單元704,用于將低版本數(shù)據(jù)庫(kù)改名,創(chuàng)建高版本數(shù)據(jù) 庫(kù);變遷規(guī)則讀取單元706,用于在高版本數(shù)據(jù)庫(kù)中,創(chuàng)建版本變 遷庫(kù)中定義的版本升級(jí)中要用到的規(guī)則函數(shù)和存儲(chǔ)過(guò)程信息,讀取 變遷規(guī)則表中兩個(gè)版本之間的所有變遷規(guī)則;以及升級(jí)單元708, 用于對(duì)每一張表進(jìn)行升級(jí),在所導(dǎo)入所有表的數(shù)據(jù)之后,返回所有 表的升級(jí)狀態(tài)信息。
其中,升級(jí)狀態(tài)信息包括升級(jí)成功信息和升級(jí)失敗信息。如果 返回升級(jí)成功信息,則升級(jí)結(jié)束。另外,如果返回升級(jí)失敗信息, 則根據(jù)高版本數(shù)據(jù)庫(kù)創(chuàng)建單元恢復(fù)到升級(jí)前的低版本數(shù)據(jù)庫(kù)。
在升級(jí)單元708中,要進(jìn)行對(duì)每張表的升級(jí),要包括如圖8所 示的組塊。圖8是示出了在升級(jí)代理模塊中的升級(jí)單元的框圖。
如圖8所示,升級(jí)單元708包括數(shù)據(jù)導(dǎo)入組塊802,用于導(dǎo) 入執(zhí)行升級(jí)所需的基本數(shù)據(jù);數(shù)據(jù)變化和升級(jí)組塊804,用于根據(jù) 每張表的變遷規(guī)則,調(diào)用相關(guān)表達(dá)式、函數(shù)或者存儲(chǔ)過(guò)程信息來(lái)進(jìn) 行在數(shù)據(jù)導(dǎo)入單元中導(dǎo)入的數(shù)據(jù)的特殊變化和升級(jí);以及升級(jí)狀態(tài) 記錄組塊806,用于記錄每張表的升級(jí)狀態(tài)信息。
才艮據(jù)上面的本發(fā)明的實(shí)現(xiàn)可以看到,本發(fā)明通過(guò)編寫統(tǒng)一的升 級(jí)代理方法和版本變遷庫(kù)的維護(hù)實(shí)現(xiàn)了軟件系統(tǒng)數(shù)據(jù)的平滑升級(jí), 且系統(tǒng)結(jié)構(gòu)清晰,實(shí)現(xiàn)相對(duì)簡(jiǎn)單。
以上僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì) 于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本 發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均 應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種用于數(shù)據(jù)版本升級(jí)的裝置,其特征在于,包括版本寫入模塊,用于將低版本數(shù)據(jù)庫(kù)以及從低版本到高版本的版本變遷庫(kù)寫入到軟件系統(tǒng);以及升級(jí)代理模塊,用于將低版本數(shù)據(jù)導(dǎo)入到高版本數(shù)據(jù)庫(kù)中,升級(jí)到高版本數(shù)據(jù)庫(kù)。
2. 根據(jù)權(quán)利要求1所述的用于數(shù)據(jù)版本升級(jí)的裝置,其特征在 于,在所述版本寫入模塊中,所述版本變遷庫(kù)包括以數(shù)據(jù)表形 式存在的版本演變文件,其中包括每個(gè)版本與前一版本之間的 升級(jí)失見則和方法。
3. 根據(jù)權(quán)利要求2所述的用于數(shù)據(jù)版本升級(jí)的裝置,其特征在 于,定義所述版本演變文件包括以下至少之一版本信息表、 變遷規(guī)則表、以及實(shí)現(xiàn)變遷規(guī)則的函數(shù)和存儲(chǔ)過(guò)程信息。
4. #4居權(quán)利要求3所述的用于數(shù)據(jù)版本升級(jí)的裝置,其特征在 于,所述變遷規(guī)則表保存在所述數(shù)據(jù)版本升級(jí)過(guò)程中的數(shù)據(jù)變 遷規(guī)則,所述數(shù)據(jù)變遷規(guī)則相對(duì)獨(dú)立。
5. 根據(jù)權(quán)利要求1所述的用于數(shù)據(jù)版本升級(jí)的裝置,其特征在 于,所述升級(jí)代理模塊包括數(shù)據(jù)庫(kù)版本號(hào)讀取單元,用于讀取待升級(jí)的低版本數(shù)據(jù) 庫(kù)和將要升級(jí)到的高版本數(shù)據(jù)庫(kù)的版本號(hào);高版本數(shù)據(jù)庫(kù)創(chuàng)建單元,用于將低版本數(shù)據(jù)庫(kù)改名,創(chuàng) 建高版本數(shù)據(jù)庫(kù);變遷規(guī)則讀取單元,用于在所述高版本數(shù)據(jù)庫(kù)中,創(chuàng)建 存儲(chǔ)過(guò)程,讀取所述變遷規(guī)則表中兩個(gè)版本之間的所有變遷規(guī)則;以及升級(jí)單元,用于對(duì)每一張表進(jìn)行升級(jí),在所導(dǎo)入所有表 的凌t據(jù)之后,返回所有表的升級(jí)狀態(tài)信息。
6. 根據(jù)權(quán)利要求5所述的用于數(shù)據(jù)版本升級(jí)的裝置,其特征在 于,所述升級(jí)單元包4舌數(shù)據(jù)導(dǎo)入組塊,用于導(dǎo)入執(zhí)行升級(jí)所需的基本數(shù)據(jù);數(shù)據(jù)變化和升級(jí)組塊,用于根據(jù)所述每張表的變遷規(guī)則, 調(diào)用相關(guān)表達(dá)式、函數(shù)或者存儲(chǔ)過(guò)程來(lái)進(jìn)行在所述數(shù)據(jù)導(dǎo)入單 元中導(dǎo)入的所述數(shù)據(jù)的特歹未變化和升級(jí);以及升級(jí)狀態(tài)記錄組塊,用于記錄所述每張表的升級(jí)狀態(tài)信息。
7. 根據(jù)權(quán)利要求6所述的用于數(shù)據(jù)版本升級(jí)的裝置,其特征在 于,所述升級(jí)狀態(tài)信息包4舌升級(jí)成功信息和升級(jí)失敗信息。
8. —種凄t據(jù)版本的升級(jí)代理才莫塊,其特征在于,包括數(shù)據(jù)庫(kù)版本號(hào)讀取單元,用于讀取數(shù)據(jù)庫(kù)版本號(hào),所述 數(shù)據(jù)庫(kù)版本號(hào)包括待升級(jí)的低版本數(shù)據(jù)庫(kù)和將要升級(jí)到的高 版本數(shù)據(jù)庫(kù)的版本號(hào);高版本凄t據(jù)庫(kù)創(chuàng)建單元,用于將低版本數(shù)據(jù)庫(kù)改名,創(chuàng) 建高版本數(shù)據(jù)庫(kù);變遷失見則讀取單元,用于在所述高版本數(shù)據(jù)庫(kù)中,創(chuàng)建 版本變遷庫(kù)中定義的版本升級(jí)中要用到的規(guī)則函數(shù)和存儲(chǔ)過(guò) 程,讀取變遷規(guī)則表中兩個(gè)版本之間的所有變遷規(guī)則;以及升級(jí)單元,用于對(duì)每一張表進(jìn)行升級(jí),在所導(dǎo)入所有表 的數(shù)據(jù)之后,返回所有表的升級(jí)狀態(tài)信息。
9. 根據(jù)權(quán)利要求8所述的數(shù)據(jù)版本的升級(jí)代理模塊,其特征在 于,所述升級(jí)模塊包括數(shù)據(jù)導(dǎo)入組塊,用于導(dǎo)入執(zhí)行升級(jí)所需的基本數(shù)據(jù);數(shù)據(jù)變化和升級(jí)組塊,用于根據(jù)所述每張表的變遷規(guī)則, 調(diào)用相關(guān)表達(dá)式、函lt或者存儲(chǔ)過(guò)程來(lái)進(jìn)4于在所述數(shù)據(jù)導(dǎo)入單 元中導(dǎo)入的所述數(shù)據(jù)的特殊變化和升級(jí);以及升級(jí)狀態(tài)記錄組塊,用于記錄所述每張表的升級(jí)狀態(tài)信自
10. 根據(jù)權(quán)利要求9所述的數(shù)據(jù)版本的升級(jí)代理模塊,其特征在 于,所述升級(jí)狀態(tài)信息包括升級(jí)成功信息和升級(jí)失敗信息。
全文摘要
本發(fā)明提供了一種數(shù)據(jù)版本升級(jí)的裝置,其包括版本寫入模塊,用于將低版本數(shù)據(jù)庫(kù)以及版本變遷庫(kù)寫入到軟件系統(tǒng);以及升級(jí)代理模塊,用于將低版本數(shù)據(jù)導(dǎo)入到高版本數(shù)據(jù)庫(kù)中,升級(jí)到高版本數(shù)據(jù)庫(kù)。升級(jí)代理模塊包括數(shù)據(jù)庫(kù)版本號(hào)讀取單元,用于讀取低版本數(shù)據(jù)庫(kù)和版本數(shù)據(jù)庫(kù)的版本號(hào);高版本數(shù)據(jù)庫(kù)創(chuàng)建單元,用于將低版本數(shù)據(jù)庫(kù)改名,創(chuàng)建高版本數(shù)據(jù)庫(kù);變遷規(guī)則讀取單元,用于創(chuàng)建在版本升級(jí)中要用到的規(guī)則函數(shù)和存儲(chǔ)過(guò)程,讀取所有變遷規(guī)則;以及升級(jí)單元,用于對(duì)每一張表進(jìn)行升級(jí),在所導(dǎo)入所有表的數(shù)據(jù)之后,返回所有表的升級(jí)狀態(tài)信息。通過(guò)本發(fā)明能夠?qū)?shù)據(jù)進(jìn)行平滑升級(jí),并且系統(tǒng)結(jié)構(gòu)清晰,實(shí)現(xiàn)簡(jiǎn)單。
文檔編號(hào)G06F9/44GK101174204SQ20061015045
公開日2008年5月7日 申請(qǐng)日期2006年10月31日 優(yōu)先權(quán)日2006年10月31日
發(fā)明者民 劉, 武銀成, 王瑞豐 申請(qǐng)人:中興通訊股份有限公司