變更數(shù)據(jù)表結(jié)構(gòu)的方法
【專利摘要】本發(fā)明提供變更數(shù)據(jù)表結(jié)構(gòu)的方法,有助于使變更數(shù)據(jù)表結(jié)構(gòu)的執(zhí)行時(shí)間較短且可控。本發(fā)明的一種變更數(shù)據(jù)表結(jié)構(gòu)的方法包括:對(duì)應(yīng)于一個(gè)或多個(gè)處于運(yùn)行狀態(tài)原結(jié)構(gòu)數(shù)據(jù)表,所述計(jì)算機(jī)網(wǎng)絡(luò)中的各個(gè)節(jié)點(diǎn)保存一個(gè)或多個(gè)新結(jié)構(gòu)數(shù)據(jù)表;將選定的節(jié)點(diǎn)作為新發(fā)布節(jié)點(diǎn),其他節(jié)點(diǎn)為新訂閱節(jié)點(diǎn),新發(fā)布表和新訂閱表分別為新發(fā)布節(jié)點(diǎn)和新訂閱節(jié)點(diǎn)中的所述新結(jié)構(gòu)數(shù)據(jù)表,將新發(fā)布節(jié)點(diǎn)中的所述原結(jié)構(gòu)數(shù)據(jù)表中的數(shù)據(jù)添加到對(duì)應(yīng)的新結(jié)構(gòu)數(shù)據(jù)表中,并將該數(shù)據(jù)發(fā)布到新訂閱節(jié)點(diǎn);在各個(gè)節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表與原結(jié)構(gòu)數(shù)據(jù)表達(dá)到數(shù)據(jù)同步的情況下,停止所述根節(jié)點(diǎn)中的原結(jié)構(gòu)數(shù)據(jù)表的數(shù)據(jù)寫入,然后將各個(gè)節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表作為運(yùn)行狀態(tài)的數(shù)據(jù)表。
【專利說明】變更數(shù)據(jù)表結(jié)構(gòu)的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種變更數(shù)據(jù)表結(jié)構(gòu)的方法。
【背景技術(shù)】
[0002] 隨著計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用的普及,數(shù)據(jù)庫的容量也在不斷增大,變更數(shù)據(jù)表結(jié)構(gòu)的工 作也變得越來越耗時(shí)。變更數(shù)據(jù)表結(jié)構(gòu)的慣常做法一般有2種:
[0003] 1、直接在數(shù)據(jù)表上操作,變更表結(jié)構(gòu)定義,可能存在的直接影響,如下面的1、2兩 個(gè)原因。
[0004] 2、創(chuàng)建新結(jié)構(gòu)表,在維護(hù)窗口導(dǎo)入數(shù)據(jù),再修改表名;可能存在的影響只是數(shù)據(jù)導(dǎo) 入時(shí)間受原表大小制約。
[0005] 維護(hù)窗口是業(yè)務(wù)的暫停時(shí)間段,為了盡可能小的影響系統(tǒng)運(yùn)行,維護(hù)窗口越短越 好。面對(duì)數(shù)據(jù)量日益增長(zhǎng)的數(shù)據(jù)表,尤其是已經(jīng)上千萬條數(shù)據(jù),容量超過幾十GB甚至上百 GB時(shí),對(duì)大容量表的結(jié)構(gòu)變更工作(專指擴(kuò)充現(xiàn)有固定長(zhǎng)度的字段長(zhǎng)度)就變得十分困難, 原因有以下幾點(diǎn):
[0006] 1、停機(jī)時(shí)間增長(zhǎng)。因?yàn)閷?duì)數(shù)據(jù)表中固定長(zhǎng)度的字段進(jìn)行長(zhǎng)度擴(kuò)充時(shí)(包括但不限 于int類型變更為bigint、char (10)變更為char (20)等),為保證關(guān)系數(shù)據(jù)庫的ACID原 貝1J,會(huì)對(duì)數(shù)據(jù)表添加架構(gòu)更新鎖(Schema-M),以阻止在結(jié)構(gòu)變更時(shí)有新數(shù)據(jù)寫入;而對(duì)于 大容量的表而言,結(jié)構(gòu)變更的執(zhí)行時(shí)間(以下簡(jiǎn)稱執(zhí)行時(shí)間)將變得更長(zhǎng),以至于超出預(yù)期 的維護(hù)窗口時(shí)間,直接影響業(yè)務(wù)訪問;
[0007] 2、執(zhí)行及回滾時(shí)間風(fēng)險(xiǎn)增加。隨著數(shù)據(jù)量的增加,大容量表的結(jié)構(gòu)變更時(shí)間將優(yōu) 于數(shù)據(jù)量的增長(zhǎng)而快速增加,一旦超出維護(hù)窗口時(shí)間,是繼續(xù)等待還是終止變更進(jìn)入回滾 狀態(tài),將令維護(hù)人員很難抉擇,而且回滾時(shí)間可能超出已經(jīng)執(zhí)行時(shí)間的幾倍或者幾十倍。這 使得操作的不確定性風(fēng)險(xiǎn)大大增加;此外,由于生產(chǎn)環(huán)境的復(fù)雜程度,很難在測(cè)試環(huán)境完全 模擬生產(chǎn)環(huán)境提前進(jìn)行測(cè)試,使得測(cè)試結(jié)果的適用性、可靠性降低,這也增加了對(duì)執(zhí)行時(shí)間 不可控的風(fēng)險(xiǎn)。
[0008] 因此對(duì)于變更數(shù)據(jù)表結(jié)構(gòu)來說,需要一種執(zhí)行時(shí)間較短且可控的方案。
【發(fā)明內(nèi)容】
[0009] 有鑒于此,本發(fā)明提供一種變更數(shù)據(jù)表結(jié)構(gòu)的方法,有助于使變更數(shù)據(jù)表結(jié)構(gòu)的 執(zhí)行時(shí)間較短且可控。
[0010] 為實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供了一種變更數(shù)據(jù)表結(jié)構(gòu)的方法。
[0011] 本發(fā)明的這種變更數(shù)據(jù)表結(jié)構(gòu)的方法,用于在包含根節(jié)點(diǎn)以及多級(jí)子節(jié)點(diǎn)的計(jì)算 機(jī)網(wǎng)絡(luò)中變更各節(jié)點(diǎn)中的數(shù)據(jù)表的結(jié)構(gòu),所述根節(jié)點(diǎn)中的數(shù)據(jù)表接收數(shù)據(jù)并向各子節(jié)點(diǎn)發(fā) 布,該方法包括:對(duì)應(yīng)于一個(gè)或多個(gè)處于運(yùn)行狀態(tài)原結(jié)構(gòu)數(shù)據(jù)表,所述計(jì)算機(jī)網(wǎng)絡(luò)中的各個(gè) 節(jié)點(diǎn)保存一個(gè)或多個(gè)新結(jié)構(gòu)數(shù)據(jù)表;將選定的節(jié)點(diǎn)作為新發(fā)布節(jié)點(diǎn),其他節(jié)點(diǎn)為新訂閱節(jié) 點(diǎn),新發(fā)布表和新訂閱表分別為新發(fā)布節(jié)點(diǎn)和新訂閱節(jié)點(diǎn)中的所述新結(jié)構(gòu)數(shù)據(jù)表,將新發(fā) 布節(jié)點(diǎn)中的所述原結(jié)構(gòu)數(shù)據(jù)表中的數(shù)據(jù)添加到對(duì)應(yīng)的新結(jié)構(gòu)數(shù)據(jù)表中,并將該數(shù)據(jù)發(fā)布到 新訂閱節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表中;在各個(gè)節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表與原結(jié)構(gòu)數(shù)據(jù)表達(dá)到數(shù)據(jù) 同步的情況下,停止所述根節(jié)點(diǎn)中的原結(jié)構(gòu)數(shù)據(jù)表的數(shù)據(jù)寫入,然后將各個(gè)節(jié)點(diǎn)中的新結(jié) 構(gòu)數(shù)據(jù)表作為運(yùn)行狀態(tài)的數(shù)據(jù)表。
[0012] 可選地,所述選定的節(jié)點(diǎn)是所述根節(jié)點(diǎn)或所述子節(jié)點(diǎn)。
[0013] 可選地,所述選定的節(jié)點(diǎn)是向所述計(jì)算機(jī)網(wǎng)絡(luò)添加的新節(jié)點(diǎn),該新節(jié)點(diǎn)為所述根 節(jié)點(diǎn)的訂閱節(jié)點(diǎn)。
[0014] 可選地,所述將新發(fā)布節(jié)點(diǎn)中的所述原結(jié)構(gòu)數(shù)據(jù)表中的數(shù)據(jù)添加到對(duì)應(yīng)的新結(jié)構(gòu) 數(shù)據(jù)表中的步驟包括:將新發(fā)布節(jié)點(diǎn)中的所述原結(jié)構(gòu)數(shù)據(jù)表中的指定范圍的數(shù)據(jù)添加到對(duì) 應(yīng)的新結(jié)構(gòu)數(shù)據(jù)表中,然后將該原結(jié)構(gòu)數(shù)據(jù)表與該新結(jié)構(gòu)數(shù)據(jù)表之間的差異數(shù)據(jù)添加到該 新結(jié)構(gòu)數(shù)據(jù)表中。
[0015] 可選地,將各個(gè)節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表作為運(yùn)行狀態(tài)的數(shù)據(jù)表的步驟包括:將各 個(gè)節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表的表名修改為運(yùn)行狀態(tài)的數(shù)據(jù)表的表名。
[0016] 根據(jù)本發(fā)明的另一方面,提供了另一種變更數(shù)據(jù)表結(jié)構(gòu)的方法。
[0017] 本發(fā)明的這種變更數(shù)據(jù)表結(jié)構(gòu)的方法,用于變更單節(jié)點(diǎn)中的數(shù)據(jù)表的結(jié)構(gòu),該方 法包括:對(duì)應(yīng)于一個(gè)或多個(gè)處于運(yùn)行狀態(tài)原結(jié)構(gòu)數(shù)據(jù)表,所述單節(jié)點(diǎn)保存一個(gè)或多個(gè)新結(jié) 構(gòu)數(shù)據(jù)表;設(shè)置新節(jié)點(diǎn),并將該新節(jié)點(diǎn)和所述單節(jié)點(diǎn)分別作為訂閱節(jié)點(diǎn)和發(fā)布節(jié)點(diǎn);將所 述新節(jié)點(diǎn)作為新發(fā)布節(jié)點(diǎn),所述單節(jié)點(diǎn)作為新訂閱節(jié)點(diǎn),新發(fā)布表和新訂閱表分別為新發(fā) 布節(jié)點(diǎn)和新訂閱節(jié)點(diǎn)中的所述新結(jié)構(gòu)數(shù)據(jù)表,將新發(fā)布節(jié)點(diǎn)中的所述原結(jié)構(gòu)數(shù)據(jù)表中的數(shù) 據(jù)添加到對(duì)應(yīng)的新結(jié)構(gòu)數(shù)據(jù)表中,并將該數(shù)據(jù)發(fā)布到新訂閱節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表中;在 各個(gè)節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表與原結(jié)構(gòu)數(shù)據(jù)表達(dá)到數(shù)據(jù)同步的情況下,停止所述根節(jié)點(diǎn)中的 原結(jié)構(gòu)數(shù)據(jù)表的數(shù)據(jù)寫入,然后將各個(gè)節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表作為運(yùn)行狀態(tài)的數(shù)據(jù)表。
[0018] 可選地,所述將新發(fā)布節(jié)點(diǎn)中的所述原結(jié)構(gòu)數(shù)據(jù)表中的數(shù)據(jù)添加到對(duì)應(yīng)的新結(jié)構(gòu) 數(shù)據(jù)表中的步驟包括:將新發(fā)布節(jié)點(diǎn)中的所述原結(jié)構(gòu)數(shù)據(jù)表中的指定范圍的數(shù)據(jù)添加到對(duì) 應(yīng)的新結(jié)構(gòu)數(shù)據(jù)表中,然后將該原結(jié)構(gòu)數(shù)據(jù)表與該新結(jié)構(gòu)數(shù)據(jù)表之間的差異數(shù)據(jù)添加到該 新結(jié)構(gòu)數(shù)據(jù)表中。
[0019] 可選地,將各個(gè)節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表作為運(yùn)行狀態(tài)的數(shù)據(jù)表的步驟包括:將各 個(gè)節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表的表名修改為運(yùn)行狀態(tài)的數(shù)據(jù)表的表名。
[0020] 根據(jù)本發(fā)明的技術(shù)方案,在變更數(shù)據(jù)表結(jié)構(gòu)時(shí),在維護(hù)窗口期間之前,將原結(jié)構(gòu)數(shù) 據(jù)表的數(shù)據(jù)轉(zhuǎn)移到新結(jié)構(gòu)數(shù)據(jù)表中,對(duì)于原結(jié)構(gòu)數(shù)據(jù)表與新結(jié)構(gòu)數(shù)據(jù)表之間仍存在的差異 數(shù)據(jù)則陸續(xù)補(bǔ)齊,使二者數(shù)據(jù)同步;然后進(jìn)入維護(hù)窗口,在維護(hù)窗口期間,將新結(jié)構(gòu)數(shù)據(jù)表 作為運(yùn)行狀態(tài)的數(shù)據(jù)表,主要工作是修改數(shù)據(jù)表的名稱,耗時(shí)較短,再加上一些檢查、測(cè)試 的工作,這些工作耗時(shí)一般不高,因此總的來說能夠大幅度縮短維護(hù)窗口的長(zhǎng)度。并且從本 實(shí)施例技術(shù)方案可以看出,維護(hù)窗口的長(zhǎng)度主要取決于數(shù)據(jù)表的個(gè)數(shù),而與數(shù)據(jù)表本身的 大小無關(guān),而數(shù)據(jù)表的個(gè)數(shù)一般有限而且較為穩(wěn)定,所以維護(hù)窗口的時(shí)間可控。
【專利附圖】
【附圖說明】
[0021] 附圖用于更好地理解本發(fā)明,不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。其中:
[0022] 圖1是與本發(fā)明實(shí)施例有關(guān)的計(jì)算機(jī)網(wǎng)絡(luò)的示意圖;
[0023] 圖2是根據(jù)本發(fā)明實(shí)施例的變更數(shù)據(jù)表結(jié)構(gòu)的方法的主要步驟的示意圖;
[0024] 圖3是根據(jù)本發(fā)明實(shí)施例的向新結(jié)構(gòu)數(shù)據(jù)表填充數(shù)據(jù)的示意圖。
【具體實(shí)施方式】
[0025] 以下結(jié)合附圖對(duì)本發(fā)明的示范性實(shí)施例做出說明,其中包括本發(fā)明實(shí)施例的各種 細(xì)節(jié)以助于理解,應(yīng)當(dāng)將它們認(rèn)為僅僅是示范性的。因此,本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí) 至IJ,可以對(duì)這里描述的實(shí)施例做出各種改變和修改,而不會(huì)背離本發(fā)明的范圍和精神。同 樣,為了清楚和簡(jiǎn)明,以下的描述中省略了對(duì)公知功能和結(jié)構(gòu)的描述。
[0026] 圖1是與本發(fā)明實(shí)施例有關(guān)的計(jì)算機(jī)網(wǎng)絡(luò)的示意圖。如圖1所示,根節(jié)點(diǎn)11中運(yùn) 行的數(shù)據(jù)表為發(fā)布表,發(fā)布表的內(nèi)容向各級(jí)子節(jié)點(diǎn)例如節(jié)點(diǎn)21發(fā)送,各級(jí)子節(jié)點(diǎn)中運(yùn)行的 數(shù)據(jù)表為訂閱表,訂閱表的內(nèi)容全部來自于發(fā)布表。各個(gè)節(jié)點(diǎn)中運(yùn)行的數(shù)據(jù)表可以是一個(gè), 也可以是多個(gè)。在變更表結(jié)構(gòu)時(shí),發(fā)布表和各個(gè)訂閱表都需要變更。
[0027] 在本發(fā)明實(shí)施例中,各個(gè)節(jié)點(diǎn)中的原結(jié)構(gòu)數(shù)據(jù)表之間的訂閱關(guān)系是圖中的各級(jí)子 節(jié)點(diǎn)中的訂閱表的數(shù)據(jù)來自于根節(jié)點(diǎn)11中的發(fā)布表,數(shù)據(jù)表中的數(shù)據(jù)的流向如圖1中的直 線箭頭所示。在變更數(shù)據(jù)表結(jié)構(gòu)時(shí),在各個(gè)節(jié)點(diǎn)中建立每個(gè)原結(jié)構(gòu)數(shù)據(jù)表對(duì)應(yīng)的新結(jié)構(gòu)的 數(shù)據(jù)表,此時(shí)新結(jié)構(gòu)數(shù)據(jù)表尚為空表,需將數(shù)據(jù)導(dǎo)入其中。在這種情況下,本實(shí)施例中采用 一種新的發(fā)布-訂閱機(jī)制來實(shí)現(xiàn)各個(gè)節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表的數(shù)據(jù)填充。以下結(jié)合圖2作 出說明。圖2是根據(jù)本發(fā)明實(shí)施例的變更數(shù)據(jù)表結(jié)構(gòu)的方法的主要步驟的示意圖。
[0028] 步驟S21 :各個(gè)節(jié)點(diǎn)保存各自原結(jié)構(gòu)數(shù)據(jù)表所對(duì)應(yīng)的新結(jié)構(gòu)數(shù)據(jù)表。新結(jié)構(gòu)數(shù)據(jù) 表應(yīng)當(dāng)與原結(jié)構(gòu)數(shù)據(jù)表一一對(duì)應(yīng)。一個(gè)簡(jiǎn)單的對(duì)應(yīng)方式是新結(jié)構(gòu)數(shù)據(jù)表的表名由原結(jié)構(gòu)數(shù) 據(jù)表的表名加上前綴或后綴而構(gòu)成。當(dāng)然也可采用其他的方式來實(shí)現(xiàn)上述對(duì)應(yīng),使新結(jié)構(gòu) 數(shù)據(jù)表在作為運(yùn)行狀態(tài)數(shù)據(jù)表時(shí)能夠準(zhǔn)確地取代對(duì)應(yīng)的原結(jié)構(gòu)數(shù)據(jù)表。在接下來的步驟 中,新結(jié)構(gòu)數(shù)據(jù)表會(huì)被填充數(shù)據(jù),在該過程中,原結(jié)構(gòu)數(shù)據(jù)表仍處于運(yùn)行狀態(tài),即根節(jié)點(diǎn)11 中的發(fā)布表會(huì)接受外部的數(shù)據(jù)寫入,按原有的訂閱關(guān)系,數(shù)據(jù)會(huì)按圖1中的直線箭頭所示 分發(fā)到各個(gè)訂閱表。
[0029] 步驟S22 :選定一個(gè)節(jié)點(diǎn)為新發(fā)布節(jié)點(diǎn)。以圖1為例,可以選擇根節(jié)點(diǎn)11,也可以 選擇其他節(jié)點(diǎn),在以下描述中,以選擇節(jié)點(diǎn)31作為新發(fā)布節(jié)點(diǎn),則其他節(jié)點(diǎn)例如節(jié)點(diǎn)21、 35、包括節(jié)點(diǎn)11,都成為新訂閱節(jié)點(diǎn)。也就是說這里形成了另一套發(fā)布-訂閱架構(gòu)。本步驟 中,選定的新節(jié)點(diǎn)是系統(tǒng)中已有的節(jié)點(diǎn),也可以在系統(tǒng)中新設(shè)置一個(gè)節(jié)點(diǎn)作為新發(fā)布節(jié)點(diǎn), 盡量使本步驟中選擇的發(fā)布節(jié)點(diǎn)有充足的運(yùn)算資源,有利于后續(xù)步驟的高效執(zhí)行。
[0030] 步驟S23 :在新發(fā)布節(jié)點(diǎn)內(nèi)對(duì)新結(jié)構(gòu)數(shù)據(jù)表進(jìn)行數(shù)據(jù)填充。可以按照指定的范圍, 例如創(chuàng)建副本的時(shí)間點(diǎn)之前的數(shù)據(jù),先將新發(fā)布節(jié)點(diǎn)中的原結(jié)構(gòu)數(shù)據(jù)表的該范圍的數(shù)據(jù)填 充到該原結(jié)構(gòu)數(shù)據(jù)表對(duì)應(yīng)的新結(jié)構(gòu)表中。參考圖3,圖3是根據(jù)本發(fā)明實(shí)施例的向新結(jié)構(gòu)數(shù) 據(jù)表填充數(shù)據(jù)的示意圖。
[0031] 圖3中,原結(jié)構(gòu)數(shù)據(jù)表31中,指定范圍的數(shù)據(jù)為數(shù)據(jù)311,將其副本填充到對(duì)應(yīng)的 新結(jié)構(gòu)數(shù)據(jù)表32中。因?yàn)楦鱾€(gè)節(jié)點(diǎn)中的原數(shù)據(jù)表仍會(huì)持續(xù)地接收到新數(shù)據(jù),對(duì)于節(jié)點(diǎn)11 來說是外部的寫入數(shù)據(jù),對(duì)于節(jié)點(diǎn)11的各個(gè)子節(jié)點(diǎn)來說是通過訂閱得到的數(shù)據(jù),所以在新 結(jié)構(gòu)數(shù)據(jù)表得到數(shù)據(jù)311后,原結(jié)構(gòu)數(shù)據(jù)表31中又出現(xiàn)新數(shù)據(jù)312。對(duì)于該新數(shù)據(jù)來說,該 新數(shù)據(jù)312是按原有的訂閱關(guān)系得到(若新發(fā)布節(jié)點(diǎn)是根節(jié)點(diǎn)11,則該新數(shù)據(jù)312則是外 部寫入數(shù)據(jù)),也需要添加到新結(jié)構(gòu)數(shù)據(jù)表32中。在添加的過程中又會(huì)出現(xiàn)新的差異數(shù)據(jù), 仍需添加到新結(jié)構(gòu)數(shù)據(jù)表32中,因?yàn)樘砑拥乃俣却笥谛碌牟町悢?shù)據(jù)出現(xiàn)的速度,所以這是 一個(gè)收斂的過程,最終達(dá)到只要原結(jié)構(gòu)數(shù)據(jù)表收到一項(xiàng)數(shù)據(jù)就會(huì)立即添加到新結(jié)構(gòu)數(shù)據(jù)表 的狀態(tài),即二者形成同步。
[0032] 步驟S24 :將選擇的發(fā)布節(jié)點(diǎn)內(nèi)的新結(jié)構(gòu)數(shù)據(jù)表的數(shù)據(jù)分發(fā)到其他節(jié)點(diǎn)中。這里 即按上述的另一套發(fā)布-訂閱系統(tǒng)進(jìn)行數(shù)據(jù)發(fā)布,使數(shù)據(jù)到達(dá)新訂閱節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù) 表中,數(shù)據(jù)的流向如圖1中的彎線箭頭所示。實(shí)際上本步驟與步驟S23有部分的重疊,因?yàn)?差異數(shù)據(jù)是分批地補(bǔ)充到新結(jié)構(gòu)數(shù)據(jù)表,從而也是分批地進(jìn)行發(fā)布。在每個(gè)節(jié)點(diǎn)中的新結(jié) 構(gòu)數(shù)據(jù)表和原結(jié)構(gòu)數(shù)據(jù)表情況下,就可以進(jìn)入數(shù)據(jù)維護(hù)窗口。
[0033] 步驟S25 :停止根節(jié)點(diǎn)中的原結(jié)構(gòu)數(shù)據(jù)表的數(shù)據(jù)寫入。本步驟實(shí)現(xiàn)停寫,標(biāo)志著進(jìn) 入維護(hù)窗口。
[0034] 步驟S26 :將各個(gè)節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表作為運(yùn)行狀態(tài)的數(shù)據(jù)表。具體是將各個(gè) 節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表的表名修改為運(yùn)行狀態(tài)的數(shù)據(jù)表的表名。
[0035] 以上對(duì)于更新圖1所示的計(jì)算機(jī)網(wǎng)絡(luò)中的數(shù)據(jù)表結(jié)構(gòu)的方案做出了說明。該方案 的構(gòu)思可以應(yīng)用于僅包含單個(gè)節(jié)點(diǎn)的系統(tǒng)中??梢栽谠搯喂?jié)點(diǎn)中建立新結(jié)構(gòu)數(shù)據(jù)表并使其 與原結(jié)構(gòu)數(shù)據(jù)表的數(shù)據(jù)同步,然后進(jìn)入數(shù)據(jù)維護(hù)窗口,以及將該新結(jié)構(gòu)數(shù)據(jù)表作為運(yùn)行狀 態(tài)的數(shù)據(jù)表。也可以新增一個(gè)節(jié)點(diǎn),將其作為原單個(gè)節(jié)點(diǎn)的訂閱節(jié)點(diǎn),再將該新增的節(jié)點(diǎn)作 為新的發(fā)布節(jié)點(diǎn),原單個(gè)節(jié)點(diǎn)作為訂閱節(jié)點(diǎn),以形成新的發(fā)布-訂閱架構(gòu),然后按照類似于 圖2的步驟完成數(shù)據(jù)表的結(jié)構(gòu)更新。
[0036] 根據(jù)本發(fā)明實(shí)施例的技術(shù)方案,在變更數(shù)據(jù)表結(jié)構(gòu)時(shí),在維護(hù)窗口期間之前,將原 結(jié)構(gòu)數(shù)據(jù)表的數(shù)據(jù)轉(zhuǎn)移到新結(jié)構(gòu)數(shù)據(jù)表中,對(duì)于原結(jié)構(gòu)數(shù)據(jù)表與新結(jié)構(gòu)數(shù)據(jù)表之間仍存在 的差異數(shù)據(jù)則陸續(xù)補(bǔ)齊,使二者數(shù)據(jù)同步;然后進(jìn)入維護(hù)窗口,在維護(hù)窗口期間,將新結(jié)構(gòu) 數(shù)據(jù)表作為運(yùn)行狀態(tài)的數(shù)據(jù)表,主要工作是修改數(shù)據(jù)表的名稱,耗時(shí)較短,再加上一些檢 查、測(cè)試的工作,這些工作耗時(shí)一般不高,因此總的來說能夠大幅度縮短維護(hù)窗口的長(zhǎng)度。 并且從本實(shí)施例技術(shù)方案可以看出,維護(hù)窗口的長(zhǎng)度主要取決于數(shù)據(jù)表的個(gè)數(shù),而與數(shù)據(jù) 表本身的大小無關(guān),而數(shù)據(jù)表的個(gè)數(shù)一般較少而且較為穩(wěn)定,所以維護(hù)窗口的時(shí)間可控。經(jīng) 發(fā)明人測(cè)算,在原結(jié)構(gòu)數(shù)據(jù)表為16個(gè)、40%左右的表的記錄數(shù)在5000萬以上的情況下,采 用現(xiàn)有技術(shù)至少需要70小時(shí),而采用本實(shí)施例的技術(shù)方案只需3小時(shí),維護(hù)窗口的長(zhǎng)度縮 短至1/20以內(nèi)。
[0037] 以上結(jié)合具體實(shí)施例描述了本發(fā)明的基本原理,但是,需要指出的是,對(duì)本領(lǐng)域的 普通技術(shù)人員而言,能夠理解本發(fā)明的方法和設(shè)備的全部或者任何步驟或者部件,可以在 任何計(jì)算裝置(包括處理器、存儲(chǔ)介質(zhì)等)或者計(jì)算裝置的網(wǎng)絡(luò)中,以硬件、固件、軟件或者 它們的組合加以實(shí)現(xiàn),這是本領(lǐng)域普通技術(shù)人員在閱讀了本發(fā)明的說明的情況下運(yùn)用他們 的基本編程技能就能實(shí)現(xiàn)的。
[0038] 因此,本發(fā)明的目的還可以通過在任何計(jì)算裝置上運(yùn)行一個(gè)程序或者一組程序來 實(shí)現(xiàn)。所述計(jì)算裝置可以是公知的通用裝置。因此,本發(fā)明的目的也可以僅僅通過提供包 含實(shí)現(xiàn)所述方法或者裝置的程序代碼的程序產(chǎn)品來實(shí)現(xiàn)。也就是說,這樣的程序產(chǎn)品也構(gòu) 成本發(fā)明,并且存儲(chǔ)有這樣的程序產(chǎn)品的存儲(chǔ)介質(zhì)也構(gòu)成本發(fā)明。顯然,所述存儲(chǔ)介質(zhì)可以 是任何公知的存儲(chǔ)介質(zhì)或者將來開發(fā)出的任何存儲(chǔ)介質(zhì)。
[0039] 還需要指出的是,在本發(fā)明的裝置和方法中,顯然,各部件或各步驟是可以分解和 /或重新組合的。這些分解和/或重新組合應(yīng)視為本發(fā)明的等效方案。并且,執(zhí)行上述系列 處理的步驟可以自然地按照說明的順序按時(shí)間順序執(zhí)行,但是并不需要一定按照時(shí)間順序 執(zhí)行。某些步驟可以并行或彼此獨(dú)立地執(zhí)行。
[0040] 上述【具體實(shí)施方式】,并不構(gòu)成對(duì)本發(fā)明保護(hù)范圍的限制。本領(lǐng)域技術(shù)人員應(yīng)該明 白的是,取決于設(shè)計(jì)要求和其他因素,可以發(fā)生各種各樣的修改、組合、子組合和替代。任何 在本發(fā)明的精神和原則之內(nèi)所作的修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)范圍 之內(nèi)。
【權(quán)利要求】
1. 一種變更數(shù)據(jù)表結(jié)構(gòu)的方法,用于在包含根節(jié)點(diǎn)以及多級(jí)子節(jié)點(diǎn)的計(jì)算機(jī)網(wǎng)絡(luò)中變 更各節(jié)點(diǎn)中的數(shù)據(jù)表的結(jié)構(gòu),所述根節(jié)點(diǎn)中的數(shù)據(jù)表接收數(shù)據(jù)并向各子節(jié)點(diǎn)發(fā)布,其特征 在于,該方法包括: 對(duì)應(yīng)于一個(gè)或多個(gè)處于運(yùn)行狀態(tài)原結(jié)構(gòu)數(shù)據(jù)表,所述計(jì)算機(jī)網(wǎng)絡(luò)中的各個(gè)節(jié)點(diǎn)保存一 個(gè)或多個(gè)新結(jié)構(gòu)數(shù)據(jù)表; 將選定的節(jié)點(diǎn)作為新發(fā)布節(jié)點(diǎn),其他節(jié)點(diǎn)為新訂閱節(jié)點(diǎn),新發(fā)布表和新訂閱表分別為 新發(fā)布節(jié)點(diǎn)和新訂閱節(jié)點(diǎn)中的所述新結(jié)構(gòu)數(shù)據(jù)表,將新發(fā)布節(jié)點(diǎn)中的所述原結(jié)構(gòu)數(shù)據(jù)表中 的數(shù)據(jù)添加到對(duì)應(yīng)的新結(jié)構(gòu)數(shù)據(jù)表中,并將該數(shù)據(jù)發(fā)布到新訂閱節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表 中; 在各個(gè)節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表與原結(jié)構(gòu)數(shù)據(jù)表達(dá)到數(shù)據(jù)同步的情況下,停止所述根節(jié) 點(diǎn)中的原結(jié)構(gòu)數(shù)據(jù)表的數(shù)據(jù)寫入,然后將各個(gè)節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表作為運(yùn)行狀態(tài)的數(shù)據(jù) 表。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述選定的節(jié)點(diǎn)是所述根節(jié)點(diǎn)或所述子 節(jié)點(diǎn)。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述選定的節(jié)點(diǎn)是向所述計(jì)算機(jī)網(wǎng)絡(luò)添 加的新節(jié)點(diǎn),該新節(jié)點(diǎn)為所述根節(jié)點(diǎn)的訂閱節(jié)點(diǎn)。
4. 根據(jù)權(quán)利要求1、2或3所述的方法,其特征在于,所述將新發(fā)布節(jié)點(diǎn)中的所述原結(jié)構(gòu) 數(shù)據(jù)表中的數(shù)據(jù)添加到對(duì)應(yīng)的新結(jié)構(gòu)數(shù)據(jù)表中的步驟包括:將新發(fā)布節(jié)點(diǎn)中的所述原結(jié)構(gòu) 數(shù)據(jù)表中的指定范圍的數(shù)據(jù)添加到對(duì)應(yīng)的新結(jié)構(gòu)數(shù)據(jù)表中,然后將該原結(jié)構(gòu)數(shù)據(jù)表與該新 結(jié)構(gòu)數(shù)據(jù)表之間的差異數(shù)據(jù)添加到該新結(jié)構(gòu)數(shù)據(jù)表中。
5. 根據(jù)權(quán)利要求1、2或3所述的方法,其特征在于,將各個(gè)節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表作為 運(yùn)行狀態(tài)的數(shù)據(jù)表的步驟包括:將各個(gè)節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表的表名修改為運(yùn)行狀態(tài)的數(shù) 據(jù)表的表名。
6. -種變更數(shù)據(jù)表結(jié)構(gòu)的方法,用于變更單節(jié)點(diǎn)中的數(shù)據(jù)表的結(jié)構(gòu),其特征在于,該方 法包括: 對(duì)應(yīng)于一個(gè)或多個(gè)處于運(yùn)行狀態(tài)原結(jié)構(gòu)數(shù)據(jù)表,所述單節(jié)點(diǎn)保存一個(gè)或多個(gè)新結(jié)構(gòu)數(shù) 據(jù)表; 設(shè)置新節(jié)點(diǎn),并將該新節(jié)點(diǎn)和所述單節(jié)點(diǎn)分別作為訂閱節(jié)點(diǎn)和發(fā)布節(jié)點(diǎn); 將所述新節(jié)點(diǎn)作為新發(fā)布節(jié)點(diǎn),所述單節(jié)點(diǎn)作為新訂閱節(jié)點(diǎn),新發(fā)布表和新訂閱表分 別為新發(fā)布節(jié)點(diǎn)和新訂閱節(jié)點(diǎn)中的所述新結(jié)構(gòu)數(shù)據(jù)表,將新發(fā)布節(jié)點(diǎn)中的所述原結(jié)構(gòu)數(shù)據(jù) 表中的數(shù)據(jù)添加到對(duì)應(yīng)的新結(jié)構(gòu)數(shù)據(jù)表中,并將該數(shù)據(jù)發(fā)布到新訂閱節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù) 表中; 在各個(gè)節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表與原結(jié)構(gòu)數(shù)據(jù)表達(dá)到數(shù)據(jù)同步的情況下,停止所述根節(jié) 點(diǎn)中的原結(jié)構(gòu)數(shù)據(jù)表的數(shù)據(jù)寫入,然后將各個(gè)節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表作為運(yùn)行狀態(tài)的數(shù)據(jù) 表。
7. 根據(jù)權(quán)利要求6所述的方法,其特征在于,所述將新發(fā)布節(jié)點(diǎn)中的所述原結(jié)構(gòu)數(shù)據(jù) 表中的數(shù)據(jù)添加到對(duì)應(yīng)的新結(jié)構(gòu)數(shù)據(jù)表中的步驟包括:將新發(fā)布節(jié)點(diǎn)中的所述原結(jié)構(gòu)數(shù)據(jù) 表中的指定范圍的數(shù)據(jù)添加到對(duì)應(yīng)的新結(jié)構(gòu)數(shù)據(jù)表中,然后將該原結(jié)構(gòu)數(shù)據(jù)表與該新結(jié)構(gòu) 數(shù)據(jù)表之間的差異數(shù)據(jù)添加到該新結(jié)構(gòu)數(shù)據(jù)表中。
8.根據(jù)權(quán)利要求6或7所述的方法,其特征在于,將各個(gè)節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表作為運(yùn) 行狀態(tài)的數(shù)據(jù)表的步驟包括:將各個(gè)節(jié)點(diǎn)中的新結(jié)構(gòu)數(shù)據(jù)表的表名修改為運(yùn)行狀態(tài)的數(shù)據(jù) 表的表名。
【文檔編號(hào)】G06F17/30GK104112016SQ201410344171
【公開日】2014年10月22日 申請(qǐng)日期:2014年7月18日 優(yōu)先權(quán)日:2014年7月18日
【發(fā)明者】肖磊 申請(qǐng)人:北京京東尚科信息技術(shù)有限公司, 北京京東世紀(jì)貿(mào)易有限公司