數(shù)據(jù)庫(kù)升級(jí)方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及通信領(lǐng)域,尤其涉及一種數(shù)據(jù)庫(kù)升級(jí)方法及裝置。
【背景技術(shù)】
[0002] 隨著移動(dòng)互聯(lián)網(wǎng)的高速發(fā)展,人們可以隨時(shí)隨地的使用互聯(lián)網(wǎng)提供的各種服務(wù), 因此互聯(lián)網(wǎng)服務(wù)的連續(xù)性和穩(wěn)定性顯的格外重要。升級(jí)互聯(lián)網(wǎng)服務(wù)勢(shì)必面臨著數(shù)據(jù)庫(kù)升 級(jí),如何在數(shù)據(jù)庫(kù)升級(jí)時(shí)保證業(yè)務(wù)不中斷,并且保證升級(jí)后的新數(shù)據(jù)庫(kù)與舊數(shù)據(jù)庫(kù)保持一 致,成為提尚互聯(lián)網(wǎng)服務(wù)的關(guān)鍵。
[0003]目前大多采用如下方式進(jìn)行數(shù)據(jù)庫(kù)升級(jí):通過(guò)循環(huán)的方式對(duì)舊數(shù)據(jù)庫(kù)中的每個(gè)數(shù) 據(jù)表進(jìn)行數(shù)據(jù)升級(jí),升級(jí)后的數(shù)據(jù)表組成新數(shù)據(jù)庫(kù),最后將業(yè)務(wù)系統(tǒng)由與舊數(shù)據(jù)庫(kù)的連接 切換到與新數(shù)據(jù)庫(kù)的連接。例如,當(dāng)舊數(shù)據(jù)庫(kù)中的第一個(gè)數(shù)據(jù)表升級(jí)成功后,再對(duì)舊數(shù)據(jù)庫(kù) 中的第二個(gè)數(shù)據(jù)表進(jìn)行升級(jí)。然而,如果在升級(jí)舊數(shù)據(jù)庫(kù)中的第二個(gè)數(shù)據(jù)表時(shí),舊數(shù)據(jù)庫(kù)中 的第一個(gè)數(shù)據(jù)表又有新的數(shù)據(jù)變更,則新的數(shù)據(jù)變更無(wú)法同步到新的數(shù)據(jù)庫(kù)中,因此,可能 存在新數(shù)據(jù)庫(kù)中的數(shù)據(jù)與舊數(shù)據(jù)庫(kù)中的數(shù)據(jù)不一致的情況。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明提供一種數(shù)據(jù)庫(kù)升級(jí)方法及裝置,以解決數(shù)據(jù)庫(kù)升級(jí)時(shí),升級(jí)后的新數(shù)據(jù) 庫(kù)與舊數(shù)據(jù)庫(kù)中的數(shù)據(jù)不一致的問(wèn)題。
[0005] 本發(fā)明的第一個(gè)方面提供一種數(shù)據(jù)庫(kù)升級(jí)方法,包括:
[0006] 接收舊數(shù)據(jù)庫(kù)的舊數(shù)據(jù)表中的數(shù)據(jù);
[0007] 對(duì)接收的所述舊數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行處理,獲得處理后的數(shù)據(jù);
[0008] 將所述處理后的數(shù)據(jù)存儲(chǔ)在新數(shù)據(jù)庫(kù)的新數(shù)據(jù)表中;
[0009] 若判斷獲知所述新數(shù)據(jù)庫(kù)的數(shù)據(jù)量與所述舊數(shù)據(jù)庫(kù)的數(shù)據(jù)量的差值小于等于設(shè) 定值,則將業(yè)務(wù)系統(tǒng)與所述舊數(shù)據(jù)庫(kù)的連接切換到與所述新數(shù)據(jù)庫(kù)的連接。
[0010] 在上述數(shù)據(jù)庫(kù)升級(jí)方法的一個(gè)實(shí)施例中,所述對(duì)接收的所述舊數(shù)據(jù)表中的數(shù)據(jù)進(jìn) 行處理,獲得處理后的數(shù)據(jù),包括:
[0011] 根據(jù)新數(shù)據(jù)表中預(yù)存儲(chǔ)的字段名稱匹配數(shù)據(jù)處理方法,獲得處理后的數(shù)據(jù);其中, 所述預(yù)存儲(chǔ)的字段名稱包括下述任意一項(xiàng):新增字段名稱以及所述舊數(shù)據(jù)表的所有字段名 稱、所述舊數(shù)據(jù)表的所有字段名稱、所述舊數(shù)據(jù)表的部分字段名稱。
[0012] 在上述數(shù)據(jù)庫(kù)升級(jí)方法的一個(gè)實(shí)施例中,所述預(yù)存儲(chǔ)的字段名稱包括新增字段名 稱以及所述舊數(shù)據(jù)表的所有字段名稱;
[0013] 所述對(duì)接收的所述舊數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行處理,獲得處理后的數(shù)據(jù),包括:
[0014] 提取所述舊數(shù)據(jù)表中的第一字段名稱下的數(shù)據(jù);
[0015] 根據(jù)提取的所述第一字段名稱下的數(shù)據(jù),計(jì)算與所述第一字段名稱下的數(shù)據(jù)對(duì)應(yīng) 的所述新增字段名稱下的數(shù)據(jù);
[0016] 將所述舊數(shù)據(jù)表中的所有數(shù)據(jù)以及計(jì)算的所述新增字段名稱下的數(shù)據(jù)作為所述 處理后的數(shù)據(jù);
[0017] 所述將所述處理后的數(shù)據(jù)存儲(chǔ)在新數(shù)據(jù)庫(kù)的新數(shù)據(jù)表中,包括:
[0018] 將所述舊數(shù)據(jù)表中的每個(gè)字段名稱下的數(shù)據(jù)寫(xiě)入與所述舊數(shù)據(jù)表中的每個(gè)字段 名稱對(duì)應(yīng)的所述新數(shù)據(jù)表的字段名稱下,以及將計(jì)算的所述新增字段名稱下的數(shù)據(jù)寫(xiě)入所 述新數(shù)據(jù)表的新增字段名稱下。
[0019] 在上述數(shù)據(jù)庫(kù)升級(jí)方法的一個(gè)實(shí)施例中,所述預(yù)存儲(chǔ)的字段名稱包括所述舊數(shù)據(jù) 表的所有字段名稱;
[0020] 所述對(duì)接收的所述舊數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行處理,獲得處理后的數(shù)據(jù),包括:
[0021] 提取所述舊數(shù)據(jù)表中的第二字段名稱下的數(shù)據(jù);
[0022] 根據(jù)預(yù)設(shè)規(guī)則,對(duì)提取的所述第二字段名稱下的數(shù)據(jù)進(jìn)行修改;
[0023] 將所述舊數(shù)據(jù)表中的未經(jīng)修改的字段名稱下的數(shù)據(jù)以及修改后的所述第二字段 下的數(shù)據(jù)作為所述處理后的數(shù)據(jù);
[0024] 所述將所述處理后的數(shù)據(jù)存儲(chǔ)在新數(shù)據(jù)庫(kù)的新數(shù)據(jù)表中,包括:
[0025] 將所述舊數(shù)據(jù)表中的未經(jīng)修改的字段名稱下的數(shù)據(jù)寫(xiě)入與所述未經(jīng)修改的字段 名稱對(duì)應(yīng)的所述新數(shù)據(jù)表的字段名稱下,以及將修改的所述第二字段名稱下的數(shù)據(jù)寫(xiě)入 與所述第二字段名稱對(duì)應(yīng)的所述新數(shù)據(jù)表的字段名稱下。
[0026] 在上述數(shù)據(jù)庫(kù)升級(jí)方法的一個(gè)實(shí)施例中,所述預(yù)存儲(chǔ)的字段名稱包括所述舊數(shù)據(jù) 表的部分字段名稱;
[0027] 所述對(duì)接收的所述舊數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行處理,獲得處理后的數(shù)據(jù),包括:
[0028] 刪除所述舊數(shù)據(jù)表中的至少一個(gè)字段名稱下的數(shù)據(jù);
[0029] 將所述舊數(shù)據(jù)表中的剩余字段名稱下的數(shù)據(jù)作為所述處理后的數(shù)據(jù);
[0030] 所述將所述處理后的數(shù)據(jù)存儲(chǔ)在新數(shù)據(jù)庫(kù)的新數(shù)據(jù)表中,包括:
[0031] 將所述舊數(shù)據(jù)表中的剩余字段名稱下的數(shù)據(jù)寫(xiě)入與所述剩余字段名稱對(duì)應(yīng)的所 述新數(shù)據(jù)表的字段名稱下。
[0032] 本發(fā)明的第二個(gè)方面提供一種數(shù)據(jù)庫(kù)升級(jí)裝置,包括:
[0033] 接收模塊,用于接收舊數(shù)據(jù)庫(kù)的舊數(shù)據(jù)表中的數(shù)據(jù);
[0034] 處理模塊,用于對(duì)接收的所述舊數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行處理,獲得處理后的數(shù)據(jù);
[0035] 存儲(chǔ)模塊,用于將所述處理后的數(shù)據(jù)存儲(chǔ)在新數(shù)據(jù)庫(kù)的新數(shù)據(jù)表中;
[0036] 切換模塊,用于若判斷獲知所述新數(shù)據(jù)庫(kù)的數(shù)據(jù)量與所述舊數(shù)據(jù)庫(kù)的數(shù)據(jù)量的差 值小于等于設(shè)定值,則將業(yè)務(wù)系統(tǒng)與所述舊數(shù)據(jù)庫(kù)的連接切換到與所述新數(shù)據(jù)庫(kù)的連接。
[0037] 在上述數(shù)據(jù)庫(kù)升級(jí)裝置的一個(gè)實(shí)施例中,所述處理模塊,具體用于根據(jù)新數(shù)據(jù)表 中預(yù)存儲(chǔ)的字段名稱匹配數(shù)據(jù)處理方法,獲得處理后的數(shù)據(jù);其中,所述預(yù)存儲(chǔ)的字段名稱 包括下述任意一項(xiàng):新增字段名稱以及所述舊數(shù)據(jù)表的所有字段名稱、所述舊數(shù)據(jù)表的所 有字段名稱、所述舊數(shù)據(jù)表的部分字段名稱。
[0038] 在上述數(shù)據(jù)庫(kù)升級(jí)裝置的一個(gè)實(shí)施例中,所述預(yù)存儲(chǔ)的字段名稱包括新增字段名 稱以及所述舊數(shù)據(jù)表的所有字段名稱;
[0039] 所述處理模塊,具體用于提取所述舊數(shù)據(jù)表中的第一字段名稱下的數(shù)據(jù);根據(jù)提 取的所述第一字段名稱下的數(shù)據(jù),計(jì)算與所述第一字段名稱下的數(shù)據(jù)對(duì)應(yīng)的所述新增字段 名稱下的數(shù)據(jù);將所述舊數(shù)據(jù)表中的所有數(shù)據(jù)以及計(jì)算的所述新增字段名稱下的數(shù)據(jù)作為 所述處理后的數(shù)據(jù);
[0040] 所述存儲(chǔ)模塊,具體用于將所述舊數(shù)據(jù)表中的每個(gè)字段名稱下的數(shù)據(jù)寫(xiě)入與所 述舊數(shù)據(jù)表中的每個(gè)字段名稱對(duì)應(yīng)的所述新數(shù)據(jù)表的字段名稱下,以及將計(jì)算的所述新增 字段名稱下的數(shù)據(jù)寫(xiě)入所述新數(shù)據(jù)表的新增字段名稱下。
[0041] 在上述數(shù)據(jù)庫(kù)升級(jí)裝置的一個(gè)實(shí)施例中,所述預(yù)存儲(chǔ)的字段名稱包括所述舊數(shù)據(jù) 表的所有字段名稱;
[0042] 所述處理模塊,具體用于提取所述舊數(shù)據(jù)表中的第二字段名稱下的數(shù)據(jù);根據(jù)預(yù) 設(shè)規(guī)則,對(duì)提取的所述第二字段名稱下的數(shù)據(jù)進(jìn)行修改;將所述舊數(shù)據(jù)表中的未經(jīng)修改的 字段名稱下的數(shù)據(jù)以及修改后的所述第二字段名稱下的數(shù)據(jù)作為所述處理后的數(shù)據(jù); [0043] 所述存儲(chǔ)模塊,具體用于將所述舊數(shù)據(jù)表中的未經(jīng)修改的字段名稱下的數(shù)據(jù)寫(xiě)入 與所述未經(jīng)修改的字段名稱對(duì)應(yīng)的所述新數(shù)據(jù)表的字段名稱下,以及將修改的所述第二字 段名稱下的數(shù)據(jù)寫(xiě)入與所述第二字段名稱對(duì)應(yīng)的所述新數(shù)據(jù)表的字段名稱下。
[0044] 在上述數(shù)據(jù)庫(kù)升級(jí)裝置的一個(gè)實(shí)施例中,所述預(yù)存儲(chǔ)的字段名稱包括所述舊數(shù)據(jù) 表的部分字段名稱;
[0045] 所述處理模塊,具體用于刪除所述舊數(shù)據(jù)表中的至少一個(gè)字段名稱下的數(shù)據(jù);將 所述舊數(shù)據(jù)表中的剩余字段名稱下的數(shù)據(jù)作為所述處理后的數(shù)據(jù);
[0046] 所述存儲(chǔ)模塊,具體用于將所述舊數(shù)據(jù)表中的剩余字段名稱下的數(shù)據(jù)寫(xiě)入與所述 剩余字段名稱對(duì)應(yīng)的所述新數(shù)據(jù)表的字段名稱下。
[0047] 本發(fā)明提供的數(shù)據(jù)庫(kù)升級(jí)方法及裝置,通過(guò)接收舊數(shù)據(jù)庫(kù)的舊數(shù)據(jù)表的數(shù)據(jù),對(duì) 接收的舊數(shù)據(jù)表的數(shù)據(jù)進(jìn)行處理,獲得處理后的數(shù)據(jù),將處理后的數(shù)據(jù)存儲(chǔ)在新數(shù)據(jù)庫(kù)的 新數(shù)據(jù)表中,若判斷獲知新數(shù)據(jù)庫(kù)的數(shù)據(jù)量與舊數(shù)據(jù)庫(kù)的數(shù)據(jù)量的差值小于等于設(shè)定值, 將業(yè)務(wù)系統(tǒng)與舊數(shù)據(jù)庫(kù)的連接切換到與新數(shù)據(jù)庫(kù)的連接,從而保證業(yè)務(wù)系統(tǒng)不中斷,且舊 數(shù)據(jù)庫(kù)中的數(shù)據(jù)不丟失。
【附圖說(shuō)明】
[0048]圖1為本發(fā)明實(shí)施例一所提供的數(shù)據(jù)庫(kù)升級(jí)方法的流程圖;
[0049] 圖2為本發(fā)明實(shí)施例二所提供的數(shù)據(jù)庫(kù)升級(jí)方法的流程圖;
[0050] 圖3為本發(fā)明實(shí)施例三所提供的數(shù)據(jù)庫(kù)升級(jí)方法的流程圖;
[0051] 圖4為本發(fā)明實(shí)施例四所提供的數(shù)據(jù)庫(kù)升級(jí)方法的流程圖;
[0052] 圖5為本發(fā)明實(shí)施例五所提供的數(shù)據(jù)庫(kù)升級(jí)裝置500的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0053] 為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例 中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是 本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員 在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0054] 圖1為本發(fā)明實(shí)施例一所提供的數(shù)據(jù)庫(kù)升級(jí)方法的流程圖。本實(shí)施例的方法適用 于在將業(yè)務(wù)系統(tǒng)由與舊數(shù)據(jù)庫(kù)的連接切換到與新數(shù)據(jù)庫(kù)的連接時(shí),能夠保證業(yè)務(wù)系統(tǒng)不中 斷且舊數(shù)據(jù)庫(kù)中的數(shù)據(jù)不丟失的情況。該方法由數(shù)據(jù)庫(kù)升級(jí)裝置執(zhí)行,該裝置通常以硬件 和/或軟件的方式來(lái)實(shí)現(xiàn)。本實(shí)施例的方法包括如下步驟:
[0055]S110、接收舊數(shù)據(jù)庫(kù)的舊數(shù)據(jù)表中的數(shù)據(jù)。
[0056] 數(shù)據(jù)庫(kù)升級(jí)裝置可以向主機(jī)發(fā)送數(shù)據(jù)同步請(qǐng)求消息,以使主機(jī)根據(jù)數(shù)據(jù)同步請(qǐng)求 消息向數(shù)據(jù)庫(kù)升級(jí)裝置發(fā)送舊數(shù)據(jù)庫(kù)中的舊數(shù)據(jù)表中存儲(chǔ)的數(shù)據(jù)或者舊數(shù)據(jù)庫(kù)中發(fā)生更 改的數(shù)據(jù),或者當(dāng)主機(jī)監(jiān)控到舊數(shù)據(jù)庫(kù)中的舊數(shù)據(jù)表中有新增數(shù)據(jù)、數(shù)據(jù)修改時(shí)向數(shù)據(jù)庫(kù) 升級(jí)裝置發(fā)送新增數(shù)據(jù)或修改數(shù)據(jù)。
[0057]S120、對(duì)接收的舊數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行處理,獲得處理后的數(shù)據(jù)。
[0058]S130、將處理后的數(shù)據(jù)存儲(chǔ)在新數(shù)據(jù)庫(kù)的新數(shù)據(jù)表中。
[0059]S140、若判斷獲知新數(shù)據(jù)庫(kù)的數(shù)據(jù)量與舊數(shù)據(jù)庫(kù)的數(shù)據(jù)量的差值小于等于設(shè)定 值,則將業(yè)務(wù)系統(tǒng)與舊數(shù)據(jù)庫(kù)的連接切換到與新數(shù)據(jù)庫(kù)的連接。
[0060] 數(shù)據(jù)庫(kù)升級(jí)裝置可以對(duì)舊數(shù)據(jù)庫(kù)的數(shù)據(jù)量以及新數(shù)據(jù)庫(kù)的數(shù)據(jù)量進(jìn)行統(tǒng)計(jì),若統(tǒng) 計(jì)出的新數(shù)據(jù)庫(kù)的數(shù)據(jù)量與舊數(shù)據(jù)庫(kù)的數(shù)據(jù)量的差值小于等于設(shè)定值,則將業(yè)務(wù)系統(tǒng)與舊 數(shù)據(jù)