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