本發(fā)明屬于數(shù)據(jù)庫數(shù)據(jù)處理技術領域,尤其涉及到一種數(shù)據(jù)導出系統(tǒng)及其工作方法。
背景技術:
傳統(tǒng)的導出工作模式是瀏覽器客戶端發(fā)送請求(request),服務器端根據(jù)請求進行業(yè)務數(shù)據(jù)處理然后返回響應(response),在這種模式中存在一個重大的缺陷,那就是客戶端需要等待服務端處理完成后才將導出文件返回,此時瀏覽器才能進行其他業(yè)務操作。為了獲取到導出文件數(shù)據(jù),用戶只能等待導出請求,基于這種方式,用戶的操作性大大的被降低了,且獲取數(shù)據(jù)的過程是有一定的性能消耗,對于多用戶高并發(fā)導出是無法接受的,在這種情況下,為了能讓用戶更好的操作體驗,降低導出性能消耗,相關的基于通信組件解決數(shù)據(jù)庫大量數(shù)據(jù)導出的技術便適應時代的需要而產(chǎn)生了。
服務器導出文件任務的實現(xiàn)基本原理如下:在瀏覽器客戶端請求導出任務后,服務器創(chuàng)建一個與業(yè)務相關的導出任務并放進一個隊列中,當服務器導出任務線程池有空閑時取出一個任務并分發(fā)給相關的業(yè)務進行計算、文件寫入操作,在服務器端導出處理過程中需要將狀態(tài)實時的推送到瀏覽器客戶端,客戶端解釋響應數(shù)據(jù)并展示在用戶界面上,當服務器端導出文件準備好后,客戶端的下載功能被激活,此時用戶可通過此功能直接下載文件。
在網(wǎng)管系統(tǒng)中,基于實時通信組件解決數(shù)據(jù)庫大量數(shù)據(jù)導出的技術,可以解決很多耗時較多的導出業(yè)務要求較高的應用場景,如資源導出,告警導出,性能導出等。
技術實現(xiàn)要素:
為解決上述問題,本發(fā)明提供了一種數(shù)據(jù)導出系統(tǒng),包括服務器端及與服務器端通信連接的各個客戶端。
各個客戶端運行有下載系統(tǒng),所述下載系統(tǒng)用于提供用戶操作界面,根據(jù)用戶所發(fā)出的數(shù)據(jù)導出請求顯示對應的任務,并在服務器端準備好數(shù)據(jù)導出文件后進行下載。
所述服務器端用于響應數(shù)據(jù)導出請求,進行數(shù)據(jù)導出文件的準備工作,并接受下載系統(tǒng)對數(shù)據(jù)導出文件的下載,其建立有數(shù)據(jù)導出請求隊列、導出線程池,還設置有請求接收單元、請求隊列管理單元、導出線程管理單元、導出請求拆分單元、子查詢單元、文件合并單元。
所述請求接收單元用于接收客戶端發(fā)送來的數(shù)據(jù)導出請求。
所述請求隊列管理單元用于根據(jù)數(shù)據(jù)導出請求,生成數(shù)據(jù)查詢語句,放入導出請求隊列。
所述導出線程管理單元用于控制導出線程池里的空閑線程獲取導出請求隊列中的導出請求對應的數(shù)據(jù)查詢語句。
所述導出請求拆分單元用于將導出線程獲取的數(shù)據(jù)查詢語句拆分為多個子查詢,分發(fā)給子查詢單元。
所述子查詢單元是根據(jù)導出請求拆分單元對數(shù)據(jù)查詢語句的拆分結(jié)果產(chǎn)生的,子查詢單元的個數(shù)與數(shù)據(jù)查詢語句被拆分個數(shù)相同,分別執(zhí)行對應的子查詢操作,并根據(jù)查詢結(jié)果生成導出文件。
所述文件合并單元用于在各個子查詢單元成功生成導出文件后將各個子查詢單元的導出文件進行合并,形成完整的數(shù)據(jù)導出文件。
進一步的,所述文件合并單元還將合并后的文件進行壓縮。
進一步的,所述服務器端和客戶端設置有匹配的實時通信組件,所述實時通信組件用于服務器將其對各個任務的執(zhí)行進度進度以消息的形式發(fā)送給下載系統(tǒng),并在下載系統(tǒng)的界面上將任務的執(zhí)行進度予以顯示。
進一步的,任務的執(zhí)行進度種類包括數(shù)據(jù)導出請求已接收和/或數(shù)據(jù)查詢語句已生成和/或數(shù)據(jù)查詢語句已導出和/或數(shù)據(jù)查詢語句已拆分和/或子查詢單元已生成和/或子查詢單元已查詢和/或子查詢單元導出文件已完成和/或?qū)С鑫募押喜⒑?或?qū)С鑫募蕚涑晒?或?qū)С鑫募蕚涫 ?/p>
進一步的,所述下載系統(tǒng)在服務器端導出文件準備成功后激活對應對應任務的下載功能
進一步的,所述下載系統(tǒng)在服務器端導出文件準備失敗后激活對應軟件對應任務的清除功能。
上述的數(shù)據(jù)導出系統(tǒng)的工作方法,其特征在于,包括如下步驟:
步驟一:客戶端向服務器端發(fā)出數(shù)據(jù)導出請求,下載系統(tǒng)創(chuàng)建該請求對應的任務并予以顯示。
步驟二:服務端的請求接收單元接收到瀏覽器的數(shù)據(jù)導出請求,請求隊列管理單元根據(jù)數(shù)據(jù)導出請求生成數(shù)據(jù)查詢語句,放入導出請求隊列。
步驟三:導出線程管理單元查看導出線程池中是否有空閑線程,如無則等待直到具有空閑線程,否則控制空閑線程獲取導出請求隊列中的導出請求。
步驟四:導出請求拆分單元根據(jù)導出數(shù)據(jù)量,將導出請求拆分為多個子查詢,系統(tǒng)根據(jù)子查詢數(shù)量建立對應的子查詢單元。
步驟五:各個子查詢單元執(zhí)行對應查詢操作,如果執(zhí)行成功,則生成導出文件,并執(zhí)行步驟六,否則不生成,并跳出本次工作流程。
步驟六:文件合并單元用于將各個子查詢單元的導出文件進行合并,形成完整的數(shù)據(jù)導出文件。
步驟七:用戶通過下載系統(tǒng)導出數(shù)據(jù)導出文件。
進一步的,步驟二至步驟六中,服務器端通過實時通信組件將各個任務對應的數(shù)據(jù)導出請求執(zhí)行進度以消息的形式發(fā)送給下載系統(tǒng),下載系統(tǒng)將任務執(zhí)行進度予以顯示。
進一步的,步驟二至步驟六中,下載系統(tǒng)顯示的任務執(zhí)行進度的種類包括數(shù)據(jù)導出請求已接收和/或數(shù)據(jù)查詢語句已生成和/或數(shù)據(jù)查詢語句已導出和/或數(shù)據(jù)查詢語句已拆分和/或子查詢單元已生成和/或子查詢單元已查詢和/或子查詢單元導出文件已完成和/或?qū)С鑫募押喜⒑?或?qū)С鑫募蕚涑晒Α?/p>
進一步的,在步驟五中,所述任務執(zhí)行進度的種類還包括導出文件準備失敗,如果存在子查詢單元沒有生成導出文件,則服務器端通過實時通信組件發(fā)送表示導出文件準備失敗的消息,用戶能夠通過下載系統(tǒng)清除相關任務。
本發(fā)明的有益效果為:
發(fā)明基于實時通信組件,且服務端采用異步處理方式,實現(xiàn)了數(shù)據(jù)庫大量數(shù)據(jù)導出的功能,采用這種結(jié)構的實現(xiàn)方式有效解決了數(shù)據(jù)庫大量數(shù)據(jù)導出的友好性、穩(wěn)定性,提升了系統(tǒng)并發(fā)處理的性能。當然,也可以適用于非大量數(shù)據(jù)導出的情況。
當在網(wǎng)管技術中運用該技術時,能實現(xiàn)對導出數(shù)據(jù)量較高的應用功能,如資源數(shù)據(jù)導出,告警數(shù)據(jù)導出,性能數(shù)據(jù)導出等,滿足了網(wǎng)管維護人員對導出任務及時響應、靈活操作、低延時的要求,提升了網(wǎng)絡維護質(zhì)量。
附圖說明
圖1為系統(tǒng)示意圖。
具體實施方式:
本發(fā)明的設計構思為:在客戶端發(fā)出數(shù)據(jù)導出請求后,服務器創(chuàng)建一個導出任務并放進一個隊列中,當服務器導出任務線程池有空閑時取出一個任務并分發(fā)給相關的業(yè)務進行計算、文件寫入操作,在服務器端導出處理過程中需要將狀態(tài)實時的推送到瀏覽器客戶端,客戶端解釋響應數(shù)據(jù)并展示在用戶界面上,當服務器端導出文件準備好后,客戶端的下載功能被激活,此時用戶可通過此功能直接下載文件。
下面對本發(fā)明所所述數(shù)據(jù)導出系統(tǒng)進行詳細說明。
如圖1所示,本發(fā)明所述系統(tǒng)包括服務器端及與服務器端通信連接的多個客戶端。
客戶端運行有下載系統(tǒng),所述下載系統(tǒng)用于提供用戶操作界面,根據(jù)用戶所發(fā)出的數(shù)據(jù)導出請求顯示對應的任務,并在服務器端準備好數(shù)據(jù)導出文件后根據(jù)用戶操作進行下載。
所述服務器端用于響應數(shù)據(jù)導出請求,進行數(shù)據(jù)導出文件的準備工作,并接受下載系統(tǒng)對數(shù)據(jù)導出文件的下載。建立了數(shù)據(jù)導出請求隊列、導出線程池,還設置有請求接收單元、請求隊列管理單元、導出線程管理單元、導出請求拆分單元、子查詢單元、文件合并單元,
所述請求接收單元用于接收客戶端發(fā)送來的數(shù)據(jù)導出請求;
所述請求隊列管理單元用于根據(jù)數(shù)據(jù)導出請求,生成數(shù)據(jù)查詢語句,放入導出請求隊列;
所述導出線程管理單元用于控制導出線程池里的空閑線程獲取導出請求隊列中的導出請求對應的數(shù)據(jù)查詢語句;
所述導出請求拆分單元用于將導出線程獲取的數(shù)據(jù)查詢語句拆分為多個子查詢,分發(fā)給子查詢單元;
所述子查詢單元是根據(jù)導出請求拆分單元對數(shù)據(jù)查詢語句的拆分結(jié)果產(chǎn)生,子查詢單元的產(chǎn)生個數(shù)與數(shù)據(jù)查詢語句被拆分個數(shù)有關,分別執(zhí)行對應的查詢操作,并根據(jù)查詢結(jié)果生成導出文件。導出文件一般是EXCEL文件
所述文件合并單元用于將各個子查詢單元的導出文件進行合并,并將合并后的文件導出。優(yōu)選的,文件合并單元將合并后的文件進行壓縮后導出。
服務器的功能單元設置有如下有益效果:
1.用戶通過瀏覽器發(fā)起的數(shù)據(jù)導出請求,統(tǒng)一放入導出請求隊列中進行導出文件處理,這種異步處理的方式,一方面用戶可不需要長時間停留在導出頁面,等待數(shù)據(jù)導出,可先進行系統(tǒng)其他功能的操作,等服務器完成數(shù)據(jù)導出后,會通知用戶導出完成,在下載系統(tǒng)的用戶操作界面中下載文件即可,提高用戶的操作體驗;另一方面解耦了導出請求的接收與數(shù)據(jù)導出處理之間的依賴關系,相互 之間不影響,提升系統(tǒng)健壯性。
2.使用線程池進行導出請求的并行處理,一是可提高導出處理效率,二是可根據(jù)系統(tǒng)資源情況進行擴展與調(diào)整,如果系統(tǒng)資源較空閑,可提高處理線程的數(shù)量,提高導出并發(fā)度,如果系統(tǒng)資源緊張,減少導出并發(fā)度,避免系統(tǒng)負載過高,出現(xiàn)異常。
3.服務器端組裝好文件后下載任務軟件內(nèi)對應任務的下載才被激活,在這期間,客戶端無需進行等待,可以進行其他系統(tǒng)操作。
優(yōu)選的,所述服務器端和客戶端設置有匹配的實時通信組件,所述實時通信組件用于服務器將其對各個任務的執(zhí)行進度進度以消息的形式發(fā)送給下載系統(tǒng),并在下載系統(tǒng)的界面上將任務的執(zhí)行進度予以顯示。顯示的進度種類包括:數(shù)據(jù)導出請求接收和/或數(shù)據(jù)查詢語句生成和/或數(shù)據(jù)查詢語句導出和/或數(shù)據(jù)查詢語句拆分和/或子查詢單元生成和/或子查詢單元查詢和/或子查詢單元導出文件完成和/或?qū)С鑫募喜⒑?或?qū)С鑫募嚎s和/或?qū)С鑫募蕚涑晒?或?qū)С鑫募蕚涫 ?/p>
本發(fā)明所述的實時通信組件限于現(xiàn)有技術中存在的、能實現(xiàn)服務器端能夠向客戶端發(fā)送消息的目的的通信組件,如SOCKET。
所述下載系統(tǒng)在用戶登錄后會自動加載用戶下載任務中最新的N條記錄。N為預先確定的整數(shù)。每個下載任務都設置有對應的進度顯示,服務器通過實時通信組件將任務執(zhí)行進度情況進行顯示。
服務器端在每個數(shù)據(jù)導出請求的文件準備成功或失敗之后,實時通信組件將記錄此任務的結(jié)束狀態(tài)并立即通知到客戶端下載系統(tǒng),如果導出文件準備成功,用戶就可下載,如果失敗則可清除該任務。當用戶清除下載系統(tǒng)的任務記錄時,實時通信組件會發(fā)起一條刪除任務的命令至服務器,服務收到此消息后會將此任務從數(shù)據(jù)庫中刪除掉,同時會通知客戶端刪除該記錄。
下載系統(tǒng)會以分頁列表的形式顯示各個任務,還會顯示各個任務的名稱、執(zhí)行時間、模塊類型(所述模塊類型包括設備網(wǎng)管系統(tǒng)中的資產(chǎn)、告警、性能等模塊),且操作人員可以配置任務記錄保持天數(shù),以及清除過時任務的周期(如一天)。
上述系統(tǒng)的工作方法包括如下步驟:
步驟一:客戶端向服務器端發(fā)出數(shù)據(jù)導出請求,下載系統(tǒng)創(chuàng)建該請求對應的任務并予以顯示。
一般來說,最新的任務會顯示在最新的位置上。
步驟二:服務端的請求接收單元接收到瀏覽器的數(shù)據(jù)導出請求,請求隊列管理單元根據(jù)數(shù)據(jù)導出請求生成數(shù)據(jù)查詢語句,放入導出請求隊列。
步驟三:導出線程管理單元查看導出線程池中是否有空閑線程,如無則等待直到具有空閑線程,否則控制空閑線程獲取導出請求隊列中的導出請求。
步驟四:導出請求拆分單元根據(jù)導出數(shù)據(jù)量,將導出請求拆分為多個子查詢,系統(tǒng)根據(jù)子查詢數(shù)量建立對應的子查詢單元。
步驟五:各個子查詢單元執(zhí)行對應查詢操作,如果執(zhí)行成功,則生成導出文件,并執(zhí)行步驟六,否則不生成,并跳出本次工作流程。
任一子查詢單元沒有生成導出文件都會導致導出文件準備失敗,服務器通過實時通信組件發(fā)送消息,使得對應任務顯示導出文件準備失敗的進度,此時,下載系統(tǒng)內(nèi)對應任務的清除功能被激活,用戶能夠通過下載系統(tǒng)清除相關任務。在用戶點擊下載任務記錄的“清除”按鈕后,實時通信組件組件將發(fā)起一條刪除任務的命令至服務器,服務收到此消息后會將此任務從數(shù)據(jù)庫中刪除掉,同時會通知客戶端刪除該記錄。
步驟六:文件合并單元用于將各個子查詢單元的導出文件進行合并,形成完整的數(shù)據(jù)導出文件。優(yōu)選的,合并后還會進行壓縮。
步驟七:用戶通過下載系統(tǒng)導出數(shù)據(jù)導出文件。
步驟二至步驟六中,下載系統(tǒng)顯示任務執(zhí)行進度。