一種用于實時數據庫查詢結果快速排序的方法
【專利摘要】一種用于實時庫查詢結果快速排序的方法,首先從用于變電站監控系統的實時數據庫獲取查詢結果集;把這個查詢結果集中用于排序的字段按順序填入預先定義的數據結構;以數據結構為鍵,結果集中每條記錄的順序號為值,形成map的一個數據項;查詢結果集處理完畢,全部存放到map中;從map中按順序取出查詢結果集中每條記錄的順序號,找到查詢結果集中的對應記錄;從map中取出記錄對應的順序號的次序,就是該記錄在本次查詢結果集中的排序位置。本發明解決現有實時數據庫查詢結果排序速度慢和效率低下,以CPU占用過高、算法復雜容易出錯的問題,和系統采集到的數據不能及時顯示到監控界面上、重要告警無法及時展示給變電站運行人員等嚴重問題。
【專利說明】一種用于實時數據庫查詢結果快速排序的方法
【技術領域】
[0001]本發明屬于電力系統中變電站監控領域,尤其涉及的是一種用于實時數據庫查詢結果快速排序的方法。
【背景技術】
[0002]在現代化的社會中,電力系統是保障國民經濟正常運行的重要基礎設施,電力系統的大面積停電故障將直接對人民生活、國民經濟產生直接的重大影響。變電站監控系統(變電站的數據采集與監控SCADA)是電力系統的重要組成部分,是對電力系統進行分析、監控的重要手段。尤其是隨著計算機技術、通訊技術、自動化水平的不斷提高,變電站自動化系統對電力系統安全、穩定、經濟運行的重要性越來明顯。
[0003]在現有變電站監控系統中,關鍵設備、關鍵節點的計算機必須配置很大的內存來滿足實時數據庫的需要,而實時數據庫本身就是電力系統中各種監控軟件普遍采用的數據存儲方式。
[0004]對數據庫查詢結果的排序,是實時數據庫應用中最常見的處理。常用的關系數據庫系統(Oracle、MySQL等),對本身查詢結果都能夠實現非常方便、快捷地按照各種組合條件進行排序運算。然而,實時數據庫對本身查詢結果的排序運算卻沒有提供像關系數據庫一樣方便快捷的算法。對實時數據查詢結果排序常用的方法有冒泡法,冒泡法對多字段查詢結果排序時存在算法復雜、容易出錯的問題,尤其嚴重的是冒泡法需要數據高強度運算,對CPU占用很高。舉例說明,一個有2萬條記錄的查詢結果集,需要對其中的3個整型數據字段和2個字符型字段進行排序運算,其整個排序過程將持續10多分鐘時間。整個排序過程對CPU占用過高,使其它應用程序無法得到CPU的及時處理,導致采集到的數據不能及時顯示到監控界面上,以及重要告警無法及時展示給變電站運行人員等嚴重問題。
[0005]本發明提出采用一種用于實時數據庫查詢結果快速排序的方法處理實施對實時數據庫查詢結果進行排序運算,該方法與之前方法有著本質的區別,在目前已公開的各種文獻中沒有檢索到類似的方法。
【發明內容】
[0006]本發明的目的在于克服實時數據庫查詢結果排序算法復雜且容易出錯的問題,數字化變電站、智能變電站等變電站監控系統的實時數據庫對大結果集進行排序運算時,使用傳統處理方法使系統CPU占用高,從而使其它重要應用程序無法得到及時處理,導致系統采集到的數據不能及時顯示到界面上,以及重要告警無法及時展示給變電站運行人員等嚴重問題。為此,本發明提供了一種用于實時數據庫查詢結果快速排序的方法。
[0007]本發明解決其技術問題是采取以下技術方案實現的:
[0008]一種用于實時數據庫查詢結果快速排序的方法,其特征在于,所述快速排序的方法將實時數據庫的任意查詢結果集,經過快速排序運算,形成一個滿足排序規則要求的新結果集。該方法的包括以下步驟:[0009](I)、從用于電力系統廠站端監控系統的實時數據庫獲取查詢結果集;
[0010](2)、把查詢結果集中每條記錄的用于排序的字段按順序填入預先定義的數據結構中;
[0011](3)、以填好的數據結構為主鍵,查詢結果集中每條記錄的順序號為值,形成map的一個數據項;
[0012](4)、循環執行步驟(2)至步驟(3),直到全部查詢結果集處理結束;
[0013](5)、從map中按順序取出查詢結果集中每條記錄的順序號;
[0014](6)、根據記錄的順序號,取出查詢結果集中對應記錄;
[0015](7)、循壞執行步驟(5)至步驟(6),完成查詢結果集的排序過程。
[0016]本發明還進一步包括以下優選技術方案。
[0017]優選所述步驟(I)的從用于電力系統廠站端監控系統的實時數據庫獲取查詢結果集的方法為:按照電力監控系統中變電站監控系統的實時數據庫查詢方法,從實時數據庫獲取查詢結果集。
[0018]優選所述步驟(2)的把查詢結果集中用于排序的字段按順序填入事先定義的數據結構中的方法為:對步驟(I)得到查詢結果進行處理,按照需要排序的字段次序,把查詢結果集中每條記錄的對應字段數據填寫到預先定義的數據結構中。
[0019]優選在所述步驟(3)中,以這個數據結構為主鍵把查詢結果集中每條記錄的順序號為值來形成map的一個數據項的方法為:為查詢結果集中的每條記錄編一個順序號,這個順序號唯一對應結果集中的一條記錄;以步驟(2)填好數據的數據結構為主鍵,記錄的唯一順序號為值,形成map的一個數據項,填到map中。
[0020]優選在所述步驟(4 )中,循環執行步驟(2 )至步驟(3 )直到全部查詢結果集處理結束的方法為:把實時數據庫的查詢結果集中所有記錄,都按照步驟(2)至步驟(3)的處理方法,全部填到map中。
[0021]所述步驟(5)中,從map中按順序取出查詢結果集中每條記錄的順序號的方法為:從map中按次序取出查詢結果集中每條記錄的順序號,從map中的取出次序就是按照排序字段要求在查詢結果集中的排序位置。
[0022]在所述步驟(6)中,根據該記錄的順序號取出查詢結果集中對應記錄的方法為:由于記錄的順序號與結果集中的記錄是一一對應的,故根據這個順序號就找到查詢結果集中對應的記錄。
[0023]所述步驟(7)的完成查詢結果集的排序過程的方法為:從map中依次取出記錄的順序號,取出的次序就是該記錄在結果集中的排序位置,順序號能夠找到對應記錄,這樣就得到一條記錄在查詢結果集中的排序結果;循環取出map中所有記錄的順序號和順序號對應的查詢結果集中的記錄,就形成了新的經過排序運算后的實時數據庫的查詢結果集。
[0024]本發明的優點及積極效果是:
[0025]本發明提出了采用用于實時數據庫查詢結果快速排序的方法,具有如下優點和積極效果:
[0026](I)大大縮短實時數據庫查詢結果排序時間。使用傳統方法對查詢結果進行排序,對一個有2萬條記錄的結果集,并其中3個整型數據字段和2個字符型字段進行排序,整個排序過程將持續10多分鐘時間;采用用于實時數據庫查詢結果快速排序的方法后,對相同結果集進行排序時間僅為10多秒鐘。為其它重要應用提供
[0027](2)大大簡化排序算法的復雜度。只需設計幾種數據結構,并定義對應的map類型即可實現對查詢結果集的排序運算。
【專利附圖】
【附圖說明】
[0028]圖1是本發明用于實時數據庫查詢結果快速排序的處理流程圖。
【具體實施方式】
[0029]以下結合具體實施例對本發明方法做詳細說明:
[0030]本發明涉及的是一種用于實時數據庫查詢結果快速排序的方法,對實時數據庫查詢結果排序進行處理,如圖1所示,其具體方法步驟如下:
[0031]1、從用于電力系統廠站端監控系統的實時數據庫獲取查詢結果集
[0032]所述步驟I的從用于電力系統廠站端監控系統的實時數據庫獲取查詢結果集的方法為:按照電力監控系統中變電站監控系統的實時數據庫查詢方法,從實時數據庫獲取查詢結果集。
[0033]2、把查詢結果集中用于排序的字段按順序填入事先定義的數據結構中
[0034]所述步驟2的把查詢結果集中用于排序的字段按順序填入事先定義的數據結構中的方法為:對步驟I得到查詢結果進行處理,按照需要排序的字段次序,把查詢結果集中每條記錄的對應字段數據填寫到預先定義的數據結構中。
[0035]3、以這個數據結構為主鍵把查詢結果集中每條記錄的順序號為值來形成map的一個數據項
[0036]所述步驟3的以這個數據結構為主鍵把查詢結果集中每條記錄的順序號為值來形成map的一個數據項的方法為:為查詢結果集中的每條記錄編一個順序號,這個順序號唯一對應結果集中的一條記錄;以步驟2填好數據的數據結構為鍵,記錄的唯一順序號為值,形成map的一個數據項,填到map中。
[0037]4、循環執行步驟2至步驟3直到全部查詢結果集處理結束
[0038]所述步驟4的循環執行步驟2至步驟3直到全部查詢結果集處理結束的方法為:把實時數據庫的查詢結果集中所有記錄,都按照步驟2至步驟3的處理方法,全部填到map中。
[0039]5、從map中按順序取出查詢結果集中每條記錄的順序號
[0040]所述步驟5的從map中按順序取出查詢結果集中每條記錄的順序號的方法為:從map中按次序取出查詢結果集中每條記錄的順序號,從map中的取出次序就是按照排序字段要求在查詢結果集中的排序位置。
[0041]6、根據該記錄的順序號取出查詢結果集中對應記錄
[0042]所述步驟6的根據該記錄的順序號取出查詢結果集中對應記錄的方法為:由于記錄的順序號與結果集中的記錄是一一對應的,故根據這個順序號就找到查詢結果集中對應的記錄。
[0043]7、循壞執行步驟5至步驟6完成查詢結果集的排序過程
[0044]所述步驟7的循壞執行步驟5至步驟6完成查詢結果集的排序過程的方法為:從map中依次取出記錄的順序號,取出的次序就是該記錄在結果集中的排序位置,順序號能夠找到對應記錄,這樣就得到一條記錄在查詢結果集中的排序結果;循環取出map中所有記錄的順序號和順序號對應的查詢結果集中的記錄,就形成了新的經過排序運算后的實時數據庫的查詢結果集。
【權利要求】
1.一種用于實時數據庫查詢結果快速排序的方法,其特征在于,所述快速排序的方法將實時數據庫的任意查詢結果集,經過快速排序運算,形成一個滿足排序規則要求的新結果集。
2.根據權利要求1所述的用于實時數據庫查詢結果快速排序的方法,其特征在于,該方法的包括以下步驟: (1)、從用于電力系統廠站端監控系統的實時數據庫獲取查詢結果集; (2)、把查詢結果集中每條記錄的用于排序的字段按順序填入預先定義的數據結構中; (3)、以填好的數據結構為主鍵,查詢結果集中每條記錄的順序號為值,形成map的一個數據項; (4)、循環執行步驟(2)至步驟(3),直到全部查詢結果集處理結束; (5)、從map中按順序取出查詢結果集中每條記錄的順序號; (6)、根據記錄的順序號,取出查詢結果集中對應記錄; (7)、循壞執行步驟(5)至步驟(6),完成查詢結果集的排序過程。
【文檔編號】G06F17/30GK103646102SQ201310717023
【公開日】2014年3月19日 申請日期:2013年12月23日 優先權日:2013年12月23日
【發明者】姜闿笈, 余斌, 葛亮, 王立鼎, 房萍, 王申強, 潘合玉, 閆振義 申請人:北京四方繼保自動化股份有限公司