基于數(shù)據(jù)庫時間標簽的增量數(shù)據(jù)查詢方法
【專利摘要】本發(fā)明公開了一種基于數(shù)據(jù)庫時間標簽的增量數(shù)據(jù)查詢方法,其采用時間標簽的方式分別對數(shù)據(jù)庫數(shù)據(jù)和客戶端請求進行標注,數(shù)據(jù)庫數(shù)據(jù)攜帶的時間標簽,記錄數(shù)據(jù)的更新時間,即更新時間標簽;客戶端請求中攜帶的時間標簽是用戶上一次請求數(shù)據(jù)的響應時間,即響應時間標簽,服務器通過比較數(shù)據(jù)庫信息的更新時間標簽和請求中的響應時間標簽實現(xiàn)增量數(shù)據(jù)反饋。本發(fā)明的方法可以適用于數(shù)據(jù)更新相對不頻繁,但單次更新數(shù)據(jù)量巨大的客戶服務器網(wǎng)絡環(huán)境,通過增加時間標簽,實現(xiàn)數(shù)據(jù)庫增量數(shù)據(jù)查詢,能夠在保證滿足用戶請求的同時減少服務器的數(shù)據(jù)處理開銷和通信開銷,極大地改善服務器的性能。
【專利說明】基于數(shù)據(jù)庫時間標簽的增量數(shù)據(jù)查詢方法
【技術領域】
[0001]本發(fā)明屬于網(wǎng)絡通信【技術領域】,具體涉及一種基于數(shù)據(jù)庫時間標簽的增量數(shù)據(jù)查詢方法的設計。
【背景技術】
[0002]大多數(shù)應用軟件系統(tǒng)都是基于客戶端/服務器這種網(wǎng)絡環(huán)境開發(fā)的,在這種結構中,客戶端可以通過向服務器發(fā)送請求來索取需求數(shù)據(jù)。通常情況下,客戶端每發(fā)送一次請求命令,服務器都會根據(jù)客戶端的需求查詢數(shù)據(jù)庫獲得所有相關數(shù)據(jù)并返回給客戶端。對于更新頻繁的大數(shù)據(jù)庫系統(tǒng)來說,采用前面所述服務器接收請求即進行查詢的機制是合理甚至必須的;但是對于更新相對不頻繁,并且單次更新數(shù)據(jù)量很大的數(shù)據(jù)系統(tǒng)來說,這種查詢機制就會存在一定弊端。
[0003]首先,由于數(shù)據(jù)更新相對不頻繁,在多數(shù)情況下用戶每次查詢得到的最終結果實際都是相同的,但卻需要服務器的進行大量重復性的工作。
[0004]其次,假設某客戶端經(jīng)常甚至連續(xù)不斷的一直發(fā)送請求命令的話,服務器就需要一直處理用戶請求,查詢數(shù)據(jù)庫的相關數(shù)據(jù),返回響應,會對服務器造成很大的壓力,占用服務器額外資源,影響其工作效率和性能,甚至造成其崩潰。
【發(fā)明內(nèi)容】
[0005]本發(fā)明所要解決的技術問題是針對現(xiàn)有技術中客戶端與服務器間查詢機制存在的問題導致服務器的工作效率和性能較低的缺陷而提出了一種基于數(shù)據(jù)庫時間標簽的增量數(shù)據(jù)查詢方法。
[0006]本發(fā)明解決其技術問題采用的技術方案是:基于數(shù)據(jù)庫時間標簽的增量數(shù)據(jù)查詢方法,具體包括:
[0007]步驟1、服務器端采用更新時間標簽對數(shù)據(jù)庫中的數(shù)據(jù)進行更新時間記錄,所述更新時間標簽隨數(shù)據(jù)庫中的數(shù)據(jù)變化而更新;同時服務器端采用響應時間標簽對客戶端向服務器端請求數(shù)據(jù)的響應時間進行標記;
[0008]步驟2、客戶端向所述服務器端發(fā)送數(shù)據(jù)請求報文,若所述客戶端為第一次發(fā)送數(shù)據(jù)請求報文,則直接發(fā)送請求信息;否則,需要攜帶上一次所述服務器端對客戶端回復的數(shù)據(jù)請求的響應時間標簽;
[0009]步驟3、服務器端接收數(shù)據(jù)請求包,提取所述數(shù)據(jù)請求包中攜帶的上一次請求數(shù)據(jù)時所述服務器端回復的響應報文中攜帶的響應時間標簽,將所述響應時間標簽與需求數(shù)據(jù)的更新時間標簽進行比較,并回復響應報文至所述客戶端;
[0010]步驟4、客戶端收到所述服務器端回復的響應報文后,分析響應報文中包含的數(shù)據(jù),利用本地緩存數(shù)據(jù)與返回的數(shù)據(jù)信息構造最終的需求結果。
[0011]進一步的,所述步驟I中,所述更新時間標簽根據(jù)不同的系統(tǒng)性能和功能要求有不同的粒度模式,所述粒度模式對應為數(shù)據(jù)庫中數(shù)據(jù)的更新時間標簽的標記細化到數(shù)據(jù)庫、數(shù)據(jù)表、數(shù)據(jù)記錄或者正則表達式。
[0012]更進一步的,所述粒度模式對應為數(shù)據(jù)庫中數(shù)據(jù)的更新時間標簽的標記細化到數(shù)據(jù)表時,所述數(shù)據(jù)庫單獨維護一個更新時間記錄表,所述更新時間記錄表至少包含兩個字段:數(shù)據(jù)表ID和表的更新時間標簽;
[0013]當數(shù)據(jù)庫中某個數(shù)據(jù)表發(fā)生變化候,所述更新時間記錄表需要記錄這個表的ID和更新時間標簽,當所述客戶端發(fā)送數(shù)據(jù)請求時,先查詢所述更新時間記錄表,若發(fā)現(xiàn)所需數(shù)據(jù)發(fā)生了更新,再去查詢具體數(shù)據(jù)表中更新的新數(shù)據(jù)。
[0014]進一步的,所述步驟3中對所述響應時間標簽與需求數(shù)據(jù)的更新時間標簽進行比較的具體過程為:若數(shù)據(jù)更新時間標簽晚于請求包中攜帶的響應時間標簽,則需要重新查詢數(shù)據(jù)庫,提取需求數(shù)據(jù)返回給客戶端;
[0015]若數(shù)據(jù)的更新時間標簽早于數(shù)據(jù)請求中的響應時間標簽,則不需要在重新查詢數(shù)據(jù)庫獲得該數(shù)據(jù),直接采用標記機制告知客戶端此數(shù)據(jù)在上次請求之后沒有更新變化,直接利用上次的數(shù)據(jù)信息。
[0016]更進一步的,所述步驟3中選擇離當下最近的更時間標簽作為用于比較的更新時間標簽對響應報文作標記。
[0017]本發(fā)明的有益效果:本發(fā)明基于數(shù)據(jù)庫時間標簽的增量數(shù)據(jù)查詢方法通過采用時間標簽的方式分別對數(shù)據(jù)庫數(shù)據(jù)和客戶端請求進行標注,數(shù)據(jù)庫數(shù)據(jù)對應的時間標簽,記錄數(shù)據(jù)的最近更新時間,即更新時間標簽;客戶端請求中攜帶的時間標簽是用戶上一次請求數(shù)據(jù)的響應包標志時間,即響應標記時間標簽;服務器通過比較數(shù)據(jù)庫信息的更新時間標簽和請求中的響應標記時間標簽實現(xiàn)增量數(shù)據(jù)反饋,本發(fā)明可以適用于數(shù)據(jù)更新相對不頻繁的客戶服務器網(wǎng)絡環(huán)境,通過增加時間標簽,實現(xiàn)數(shù)據(jù)庫增量數(shù)據(jù)查詢,能夠在保證滿足用戶請求的同時減少服務器的數(shù)據(jù)處理開銷和通信開銷,極大地改善服務器的性能,節(jié)省資源,同時在靈活性和可擴展性方面有很大的改進。
【專利附圖】
【附圖說明】
[0018]圖1為本發(fā)明實施例的基于數(shù)據(jù)庫時間標簽的增量數(shù)據(jù)查詢方法的流程框圖;
[0019]圖2為本發(fā)明實施例的基于數(shù)據(jù)庫時間標簽的增量數(shù)據(jù)查詢方法中更新記錄表的結構不意圖;
[0020]圖3為本發(fā)明實施例的基于數(shù)據(jù)庫時間標簽的增量數(shù)據(jù)查詢方法中教授信息表、副教授信息表和博士信息表的結構示意圖;
[0021]圖4為本發(fā)明實施例的基于數(shù)據(jù)庫時間標簽的增量數(shù)據(jù)查詢方法中發(fā)生變化之前和之后的更新記錄表。
【具體實施方式】
[0022]下面結合附圖和具體的實施例對本發(fā)明作進一步的闡述。
[0023]如圖1所示為本發(fā)明實施例基于數(shù)據(jù)庫時間標簽的增量數(shù)據(jù)查詢方法的流程框圖,其具體包括如下步驟:
[0024]步驟1、服務器端采用更新時間標簽對數(shù)據(jù)庫中的數(shù)據(jù)進行更新時間記錄,所述更新時間標簽隨數(shù)據(jù)庫中的數(shù)據(jù)變化而更新;同時服務器端采用響應時間標簽對客戶端向服務器端請求數(shù)據(jù)的響應時間進行標記;
[0025]所述更新時間標簽根據(jù)不同的系統(tǒng)性能和功能要求有不同的粒度模式,所述粒度模式對應為數(shù)據(jù)庫中數(shù)據(jù)的更新時間標簽的標記可以細化到數(shù)據(jù)庫、數(shù)據(jù)表、數(shù)據(jù)記錄或者正則表達式等。
[0026]當所述粒度模式對應為數(shù)據(jù)庫中數(shù)據(jù)的更新時間標簽的標記細化到數(shù)據(jù)表時,所述數(shù)據(jù)庫單獨維護一個更新時間記錄表,所述更新時間記錄表至少包含兩個字段:數(shù)據(jù)表ID和表的更新時間標簽;當數(shù)據(jù)庫中某個數(shù)據(jù)表發(fā)生變化候,所述更新時間記錄表需要記錄這個表的ID和更新時間標簽,當所述客戶端發(fā)送數(shù)據(jù)請求時,先查詢所述更新時間記錄表,若發(fā)現(xiàn)所需數(shù)據(jù)發(fā)生了更新,再去查詢具體數(shù)據(jù)表中更新的新數(shù)據(jù)。下面在具體實施例中將詳細介紹所述粒度模式細化到數(shù)據(jù)表時,客戶端向服務器端查詢數(shù)據(jù)增量的詳細過程。
[0027]步驟2、客戶端向所述服務器端發(fā)送數(shù)據(jù)請求報文,若所述客戶端為第一次發(fā)送數(shù)據(jù)請求報文,則直接發(fā)送請求信息;否則,需要攜帶上一次所述服務器端對客戶端回復的數(shù)據(jù)請求的響應時間標簽;
[0028]當客戶端向服務器端發(fā)送了數(shù)據(jù)請求報文之后,所述服務器端會根據(jù)客戶端的數(shù)據(jù)請求回復對應的響應報文,響應報文中除了請求的數(shù)據(jù)信息還包括響應時間標簽,所述響應時間標簽用于標記此次服務器端的響應時間或者是記錄請求數(shù)據(jù)的最近更新時間,這個標志信息需要在客戶端做緩存,當客戶端下次再發(fā)送相同的請求時需要在請求中攜帶上這個響應時間標簽。
[0029]步驟3、服務器端接收數(shù)據(jù)請求包,提取所述數(shù)據(jù)請求包中攜帶的上一次請求數(shù)據(jù)時所述服務器端回復的響應報文中攜帶的響應時間標簽,將所述響應時間標簽與需求數(shù)據(jù)的更新時間標簽進行比較,并回復響應報文至所述客戶端;
[0030]其中,所述響應時間標簽與需求數(shù)據(jù)的更新時間標簽進行比較的具體過程為:若數(shù)據(jù)更新時間標簽晚于請求包中攜帶的響應時間標簽,則需要重新查詢數(shù)據(jù)庫,提取需求數(shù)據(jù)返回給客戶端;若數(shù)據(jù)的更新時間標簽早于數(shù)據(jù)請求中的響應時間標簽,則不需要在重新查詢數(shù)據(jù)庫獲得該數(shù)據(jù),直接采用標記機制告知客戶端此數(shù)據(jù)在上次請求之后沒有更新變化,直接利用上次的數(shù)據(jù)信息。并且在所述步驟3中應當選擇離當下最近的更時間標簽作為用于比較的更新時間標簽對響應報文作標記,例如,假設客戶端向服務器端發(fā)送數(shù)據(jù)請求中要求獲得A、B兩個數(shù)據(jù)信息,而A的更新時間標簽是2013-02-02,B的更新時間標簽是2013-02-03,那兩個時間標簽對比得知,B的更新時間標簽更接近于當下,那我們就選擇B的更新時間標簽作為整個響應報文的響應時間標簽。
[0031]步驟4、客戶端收到所述服務器端回復的響應報文后,分析響應報文中包含的數(shù)據(jù),利用本地緩存數(shù)據(jù)與返回的數(shù)據(jù)信息構造最終的需求結果。
[0032]其中,利用本地緩存數(shù)據(jù)與返回的數(shù)據(jù)信息構造最終的需求結果不屬于本發(fā)明申請方案重點討論內(nèi)容,具體手段可以按照相關規(guī)則利用現(xiàn)有【技術領域】中的公知常識進行需求結構的構造。
[0033]本發(fā)明通過采用時間標簽方式分別對數(shù)據(jù)庫數(shù)據(jù)和客戶端請求進行標注,數(shù)據(jù)庫數(shù)據(jù)攜帶的更新時間標簽記錄數(shù)據(jù)的更新時間;客戶端請求中攜帶的響應時間標簽是用戶上一次請求數(shù)據(jù)的響應時間,服務器端通過比較數(shù)據(jù)庫信息的更新時間標簽和請求中的響應時間標簽實現(xiàn)增量數(shù)據(jù)反饋,本發(fā)明的方法可以適用于數(shù)據(jù)更新相對不頻繁,但單次更新數(shù)據(jù)量巨大的客戶服務器網(wǎng)絡環(huán)境,通過增加時間標簽,實現(xiàn)數(shù)據(jù)庫增量數(shù)據(jù)查詢,能夠在保證滿足用戶請求的同時減少服務器的數(shù)據(jù)處理開銷和通信開銷,極大地改善服務器的性能。
[0034]為了本領域技術人員能夠理解并且實施本發(fā)明技術方案,下面將結合具體的實施例作進一步闡述:其中,所述服務器端的更新時間標簽的粒度模式具體細化到數(shù)據(jù)庫中的數(shù)據(jù)表,數(shù)據(jù)庫中單獨維護著一個更新記錄表,用來記錄每個數(shù)據(jù)表的更新時間,所述更新記錄表的結構如圖2所示,其主要包含兩個字段:數(shù)據(jù)表ID和數(shù)據(jù)表的更新時間標簽,當某數(shù)據(jù)表中有數(shù)據(jù)發(fā)生更新包括增、刪、改等變化時,更新記錄表中此表的表ID對應的更新時間標簽就會隨之發(fā)生更新;當然,如果所述服務器端的更新時間標簽的粒度模式具體細化到其他事項時,對應的更新記錄表也可以為其他格式。
[0035]當客戶端向所述服務器端發(fā)送數(shù)據(jù)請求報文時,請求包中攜帶上次數(shù)據(jù)請求的響應時間標簽,當服務器端接收請求包,提取包中攜帶的上次請求的響應時間標簽,然后根據(jù)需求查詢更新記錄表中用戶需求的數(shù)據(jù)表ID對應的更新時間標簽,將響應時間標簽與更新時間標簽兩者進行比較,實現(xiàn)增量數(shù)據(jù)反饋,具體為:若數(shù)據(jù)表對應的更新時間標簽晚于請求包中攜帶的響應標記時間標簽,則需要重新查詢數(shù)據(jù)表提取此表中的需求數(shù)據(jù);若更新時間標簽早于請求中的時間標簽,則不需要再對該數(shù)據(jù)表進行查詢操作,直接在響應包的包頭做標記說明即可,告訴客戶端此表中的數(shù)據(jù)未發(fā)生更新,與上次的結果保持一致。此夕卜,選擇需求數(shù)據(jù)的數(shù)據(jù)表ID對應的更新時間標簽中離當下時間最近的更新時間標簽對響應包標記響應時間標簽。
[0036]下面通過一個具體實例來進行說明:
[0037]已知數(shù)據(jù)庫中存在三個表:教授信息表、副教授信息表和博士信息表,所述表結構如圖3所示,其中,教授表中包含教授編號、姓名、研究方向三個字段,副教授信息表中包含副教授編號、姓名和研究方向三個字段,博士信息表中包含博士編號、姓名和研究方向三個字段。所述教授信息表、副教授信息表和博士信息表表之間存在一定的關聯(lián):當某副教授升職為教授的時候會同時導致教授表和副教授表信息的更新變化。
[0038]假設:教授信息表、副教授信息表和博士信息表的表ID分別為1,2,3 ;某人甲在2013.6.20日發(fā)送請求查詢了本學院的所有教授信息和所有博士,某人乙在同一天2013.6.20查詢了本學院所有副教授的信息,2013.7.1日學院M副教授正是升職為教授,則若甲乙兩人在2013.7.15日再一次分別查詢本學院教授信息和副教授信息,整個請求、響應流程的展開過程如下步驟:
[0039]步驟A、針對三個表進行更新時間標簽標記,更新記錄表結構如圖2所示,本例的數(shù)據(jù)庫中,2013-07-01日之前和之后的更新記錄表如圖4所示,可見表1、2的時間標簽都發(fā)生了變化。
[0040]步驟B、2013-07_15日甲和乙再一次相同的發(fā)送請求命令,假設甲乙請求包中攜帶的上次請求時間標簽都是2013-06-20。
[0041]步驟C、服務器收到請求包,提取甲請求包的時間標簽,與更新記錄表中的表ID=I的更新時間標簽比較,發(fā)現(xiàn)教授表信息在上次請求之后發(fā)生了更新,則需要重新查詢教授信息表并提取數(shù)據(jù)信息,而表ID=3對應的更新時間早于上次請求時間2013-06-20,說明博士表信息沒有發(fā)生過變化,所以無需再對該表進行查詢操作,構造對甲的響應包并攜帶新的時間標簽2013-07-01返回甲客戶端。對于乙請求包來說,服務器將時間標簽2013-6-20與副教授信息表的更新時間標簽進行比較,發(fā)現(xiàn)2013-6-20之后,副教授信息表發(fā)生了更新變化,所以需要再一次查詢此數(shù)據(jù)表,獲得數(shù)據(jù)返回給客戶端乙,時間標簽也選擇2013-07-01。
[0042]步驟D、甲、乙客戶端收到響應之后,都用2013-07-01標簽更新替換2013-06-20,
緩存在本地,然后根據(jù)規(guī)則構造響應結果即可。
【權利要求】
1.基于數(shù)據(jù)庫時間標簽的增量數(shù)據(jù)查詢方法,其特征在于,具體包括: 步驟1、服務器端采用更新時間標簽對數(shù)據(jù)庫中的數(shù)據(jù)進行更新時間記錄,所述更新時間標簽隨數(shù)據(jù)庫中的數(shù)據(jù)變化而更新;同時服務器端采用響應時間標簽對客戶端向服務器端請求數(shù)據(jù)的響應時間進行標記; 步驟2、客戶端向所述服務器端發(fā)送數(shù)據(jù)請求報文,若所述客戶端為第一次發(fā)送數(shù)據(jù)請求報文,則直接發(fā)送請求信息;否則,需要攜帶上一次所述服務器端對客戶端回復的數(shù)據(jù)請求的響應時間標簽; 步驟3、服務器端接收數(shù)據(jù)請求包,提取所述數(shù)據(jù)請求包中攜帶的上一次請求數(shù)據(jù)時所述服務器端回復的響應報文中攜帶的響應時間標簽,將所述響應時間標簽與需求數(shù)據(jù)的更新時間標簽進行比較,并回復響應報文至所述客戶端; 步驟4、客戶端收到所述服務器端回復的響應報文后,分析響應報文中包含的數(shù)據(jù),利用本地緩存數(shù)據(jù)與返回的數(shù)據(jù)信息構造最終的需求結果。
2.如權利要求1所述的基于數(shù)據(jù)庫時間標簽的增量數(shù)據(jù)查詢方法,其特征在于,所述步驟I中,所述更新時間標簽有不同的粒度模式,所述粒度模式對應為數(shù)據(jù)庫中數(shù)據(jù)的更新時間標簽的標記細化到數(shù)據(jù)庫、數(shù)據(jù)表、數(shù)據(jù)記錄或者正則表達式。
3.如權利要求2所述的基于數(shù)據(jù)庫時間標簽的增量數(shù)據(jù)查詢方法,其特征在于,所述粒度模式對應為數(shù)據(jù)庫中數(shù)據(jù)的更新時間標簽的標記細化到數(shù)據(jù)表時,所述數(shù)據(jù)庫單獨維護一個更新時間記錄表,所述更新時間記錄表至少包含兩個字段:數(shù)據(jù)表ID和表的更新時間標簽; 當數(shù)據(jù)庫中某個數(shù)據(jù)表發(fā)生變化候,所述更新時間記錄表需要記錄這個表的ID和更新時間標簽,當所述客戶端發(fā)送數(shù)據(jù)請求時,先查詢所述更新時間記錄表,若發(fā)現(xiàn)所需數(shù)據(jù)發(fā)生了更新,再去查詢具體數(shù)據(jù)表中更新的新數(shù)據(jù)。
4.如權利要求1至3任一項權利要求所述的基于數(shù)據(jù)庫時間標簽的增量數(shù)據(jù)查詢方法,其特征在于,所述步驟3中對所述響應時間標簽與需求數(shù)據(jù)的更新時間標簽進行比較的具體過程為:若數(shù)據(jù)更新時間標簽晚于請求包中攜帶的響應時間標簽,則需要重新查詢數(shù)據(jù)庫,提取需求數(shù)據(jù)返回給客戶端; 若數(shù)據(jù)的更新時間標簽早于數(shù)據(jù)請求中的響應時間標簽,則不需要在重新查詢數(shù)據(jù)庫獲得該數(shù)據(jù),直接采用標記機制告知客戶端此數(shù)據(jù)在上次請求之后沒有更新變化,直接利用上次的數(shù)據(jù)信息。
5.如權利要求1至3任一項權利要求所述的基于數(shù)據(jù)庫時間標簽的增量數(shù)據(jù)查詢方法,其特征在于,所述步驟3中選擇離當下最近的更時間標簽作為用于比較的更新時間標簽對響應報文作標記。
【文檔編號】H04L29/06GK103440317SQ201310381493
【公開日】2013年12月11日 申請日期:2013年8月28日 優(yōu)先權日:2013年8月28日
【發(fā)明者】李龍江, 趙海霞, 夏棋, 李永剛 申請人:電子科技大學