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