專利名稱:實現(xiàn)歷史數(shù)據(jù)繞接的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機領(lǐng)域,尤其涉及基于關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(DBMS,如SQL Server、SYBASE等)中實時、動態(tài)增長的數(shù)據(jù)進行定期繞接的方法。
背景技術(shù):
目前幾乎所有的企業(yè)應用都較多依賴關(guān)系型數(shù)據(jù)庫管理系統(tǒng)的支持。在關(guān)系型數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)是至關(guān)重要的,而數(shù)據(jù)的存儲和管理方法也必須是有效的,有效性主要包括兩個方面第一是數(shù)據(jù)的正確性,第二則是針對數(shù)據(jù)的處理效率,兩者任何一項都不可缺少。在經(jīng)營活動中,某些歷史數(shù)據(jù)是隨著時間而不斷地動態(tài)增長的,對于這樣的數(shù)據(jù),需要采取更加有效的管理措施,以免數(shù)據(jù)量過大而成為應用處理上的效率瓶頸,甚至超出了設(shè)備空間使得新數(shù)據(jù)無法入庫從而影響業(yè)務的實施。
目前,對于這樣數(shù)據(jù)的處理方式主要是預先對數(shù)據(jù)設(shè)定某個記錄數(shù)目門限值,并定期將該門限值與當前數(shù)據(jù)的記錄數(shù)目相比較。如果當前記錄數(shù)目超出了設(shè)定門限值,則首先要對數(shù)據(jù)進行備份,然后對超出門限的數(shù)據(jù)進行繞接(所謂繞接,就是對歷史數(shù)據(jù)采用一定的方法進行截斷刪除的操作)。根據(jù)采用的方法不同,繞接的效果和效率也是不同的。目前截斷操作多數(shù)都是基于比較數(shù)據(jù)中的某字段的大小/先后關(guān)系來進行的,例如整形的id標識字段以及時間類型字段、應用的操作日志中的操作時間、通訊應用系統(tǒng)中傳輸設(shè)備告警信息中的告警產(chǎn)生時間以及告警的整型流水號等字段。目前,依賴這種記錄的先后關(guān)系而對數(shù)據(jù)進行截斷操作主要區(qū)分為以下幾種方式第一種方法是根據(jù)時間字段的順序關(guān)系循環(huán)刪除某個最早的單位時間的記錄數(shù)據(jù)。例如刪除數(shù)據(jù)中最早的一天或者一個月的記錄數(shù)據(jù),然后再次對當前記錄數(shù)目與門限值相比較,如果記錄數(shù)目仍然大于門限值,則重復上述操作,直到當前記錄數(shù)目小于門限值為止。該方法的弊端在于如果這種歷史數(shù)據(jù)的產(chǎn)生是隨時間的變化而分布極不均勻的,那么就會產(chǎn)生很不理想的結(jié)果。例如在極端的情況下,所有的數(shù)據(jù)都是在某個時間單位里產(chǎn)生,那么應用該方法就會一次將所有的數(shù)據(jù)刪除掉,從而導致繞接操作以后就沒有任何可用的數(shù)據(jù)。而實施繞接以后得到的理想結(jié)果是能夠使得剩余的數(shù)據(jù)量與門限值大致相等,以便供業(yè)務應用使用,顯然此種方法很難保證這一點的實現(xiàn)。
第二種方法是根據(jù)某個時間字段的順序關(guān)系循環(huán)刪除產(chǎn)生最早的單條數(shù)據(jù),直到數(shù)據(jù)量達到門限為止。這種辦法保證了每一次繞接操作后剩余的數(shù)據(jù)量與門限值保持一致,處理結(jié)果是理想的,但其弊端在于處理的效率上該繞接方法對數(shù)據(jù)庫的訪問量隨超越門限的記錄數(shù)目的增長而呈線性增長。例如,如果檢測到當前數(shù)據(jù)量較門限設(shè)定值大1萬,就要進行1萬次的數(shù)據(jù)庫訪問來刪除最早產(chǎn)生的1萬條記錄。數(shù)據(jù)庫的訪問是相對耗時的操作,提高應用處理性能的方法之一就是盡量減少對數(shù)據(jù)庫的訪問,1萬次的數(shù)據(jù)庫訪問操作將會嚴重降低應用的處理性能,如果這個數(shù)目更高則處理效率可能使人無法忍受。
第三種方法是根據(jù)某種id標識字段的先后關(guān)系循環(huán)刪除小于某id的所有數(shù)據(jù)。這種id標識字段既可能是系統(tǒng)自動產(chǎn)生的(目前幾乎所有的DBMS都提供了表自動生成id標識字段的功能),也可能是用戶自己定義的。在這種情況下,應用在運行一段時間后,用戶的刪除操作可能會導致了數(shù)據(jù)id標識的不連續(xù)性,并且該方法也會受到數(shù)據(jù)隨時間分布不均而導致的每次截斷數(shù)據(jù)的數(shù)目無法確定的結(jié)果,從而導致了與前述第一種方法相同的結(jié)果,弊端也是十分明顯的。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是克服現(xiàn)有技術(shù)存在的對歷史數(shù)據(jù)無法有效管理以及效率低下的缺點,以期提出一種能夠有效管理歷史數(shù)據(jù)、提高應用處理效率的實現(xiàn)歷史數(shù)據(jù)繞接的方法。
本發(fā)明所述實現(xiàn)歷史數(shù)據(jù)繞接的方法包括以下步驟1)獲取當前數(shù)據(jù)記錄的總數(shù)目;2)將當前記錄的總數(shù)目與設(shè)定的記錄門限值相比較,如果當前總記錄數(shù)小于門限值,那么等待一個單位時間(例如一個月,具體的周期根據(jù)應用的需要確定)后重新啟動步驟1);如果當前總記錄數(shù)大于門限值則轉(zhuǎn)向3)3)計算得到超越門限的記錄數(shù)目nc1;4)得到歷史數(shù)據(jù)的最早產(chǎn)生時間minTime和最晚產(chǎn)生時間maxTime;5)計算minTime與maxTime的中間時刻點midTime;6)獲取midTime之前產(chǎn)生的記錄數(shù)據(jù)nc2;7)比較nc1與nc2,如果nc1大于nc2,那么將midTime賦值給minTime,然后轉(zhuǎn)5),否則轉(zhuǎn)8);8)繼續(xù)比較nc1與nc2,如果nc1小于nc2,則將midTime賦值給maxTime,然后轉(zhuǎn)5),否則轉(zhuǎn)9);9)刪除midTime前產(chǎn)生的記錄,結(jié)束。
本發(fā)明所述方法能夠有效地彌補現(xiàn)有技術(shù)存在的缺點首先保證數(shù)據(jù)被截斷以后仍然具有門限數(shù)目的歷史數(shù)據(jù),這是方法1與方法3所不及的,而且在處理效率上較逐條刪除數(shù)據(jù)的方法(方法2)也有了數(shù)量級上的提高,復雜度由線性級降低到對數(shù)級。經(jīng)過實踐也證明,該方法大大地提高了數(shù)據(jù)的繞接速度且安全可靠,具有很好的應用價值,能夠很好地滿足數(shù)據(jù)庫對于歷史數(shù)據(jù)的處理需求。顯著地提高了應用的歷史數(shù)據(jù)的繞接性能。例如如果某歷史數(shù)據(jù)門限設(shè)定值為a,經(jīng)檢測發(fā)現(xiàn)當前時刻超門限記錄數(shù)為b條,那么使用前述已有的循環(huán)刪除產(chǎn)生時間最早數(shù)據(jù)的方法要訪問數(shù)據(jù)庫達b次,當b比較大時,此方法效率就非常低,而采用本發(fā)明所述的折半查找截斷時間點的方法對數(shù)據(jù)庫查詢以確定時間點的次數(shù)上限是Log2(a+b),且經(jīng)過這種方式截斷數(shù)據(jù)以后能夠保證剩余的記錄數(shù)目與門限值相等,從而良好地滿足了應用的需求。
圖1是本發(fā)明所述方法的流程圖。
具體實施例方式
下面結(jié)合具體實施方式
對本發(fā)明所述方法做進一步說明。
在經(jīng)營活動中,某些歷史數(shù)據(jù)是隨著時間而不斷地動態(tài)增長的,對于這樣的數(shù)據(jù),本發(fā)明要實施更加有效的管理,以免數(shù)據(jù)量過大而成為應用處理上的效率瓶頸,甚至超出了設(shè)備空間使得新數(shù)據(jù)無法入庫從而影響業(yè)務的實施。
該方法的主要是對歷史數(shù)據(jù)定時進行越門限檢測,當檢測到數(shù)據(jù)超越門限時,即采用較優(yōu)化的策略對歷史數(shù)據(jù)實施繞接操作。該方法的應用前提是數(shù)據(jù)表中存在某個標識記錄間時間順序關(guān)系的字段(如果數(shù)據(jù)中沒有符合條件的字段,本發(fā)明可以增加一個記錄入庫時間字段加以標識而不會影響應用的實施)。該方法以數(shù)學上的二分法為理論依據(jù),它能夠快速地定位到截斷歷史數(shù)據(jù)的時間點,在該時間點后的記錄數(shù)與該歷史數(shù)據(jù)的記錄門限值相等。定期對歷史數(shù)據(jù)進行截斷時間點的定位并且刪除該點之前的數(shù)據(jù),就能夠保證歷史數(shù)據(jù)在增長過程中不會過多地超越記錄門限,控制記錄數(shù)目始終動態(tài)地保持在門限值附近。附圖1描述了該折半查找法的具體流程,下面針對附圖1對該方法的處理流程進行闡述10)首先獲取當前數(shù)據(jù)記錄的總數(shù)目;11)將當前記錄的總數(shù)目與設(shè)定的記錄門限值相比較,如果當前總記錄數(shù)小于門限值,那么等待一個單位時間(例如一個月,具體的周期根據(jù)應用的需要確定)后重新啟動步驟1);如果當前總記錄數(shù)大于門限值則轉(zhuǎn)向3)12)計算得到超越門限的記錄數(shù)目nc1;13)得到歷史數(shù)據(jù)的最早產(chǎn)生時間minTime和最晚產(chǎn)生時間maxTime;14)計算minTime與maxTime的中間時刻點midTime;15)獲取midTime之前產(chǎn)生的記錄數(shù)據(jù)nc2;16)比較nc1與nc2,如果ne1大于nc2,那么將midTime賦值給minTime,然后轉(zhuǎn)5),否則轉(zhuǎn)8);17)繼續(xù)比較nc1與nc2,如果nc1小于nc2,則將midTime賦值給maxTime,然后轉(zhuǎn)5),否則轉(zhuǎn)9);刪除midTime前產(chǎn)生的記錄,結(jié)束。
下面結(jié)合具體實施例對本發(fā)明做進一步描述,本例以通信行業(yè)的設(shè)備告警信息為應用背景,告警信息是在設(shè)備在運行中不斷產(chǎn)生的,信息量較大,如果不進行定期的截斷繞接操作,就會導致表空間過大而影響應用的處理效率。當然,在繞接操作前,本發(fā)明要對即將被截斷的數(shù)據(jù)進行備份操作,以免數(shù)據(jù)的丟失。
告警信息表中存儲了告警的基本信息,包含告警的來源點信息,檢測點信息,告警類型,告警嚴重性等級,告警產(chǎn)生時間,告警結(jié)束時間以及告警描述信息等。本發(fā)明是以體現(xiàn)告警順序的告警產(chǎn)生時間字段為依據(jù)來對告警信息進行繞接的。
首先,本發(fā)明要在應用中注冊一個定時器,該定時器的任務是定期檢測告警信息是否超越門限所設(shè)定值,如果是則執(zhí)行數(shù)據(jù)的繞接操作。在這里,本發(fā)明假設(shè)告警的門限設(shè)定值為30000,而當前一次的定時檢測結(jié)果是35000條,現(xiàn)在的工作是刪除最早產(chǎn)生的5000條告警信息。假定這35000條告警產(chǎn)生的最早時間是2004-03-10 00:00:00(代表2004年3月10日零時零分零秒),最晚產(chǎn)生為2004-03-22 00:00:00,那么根據(jù)函數(shù)計算出這這兩個時刻的中間值,即2004-03-16 00:00:00時刻之前產(chǎn)生的告警數(shù)目,如果該數(shù)目大于5000,則查找2004-03-10 00:00:00與2004-03-16 00:00:00的中間時刻,即2004-03-13 00:00:00時刻之前產(chǎn)生的告警數(shù)目;如果該數(shù)目小于5000,則查找2004-03-13 00:00:00與2004-03-16 00:00:00的中間時刻,即2004-03-14 12:00:00時刻之前產(chǎn)生的告警......,如此下去,直到根據(jù)當前的時間點能夠截斷的記錄數(shù)目為5000為止??梢宰C明,如此定位截斷時間點的數(shù)據(jù)庫訪問次數(shù)不會大于log25000,即71次,期望次數(shù)僅有35.5次,較傳統(tǒng)方法的5000次的數(shù)據(jù)庫訪問量相比,優(yōu)勢要明顯得多。而若采用傳統(tǒng)的刪除定長時間段的方法,如果數(shù)據(jù)在某段時間產(chǎn)生得較集中,則會導致截斷數(shù)據(jù)以后剩余的數(shù)據(jù)量遠遠小于30000的情況,不能夠較好地滿足應用的需求。
總之,本發(fā)明所述的歷史數(shù)據(jù)的繞接截斷方法具有明顯的效率上的優(yōu)勢以及廣泛的應用領(lǐng)域。特別適用于通訊及其相關(guān)行業(yè)應用中對于設(shè)備產(chǎn)生的告警、性能等歷史數(shù)據(jù)以及操作日志、安全日志等大數(shù)據(jù)量的處理,在數(shù)據(jù)的處理上不失為一種理想的方法。
權(quán)利要求
1.一種實現(xiàn)歷史數(shù)據(jù)繞接的方法,其特征在于,包括以下步驟1)獲取當前數(shù)據(jù)記錄的總數(shù)目;2)將當前記錄的總數(shù)目與設(shè)定的記錄門限值相比較,如果當前總記錄數(shù)小于門限值,那么等待一個單位時間后重新啟動步驟1);如果當前總記錄數(shù)大于門限值則轉(zhuǎn)向3)3)計算得到超越門限的記錄數(shù)目nc1;4)得到歷史數(shù)據(jù)的最早產(chǎn)生時間minTime和最晚產(chǎn)生時間maxTime;5)計算minTime與maxTime的中間時刻點midTime;6)獲取midTime之前產(chǎn)生的記錄數(shù)據(jù)nc2;7)比較nc1與nc2,如果nc1大于nc2,則將midTime賦值給minTime,然后轉(zhuǎn)5),否則轉(zhuǎn)8);8)繼續(xù)比較nc1與nc2,如果nc1小于nc2,則將midTime賦值給maxTime,然后轉(zhuǎn)5),否則轉(zhuǎn)9);9)刪除midTime前產(chǎn)生的記錄,結(jié)束。
2.根據(jù)權(quán)利要求1所述的實現(xiàn)歷史數(shù)據(jù)繞接的方法,其特征在于,所述步驟2)中單位時間的具體周期根據(jù)應用的需要確定。
全文摘要
本發(fā)明公開了一種計算機領(lǐng)域中的歷史數(shù)據(jù)繞接的方法,對歷史數(shù)據(jù)定時進行越門限檢測,當檢測到數(shù)據(jù)超越門限時,即采用較優(yōu)化的策略對歷史數(shù)據(jù)實施繞接操作。以數(shù)學上的二分法為理論依據(jù),快速定位到截斷歷史數(shù)據(jù)的時間點,在該時間點后的記錄數(shù)與該歷史數(shù)據(jù)的記錄門限值相等。并定期對歷史數(shù)據(jù)進行截斷時間點的定位,并且刪除該點之前的數(shù)據(jù),保證歷史數(shù)據(jù)在增長過程中不會過多地超越記錄門限,控制記錄數(shù)目始終動態(tài)地保持在門限值附近。本發(fā)明克服了現(xiàn)有技術(shù)存在的對歷史數(shù)據(jù)無法有效管理以及效率低下的缺點,能夠有效管理歷史數(shù)據(jù)、提高應用處理效率。
文檔編號G06F17/30GK1779677SQ20041009176
公開日2006年5月31日 申請日期2004年11月26日 優(yōu)先權(quán)日2004年11月26日
發(fā)明者李靜罡 申請人:中興通訊股份有限公司