本申請涉及通信領域,特別涉及一種數(shù)據(jù)查詢方法、裝置及系統(tǒng)。
背景技術:
在SCADA(Supervisory Control And Data Acquisition,數(shù)據(jù)采集與監(jiān)視控制)系統(tǒng)中,下位機(如采集器或設備等)的部署范圍通常比較廣,導致上位機的數(shù)據(jù)庫與下位機的通信容易中斷,在上位機的數(shù)據(jù)庫與下位機的通信中斷后,下位機中的數(shù)據(jù)無法上傳到上位機的數(shù)據(jù)庫中,導致上位機的數(shù)據(jù)庫中存儲的下位機的歷史數(shù)據(jù)不完整,進而影響后期查詢下位機歷史數(shù)據(jù)的準確性。
技術實現(xiàn)要素:
為解決上述技術問題,本申請實施例提供一種數(shù)據(jù)查詢方法、裝置及系統(tǒng),以達到提高查詢的準確性的目的,技術方案如下:
一種數(shù)據(jù)查詢方法,包括:
查詢原歷史庫中是否存在目標設備在預設時間段內(nèi)的歷史數(shù)據(jù);
若所述原歷史庫中存在所述目標設備在所述預設時間段內(nèi)的全部歷史數(shù)據(jù),則從所述原歷史庫中獲取所述目標設備在所述預設時間段內(nèi)的全部歷史數(shù)據(jù);
若所述原歷史庫中存在所述目標設備在第一子時間段內(nèi)的歷史數(shù)據(jù),則從所述原歷史庫中獲取所述目標設備在所述第一子時間段內(nèi)的歷史數(shù)據(jù),所述第一子時間段為所述預設時間段內(nèi)的一個時間段,且第一子時間段小于所述預設時間段;
查詢補點歷史庫中是否存在所述目標設備在第二子時間段內(nèi)的歷史數(shù)據(jù),得到查詢結(jié)果,所述第二子時間段小于所述預設時間段,且所述第一子時間段和所述第二子時間段之和等于所述預設時間段;
獲取所述查詢結(jié)果對應的歷史數(shù)據(jù);
將所述目標設備在所述第一子時間段內(nèi)的歷史數(shù)據(jù)和所述查詢結(jié)果對應的歷史數(shù)據(jù)合并,得到所述目標設備在所述預設時間段內(nèi)的全部歷史數(shù)據(jù)。
優(yōu)選的,獲取所述查詢結(jié)果對應的歷史數(shù)據(jù),包括:
在所述查詢結(jié)果為所述補點歷史庫中存在所述目標設備在所述第二子時間段內(nèi)的全部歷史數(shù)據(jù)的情況下,從所述補點歷史庫中獲取所述目標設備在所述第二子時間段內(nèi)的全部歷史數(shù)據(jù)。
優(yōu)選的,獲取所述查詢結(jié)果對應的歷史數(shù)據(jù),包括:
在所述查詢結(jié)果為所述補點歷史庫中存在所述目標設備在第三子時間段內(nèi)的歷史數(shù)據(jù)的情況下,從所述補點歷史庫中獲取所述目標設備在所述第三子時間段內(nèi)的全部歷史數(shù)據(jù);
所述第三子時間段為所述第二子時間段中的一個時間段,且所述第三子時間段小于所述第二子時間段。
優(yōu)選的,所述方法還包括:
確定所述目標設備在第四子時間段的各個時間點各自的歷史數(shù)據(jù)為所述目標設備在所述第三子時間段的最后一個時刻的歷史數(shù)據(jù),得到所述目標設備在所述第四子時間段的歷史數(shù)據(jù);
所述第四子時間段為所述第二子時間段中的一個時間段,且所述第四子時間段小于所述第二子時間段,且所述第四子時間段的起始時刻為所述第三子時間段的最后一個時刻;
將所獲取到的所述目標設備在所述第三子時間段內(nèi)的全部歷史數(shù)據(jù)和所述目標設備在所述第四子時間段的歷史數(shù)據(jù)合并,得到合并后的歷史數(shù)據(jù)。
優(yōu)選的,獲取所述查詢結(jié)果對應的歷史數(shù)據(jù),包括:
在所述查詢結(jié)果為所述補點歷史庫中存在所述目標設備在預設時刻的歷史數(shù)據(jù)的情況下,從所述補點歷史庫中獲取所述目標設備在所述預設時刻的歷史數(shù)據(jù),所述預設時刻為所述第二子時間段中的某一個時刻;
確定所述目標設備在第五子時間段內(nèi)各個時間點的歷史數(shù)據(jù)為所述目標設備在所述預設時刻的歷史數(shù)據(jù),得到所述目標設備在所述第五子時間段內(nèi)的歷史數(shù)據(jù);
所述第五子時間段為從所述預設時刻至所述第二子時間段的最后一個時刻的時間段。
優(yōu)選的,所述補點歷史庫中歷史數(shù)據(jù)的存儲過程,包括:
實時數(shù)據(jù)庫服務器向指定設備發(fā)送通信斷開期間的歷史數(shù)據(jù)采集請求;
所述實時數(shù)據(jù)庫服務器接收所述指定設備發(fā)送的所述通信斷開期間的歷史數(shù)據(jù);
所述實時數(shù)據(jù)庫服務器將所述指定設備發(fā)送的所述通信斷開期間的歷史數(shù)據(jù)發(fā)送至所述補點歷史庫服務器;
所述補點歷史庫服務器將所述指定設備發(fā)送的所述通信斷開期間的歷史數(shù)據(jù)存儲至所述補點歷史庫。
一種數(shù)據(jù)查詢裝置,包括:
第一查詢模塊,用于查詢原歷史庫中是否存在目標設備在預設時間段內(nèi)的歷史數(shù)據(jù),若所述原歷史庫中存在所述目標設備在所述預設時間段內(nèi)的全部歷史數(shù)據(jù),則執(zhí)行第一獲取模塊,若所述原歷史庫中存在所述目標設備在第一子時間段內(nèi)的歷史數(shù)據(jù),則執(zhí)行第二獲取模塊,所述第一子時間段為所述預設時間段內(nèi)的一個時間段,且第一子時間段小于所述預設時間段;
所述第一獲取模塊,用于從所述原歷史庫中獲取所述目標設備在所述預設時間段內(nèi)的全部歷史數(shù)據(jù);
所述第二獲取模塊,用于從所述原歷史庫中獲取所述目標設備在所述第一子時間段內(nèi)的歷史數(shù)據(jù);
第二查詢模塊,用于查詢補點歷史庫中是否存在所述目標設備在第二子時間段內(nèi)的歷史數(shù)據(jù),得到查詢結(jié)果,所述第二子時間段小于所述預設時間段,且所述第一子時間段和所述第二子時間段之和等于所述預設時間段;
第三獲取模塊,用于獲取所述查詢結(jié)果對應的歷史數(shù)據(jù);
合并模塊,用于將所述目標設備在所述第一子時間段內(nèi)的歷史數(shù)據(jù)和所述查詢結(jié)果對應的歷史數(shù)據(jù)合并,得到所述目標設備在所述預設時間段內(nèi)的全部歷史數(shù)據(jù)。
優(yōu)選的,所述第三獲取模塊包括:
第一獲取單元,用于在所述查詢結(jié)果為所述補點歷史庫中存在所述目標設備在所述第二子時間段內(nèi)的全部歷史數(shù)據(jù)的情況下,從所述補點歷史庫中獲取所述目標設備在所述第二子時間段內(nèi)的全部歷史數(shù)據(jù)。
優(yōu)選的,所述第三獲取模塊包括:
第二獲取單元,用于在所述查詢結(jié)果為所述補點歷史庫中存在所述目標設備在第三子時間段內(nèi)的歷史數(shù)據(jù)的情況下,從所述補點歷史庫中獲取所述目標設備在所述第三子時間段內(nèi)的全部歷史數(shù)據(jù);
所述第三子時間段為所述第二子時間段中的一個時間段,且所述第三子時間段小于所述第二子時間段。
優(yōu)選的,所述第三獲取模塊還包括:
第一確定單元,用于確定所述目標設備在第四子時間段的各個時間點各自的歷史數(shù)據(jù)為所述目標設備在所述第三子時間段的最后一個時刻的歷史數(shù)據(jù),得到所述目標設備在所述第四子時間段的歷史數(shù)據(jù);
所述第四子時間段為所述第二子時間段中的一個時間段,且所述第四子時間段小于所述第二子時間段,且所述第四子時間段的起始時刻為所述第三子時間段的最后一個時刻;
合并單元,用于將所獲取到的所述目標設備在所述第三子時間段內(nèi)的全部歷史數(shù)據(jù)和所述目標設備在所述第四子時間段的歷史數(shù)據(jù)合并,得到合并后的歷史數(shù)據(jù)。
優(yōu)選的,所述第三獲取模塊包括:
第三獲取單元,用于在所述查詢結(jié)果為所述補點歷史庫中存在所述目標設備在預設時刻的歷史數(shù)據(jù)的情況下,從所述補點歷史庫中獲取所述目標設備在所述預設時刻的歷史數(shù)據(jù),所述預設時刻為所述第二子時間段中的某一個時刻;
第二確定單元,用于確定所述目標設備在第五子時間段內(nèi)各個時間點的歷史數(shù)據(jù)為所述目標設備在所述預設時刻的歷史數(shù)據(jù),得到所述目標設備在所述第五子時間段內(nèi)的歷史數(shù)據(jù);
所述第五子時間段為從所述預設時刻至所述第二子時間段的最后一個時刻的時間段。
一種數(shù)據(jù)查詢系統(tǒng),包括:實時數(shù)據(jù)庫服務器、補點歷史庫服務器和如上述任意一項所述的裝置;
所述實時數(shù)據(jù)庫服務器,用于向指定設備發(fā)送通信斷開期間的歷史數(shù)據(jù)采集請求,并接收所述指定設備發(fā)送的所述通信斷開期間的歷史數(shù)據(jù),并將所述指定設備發(fā)送的所述通信斷開期間的歷史數(shù)據(jù)發(fā)送至所述補點歷史庫服務器;
所述補點歷史庫服務器,用于將所述指定設備發(fā)送的所述通信斷開期間的歷史數(shù)據(jù)存儲至補點歷史庫。
與現(xiàn)有技術相比,本申請的有益效果為:
在本申請中,首先查詢原歷史庫中是否存在目標設備在預設時間段內(nèi)的歷史數(shù)據(jù),若原歷史庫中存在所述目標設備在預設時間段內(nèi)的全部歷史數(shù)據(jù),則從原歷史庫中獲取所述目標設備在預設時間段內(nèi)的全部歷史數(shù)據(jù);若原歷史庫中存在目標設備在預設時間段內(nèi)的部分歷史數(shù)據(jù)即原歷史庫中存在目標設備在第一子時間段內(nèi)的歷史數(shù)據(jù),則從原歷史庫中獲取目標設備在第一子時間段內(nèi)的歷史數(shù)據(jù),并在補點歷史庫中查詢在原歷史庫中未查找到的歷史數(shù)據(jù)即查詢補點歷史庫中是否存在目標設備在第二子時間段內(nèi)的歷史數(shù)據(jù),得到查詢結(jié)果,獲取查詢結(jié)果對應的歷史數(shù)據(jù),將目標設備在所述第一子時間段內(nèi)的歷史數(shù)據(jù)和查詢結(jié)果對應的歷史數(shù)據(jù)合并,得到目標設備在預設時間段內(nèi)的全部歷史數(shù)據(jù)。
補點歷史庫作為原歷史庫的補充,保證上位機存儲目標設備的完整歷史數(shù)據(jù),從而保證進行歷史數(shù)據(jù)查詢時,能夠依據(jù)原歷史庫和補點歷史庫查詢到完整的歷史數(shù)據(jù),提高了查詢的準確性。
附圖說明
為了更清楚地說明本申請實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本申請?zhí)峁┑臄?shù)據(jù)查詢方法的一種流程圖;
圖2是本申請?zhí)峁┑臄?shù)據(jù)查詢方法的一種時序圖;
圖3是本申請?zhí)峁┑臄?shù)據(jù)查詢方法的另一種時序圖;
圖4是本申請?zhí)峁┑臄?shù)據(jù)查詢方法的再一種時序圖;
圖5是本申請?zhí)峁┑臄?shù)據(jù)查詢方法的再一種時序圖;
圖6是本申請?zhí)峁┑难a點歷史庫中歷史數(shù)據(jù)的存儲過程的一種流程圖;
圖7是本申請?zhí)峁┑臍v史數(shù)據(jù)存儲的一種時序圖;
圖8是本申請?zhí)峁┑臄?shù)據(jù)查詢裝置的一種邏輯結(jié)構(gòu)示意圖;
圖9是本申請?zhí)峁┑臄?shù)據(jù)查詢系統(tǒng)的一種邏輯結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├?,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
實施例一
在本實施例中,提供了一種數(shù)據(jù)查詢方法,應用于查詢服務器。
請參見圖1,其示出了本申請?zhí)峁┑臄?shù)據(jù)查詢方法的一種流程圖,可以包括以下步驟:
步驟S11:查詢原歷史庫中是否存在目標設備在預設時間段內(nèi)的歷史數(shù)據(jù)。
在本實施例中,原歷史庫用于存儲下位機在上位機與下位機通信正常期間的歷史數(shù)據(jù)。若上位機與下位機通信中斷,則原歷史庫中存儲的下位機的歷史數(shù)據(jù)將不完整。
若所述原歷史庫中存在所述目標設備在所述預設時間段內(nèi)的全部歷史數(shù)據(jù),則執(zhí)行步驟S12;若所述原歷史庫中存在所述目標設備在第一子時間段內(nèi)的歷史數(shù)據(jù),說明原歷史庫中存在目標設備在預設時間段內(nèi)的部分歷史數(shù)據(jù),則執(zhí)行步驟S13。
其中,第一子時間段為所述預設時間段內(nèi)的一個時間段,且第一子時間段小于所述預設時間段。
現(xiàn)舉例對預設時間段和第一子時間段進行說明,例如預設時間段為T1~T4,第一子時間段為T1~T2和T3~T4。在第一子時間段為T1~T2和T3~T4時,說明原歷史庫中不存在目標設備在T2~T3期間的歷史數(shù)據(jù)。
在本實施例中,查詢原歷史庫中是否存在目標設備在預設時間段內(nèi)的歷史數(shù)據(jù)的步驟可以由歷史查詢客戶端觸發(fā)。相應的,查詢的結(jié)果可以直接在查詢服務器上進行展示,或返回至歷史查詢客戶端。
步驟S12:從所述原歷史庫中獲取所述目標設備在所述預設時間段內(nèi)的全部歷史數(shù)據(jù)。
以預設時間段為T1~T4為例,步驟S11至步驟S12的時序圖可以參見圖2,圖2中的指定位號即指目標設備。
步驟S13:從所述原歷史庫中獲取所述目標設備在所述第一子時間段內(nèi)的歷史數(shù)據(jù)。
為了查詢到目標設備在預設時間段內(nèi)完整的歷史數(shù)據(jù),需要繼續(xù)在補點歷史庫中查詢在原歷史庫中未查詢到的歷史數(shù)據(jù),具體執(zhí)行步驟S14。
補點歷史庫,用于存儲下位機在上位機與下位機通信斷開期間的歷史數(shù)據(jù)。
步驟S14:查詢補點歷史庫中是否存在所述目標設備在第二子時間段內(nèi)的歷史數(shù)據(jù),得到查詢結(jié)果。
所述第二子時間段小于所述預設時間段,且所述第一子時間段和所述第二子時間段之和等于所述預設時間段。
在本實施例中,補點歷史庫中可能存在目標設備在第二子時間段內(nèi)的全部歷史數(shù)據(jù);或者,補點歷史庫中不存在目標設備在第二子時間段內(nèi)的歷史數(shù)據(jù);或者,補點歷史庫中存在目標設備在第二子時間段內(nèi)的部分歷史數(shù)據(jù)。
以預設時間段為T1~T4,第一子時間段為T1~T2和T3~T4為例,第二子時間段則為T2~T3。
步驟S15:獲取所述查詢結(jié)果對應的歷史數(shù)據(jù)。
在補點歷史庫中存在目標設備在第二子時間段內(nèi)的全部歷史數(shù)據(jù)時,獲取所述查詢結(jié)果對應的歷史數(shù)據(jù)具體為:從補點歷史庫中獲取目標設備在第二子時間段內(nèi)的全部歷史數(shù)據(jù)。
在補點歷史庫中不存在目標設備在第二子時間段內(nèi)的歷史數(shù)據(jù)時,獲取所述查詢結(jié)果對應的歷史數(shù)據(jù)具體為:獲取空的歷史數(shù)據(jù)集合。
在補點歷史庫中存在目標設備在第二子時間段內(nèi)的部分歷史數(shù)據(jù)時,獲取所述查詢結(jié)果對應的歷史數(shù)據(jù)具體為:從補點歷史庫中獲取目標設備在第二子時間段內(nèi)的部分歷史數(shù)據(jù)。
步驟S16:將所述目標設備在所述第一子時間段內(nèi)的歷史數(shù)據(jù)和所述查詢結(jié)果對應的歷史數(shù)據(jù)合并,得到所述目標設備在所述預設時間段內(nèi)的全部歷史數(shù)據(jù)。
在獲取所述查詢結(jié)果對應的歷史數(shù)據(jù)具體為:從補點歷史庫中獲取目標設備在第二子時間段內(nèi)的全部歷史數(shù)據(jù)時,將所述目標設備在所述第一子時間段內(nèi)的歷史數(shù)據(jù)和所述查詢結(jié)果對應的歷史數(shù)據(jù)合并具體為:將所述目標設備在所述第一時間段內(nèi)的歷史數(shù)據(jù)和從補點歷史庫中獲取到的目標設備在第二子時間段內(nèi)的全部歷史數(shù)據(jù)合并。
在獲取所述查詢結(jié)果對應的歷史數(shù)據(jù)具體為:獲取空的歷史數(shù)據(jù)集合時,將所述目標設備在所述第一子時間段內(nèi)的歷史數(shù)據(jù)和所述查詢結(jié)果對應的歷史數(shù)據(jù)合并具體為:將所述目標設備在所述第一子時間段內(nèi)的歷史數(shù)據(jù)和空的歷史數(shù)據(jù)集合合并。得到的目標設備在所述預設時間段內(nèi)的全部歷史數(shù)據(jù)即目標設備在第一時間段內(nèi)的歷史數(shù)據(jù)。
在獲取所述查詢結(jié)果對應的歷史數(shù)據(jù)具體為:從補點歷史庫中獲取目標設備在第二子時間段內(nèi)的部分歷史數(shù)據(jù)時,將所述目標設備在所述第一子時間段內(nèi)的歷史數(shù)據(jù)和所述查詢結(jié)果對應的歷史數(shù)據(jù)合并具體為:將所述目標設備在所述第一子時間段內(nèi)的歷史數(shù)據(jù)和從補點歷史庫中獲取到的目標設備在第二子時間段內(nèi)的部分歷史數(shù)據(jù)合并。
在本申請中,首先查詢原歷史庫中是否存在目標設備在預設時間段內(nèi)的歷史數(shù)據(jù),若原歷史庫中存在所述目標設備在預設時間段內(nèi)的全部歷史數(shù)據(jù),則從原歷史庫中獲取所述目標設備在預設時間段內(nèi)的全部歷史數(shù)據(jù);若原歷史庫中存在目標設備在預設時間段內(nèi)的部分歷史數(shù)據(jù)即原歷史庫中存在目標設備在第一子時間段內(nèi)的歷史數(shù)據(jù),則從原歷史庫中獲取目標設備在第一子時間段內(nèi)的歷史數(shù)據(jù),并在補點歷史庫中查詢在原歷史庫中未查找到的歷史數(shù)據(jù)即查詢補點歷史庫中是否存在目標設備在第二子時間段內(nèi)的歷史數(shù)據(jù),得到查詢結(jié)果,獲取查詢結(jié)果對應的歷史數(shù)據(jù),將目標設備在所述第一子時間段內(nèi)的歷史數(shù)據(jù)和查詢結(jié)果對應的歷史數(shù)據(jù)合并,得到目標設備在預設時間段內(nèi)的全部歷史數(shù)據(jù)。
補點歷史庫作為原歷史庫的補充,保證上位機存儲目標設備的完整歷史數(shù)據(jù),從而保證進行歷史數(shù)據(jù)查詢時,能夠依據(jù)原歷史庫和補點歷史庫查詢到完整的歷史數(shù)據(jù),提高了查詢的準確性。
在本實施例中,獲取所述查詢結(jié)果對應的歷史數(shù)據(jù)的具體過程可以為:
在所述查詢結(jié)果為所述補點歷史庫中存在所述目標設備在所述第二子時間段內(nèi)的全部歷史數(shù)據(jù)的情況下,從所述補點歷史庫中獲取所述目標設備在所述第二子時間段內(nèi)的全部歷史數(shù)據(jù)。
或者,獲取所述查詢結(jié)果對應的歷史數(shù)據(jù)的具體過程為:在所述查詢結(jié)果為所述補點歷史庫中存在所述目標設備在第三子時間段內(nèi)的歷史數(shù)據(jù)的情況下,從所述補點歷史庫中獲取所述目標設備在所述第三子時間段內(nèi)的全部歷史數(shù)據(jù);
所述第三子時間段為所述第二子時間段中的一個時間段,且所述第三子時間段小于所述第二子時間段。
從所述補點歷史庫中獲取所述目標設備在所述第三子時間段內(nèi)的全部歷史數(shù)據(jù)可以直接作為查詢結(jié)果對應的歷史數(shù)據(jù)。
第三子時間段的起始時刻不等于第二子時間段的起始時刻且第三子時間段的最后時刻不等于第二子時間段的最后時刻,例如,預設時間段為T1~T4,第一子時間段為T1~T2和T3~T4,第二子時間段T2~T3,第三子時間段為T2’~T3’(T2<T2’<T3’<T3)。
或者,第三子時間段的起始時刻等于第二子時間段的起始時刻,但第三子時間段的最后時刻不等于第二子時間段的最后時刻,例如,預設時間段為T1~T4,第一子時間段為T1~T2和T3~T4,第二子時間段T2~T3,第三子時間段為T2~T3’(T2<T3’<T3)。
或者,第三子時間段的起始時刻不等于第二子時間段的起始時刻,但第三子時間段的最后時刻等于第二子時間段的最后時刻,例如,預設時間段為T1~T4,第一子時間段為T1~T2和T3~T4,第二子時間段T2~T3,第三子時間段為T3’~T3(T2<T3’<T3)。
從所述補點歷史庫中獲取所述目標設備在T2’~T3’內(nèi)的全部歷史數(shù)據(jù),或,從所述補點歷史庫中獲取所述目標設備在T2~T3’內(nèi)的全部歷史數(shù)據(jù),或,從所述補點歷史庫中獲取所述目標設備在T3’~T3內(nèi)的全部歷史數(shù)據(jù),均可以直接作為查詢結(jié)果對應的歷史數(shù)據(jù)。
當然,在第三子時間段的起始時刻不等于第二子時間段的起始時刻且第三子時間段的最后時刻不等于第二子時間段的最后時刻的情況下,可以利用第三子時間段的最后時刻的歷史數(shù)據(jù)對之后子時間段的數(shù)據(jù)進行拉平補齊,具體實現(xiàn)方式為:
在從所述補點歷史庫中獲取所述目標設備在所述第三子時間段內(nèi)的全部歷史數(shù)據(jù)的基礎上,執(zhí)行步驟A11和步驟A12:
步驟A11:確定所述目標設備在第四子時間段的各個時間點各自的歷史數(shù)據(jù)為所述目標設備在所述第三子時間段的最后一個時刻的歷史數(shù)據(jù),得到所述目標設備在所述第四子時間段的歷史數(shù)據(jù)。
所述第四子時間段為所述第二子時間段中的一個時間段,且所述第四子時間段小于所述第二子時間段,且所述第四子時間段的起始時刻為所述第三子時間段的最后一個時刻。
以預設時間段為T1~T4,第一子時間段為T1~T2和T3~T4,第二子時間段T2~T3,第三子時間段為T2~T3’(T2<T3’<T3)為例,第四子時間段為T3’~T3,補點歷史庫中實際是不存在目標設備在T3’~T3期間的歷史數(shù)據(jù),但是,通過拉平補齊的方式即步驟A11,對T3’~T3期間的歷史數(shù)據(jù)進行補齊,得到目標設備在T3’~T3期間的歷史數(shù)據(jù)。
步驟A12:將所獲取到的所述目標設備在所述第三子時間段內(nèi)的全部歷史數(shù)據(jù)和所述目標設備在所述第四子時間段的歷史數(shù)據(jù)合并,得到合并后的歷史數(shù)據(jù)。
合并后的歷史數(shù)據(jù)即查詢結(jié)果對應的歷史數(shù)據(jù)。
在本實施例中,獲取所述查詢結(jié)果對應的歷史數(shù)據(jù)的具體過程也可以為:
步驟A21:在所述查詢結(jié)果為所述補點歷史庫中存在所述目標設備在預設時刻的歷史數(shù)據(jù)的情況下,從所述補點歷史庫中獲取所述目標設備在所述預設時刻的歷史數(shù)據(jù),所述預設時刻為所述第二子時間段中的某一個時刻。
以預設時間段為T1~T4,第一子時間段為T1~T2和T3~T4,第二子時間段T2~T3,預設時刻為T2’(T2<T2’<T3)為例,在所述查詢結(jié)果為所述補點歷史庫中存在所述目標設備在預設時刻的歷史數(shù)據(jù)的情況下,從所述補點歷史庫中獲取所述目標設備在所述預設時刻的歷史數(shù)據(jù)即在所述查詢結(jié)果為所述補點歷史庫中存在所述目標設備在T2’的歷史數(shù)據(jù)的情況下,從所述補點歷史庫中獲取所述目標設備在T2’的歷史數(shù)據(jù)。
步驟A22:確定所述目標設備在第五子時間段內(nèi)各個時間點的歷史數(shù)據(jù)為所述目標設備在所述預設時刻的歷史數(shù)據(jù),得到所述目標設備在所述第五子時間段內(nèi)的歷史數(shù)據(jù)。
所述第五子時間段為從所述預設時刻至所述第二子時間段的最后一個時刻的時間段。
目標設備在第五子時間段內(nèi)的歷史數(shù)據(jù)即查詢結(jié)果對應的歷史數(shù)據(jù)。
可以利用目標設備在預設時刻的歷史數(shù)據(jù),對目標設備在第五子時間段的歷史數(shù)據(jù)進行拉平補齊,以預設時間段為T1~T4,第一子時間段為T1~T2和T3~T4,第二子時間段T2~T3,預設時刻為T2’(T2<T2’<T3)為例,可以利用目標設備在T2’的歷史數(shù)據(jù),對T2’~T3的歷史數(shù)據(jù)進行拉平補齊即確定所述目標設備在T2’~T3內(nèi)各個時間點的歷史數(shù)據(jù)為所述目標設備在T2’的歷史數(shù)據(jù),得到所述目標設備在T2’~T3內(nèi)的歷史數(shù)據(jù)。
現(xiàn)進行場景應用舉例對實施例一示出的數(shù)據(jù)查詢方法進行說明,場景應用舉例如下:
客戶端發(fā)起T1~T4間歷史數(shù)據(jù)查詢時,各場景說明如下(T0<T1<=T2<=T3<=T4):
(1)指定T1~T4期間,原歷史庫數(shù)據(jù)完整時:
在原歷史庫數(shù)據(jù)完整時,查詢目標設備在T1~T4期間的歷史數(shù)據(jù)過程,請參見圖2示出的時序圖。
(2)指定T1~T4期間,原歷史庫中T2~T3期間無數(shù)據(jù)時
(a)補點歷史庫T2~T3期間不存在歷史數(shù)據(jù)
在補點歷史庫T2~T3期間不存在歷史數(shù)據(jù)時,查詢目標設備在T1~T4期間的歷史數(shù)據(jù)過程,請參見圖3示出的時序圖。
(b)補點歷史庫T2~T3期間存在完整歷史數(shù)據(jù)
在補點歷史庫T2~T3期間存在完整歷史數(shù)據(jù)時,查詢目標設備在T1~T4期間的歷史數(shù)據(jù)過程,請參見圖4示出的時序圖。
(c)補點歷史庫T2~T3期間只存在T2’的歷史數(shù)據(jù)(T2<T2’<T3)
通過使用補點歷史庫中T2’的值,將T2’~T3期間的歷史數(shù)據(jù)進行拉平補齊。
在補點歷史庫T2~T3期間只存在T2’的歷史數(shù)據(jù)時,查詢目標設備在T1~T4期間的歷史數(shù)據(jù)過程,請參見圖5示出的時序圖。
(d)補點歷史庫T2~T3期間存在T2’~T3’期間的歷史數(shù)據(jù)(T2<T2’<T3’<T3)
ⅰ、T2~T2’期間的歷史數(shù)據(jù)保持原歷史庫查詢的結(jié)果。
若原歷史庫查詢的結(jié)果為空,則T2~T2’期間的歷史數(shù)據(jù)保持無數(shù)據(jù)狀態(tài)。
ⅱ、T2’~T3’期間的歷史數(shù)據(jù)使用補點歷史庫查詢的結(jié)果。
ⅲ、T3’~T3期間的歷史數(shù)據(jù)使用T3’進行拉平補齊。
T3’~T3期間的歷史數(shù)據(jù)使用T3’進行拉平補齊即將T3’的歷史數(shù)據(jù)作為T3’~T3期間的各個時間點的歷史數(shù)據(jù)。
(3)指定T1~T4期間,原歷史庫中T1~T3無數(shù)據(jù)
(a)從補點歷史庫中查詢T1~T3期間的補點數(shù)據(jù),同時從補點歷史庫中查詢T1之前最近的一個補點數(shù)據(jù)(例:T0)。
(b)當補點歷史庫存在T1與之后的補點數(shù)據(jù)時,使用補點數(shù)據(jù)進行歷史數(shù)據(jù)補充返回。
(c)當補點歷史庫存在T1之后的補點數(shù)據(jù)時,參考“(2)指定T1~T4期間,原歷史庫中T2~T3期間無數(shù)據(jù)時”的查詢邏輯,進行歷史數(shù)據(jù)的補點。
(d)當補點歷史庫不存在T1~T2歷史數(shù)據(jù)時
ⅰ、存在T0補點:向原歷史庫中查詢T0~T1期間的歷史數(shù)據(jù),如不存在時,說明此補點為此期間正確的補點,T1~T2的歷史數(shù)據(jù)使用T0歷史數(shù)據(jù)拉平補齊。
ⅱ、不存在T0補點:直接返回以前補齊后的歷史數(shù)據(jù)
在本實施例中,上述補點歷史庫中歷史數(shù)據(jù)的存儲過程可以參見圖6,可以包括以下步驟:
步驟S21:實時數(shù)據(jù)庫服務器向指定設備發(fā)送通信斷開期間的歷史數(shù)據(jù)采集請求。
步驟S22:所述實時數(shù)據(jù)庫服務器接收所述指定設備發(fā)送的所述通信斷開期間的歷史數(shù)據(jù)。
步驟S23:所述實時數(shù)據(jù)庫服務器將所述指定設備發(fā)送的所述通信斷開期間的歷史數(shù)據(jù)發(fā)送至所述補點歷史庫服務器。
步驟S24:所述補點歷史庫服務器將所述指定設備發(fā)送的所述通信斷開期間的歷史數(shù)據(jù)存儲至所述補點歷史庫。
其中,補點歷史庫中歷史數(shù)據(jù)的存儲過程可以參見圖7示出的時序圖,同時,圖7示出的時序圖示出了原歷史庫中歷史數(shù)據(jù)的存儲過程。圖7中的采集器/設備即下位機。
實施例二
與上述方法實施例相對應,本實施例提供了一種數(shù)據(jù)查詢裝置,請參見圖8,數(shù)據(jù)查詢裝置包括:第一查詢模塊11、第一獲取模塊12、第二獲取模塊13、第二查詢模塊14、第三獲取模塊15和合并模塊16。
第一查詢模塊11,用于查詢原歷史庫中是否存在目標設備在預設時間段內(nèi)的歷史數(shù)據(jù),若所述原歷史庫中存在所述目標設備在所述預設時間段內(nèi)的全部歷史數(shù)據(jù),則執(zhí)行第一獲取模塊12,若所述原歷史庫中存在所述目標設備在第一子時間段內(nèi)的歷史數(shù)據(jù),則執(zhí)行第二獲取模塊13,所述第一子時間段為所述預設時間段內(nèi)的一個時間段,且第一子時間段小于所述預設時間段。
所述第一獲取模塊12,用于從所述原歷史庫中獲取所述目標設備在所述預設時間段內(nèi)的全部歷史數(shù)據(jù)。
所述第二獲取模塊13,用于從所述原歷史庫中獲取所述目標設備在所述第一子時間段內(nèi)的歷史數(shù)據(jù)。
第二查詢模塊14,用于查詢補點歷史庫中是否存在所述目標設備在第二子時間段內(nèi)的歷史數(shù)據(jù),得到查詢結(jié)果,所述第二子時間段小于所述預設時間段,且所述第一子時間段和所述第二子時間段之和等于所述預設時間段。
第三獲取模塊15,用于獲取所述查詢結(jié)果對應的歷史數(shù)據(jù)。
合并模塊16,用于將所述目標設備在所述第一子時間段內(nèi)的歷史數(shù)據(jù)和所述查詢結(jié)果對應的歷史數(shù)據(jù)合并,得到所述目標設備在所述預設時間段內(nèi)的全部歷史數(shù)據(jù)。
在本實施例中,第三獲取模塊15包括:第一獲取單元或第二獲取單元。
第一獲取單元,用于在所述查詢結(jié)果為所述補點歷史庫中存在所述目標設備在所述第二子時間段內(nèi)的全部歷史數(shù)據(jù)的情況下,從所述補點歷史庫中獲取所述目標設備在所述第二子時間段內(nèi)的全部歷史數(shù)據(jù)。
第二獲取單元,用于在所述查詢結(jié)果為所述補點歷史庫中存在所述目標設備在第三子時間段內(nèi)的歷史數(shù)據(jù)的情況下,從所述補點歷史庫中獲取所述目標設備在所述第三子時間段內(nèi)的全部歷史數(shù)據(jù)。
所述第三子時間段為所述第二子時間段中的一個時間段,且所述第三子時間段小于所述第二子時間段。
在第三獲取模塊15包括第二獲取單元時,第三獲取模塊15還可以包括:第一確定單元和合并單元。
第一確定單元,用于確定所述目標設備在第四子時間段的各個時間點各自的歷史數(shù)據(jù)為所述目標設備在所述第三子時間段的最后一個時刻的歷史數(shù)據(jù),得到所述目標設備在所述第四子時間段的歷史數(shù)據(jù)。
所述第四子時間段為所述第二子時間段中的一個時間段,且所述第四子時間段小于所述第二子時間段,且所述第四子時間段的起始時刻為所述第三子時間段的最后一個時刻。
合并單元,用于將所獲取到的所述目標設備在所述第三子時間段內(nèi)的全部歷史數(shù)據(jù)和所述目標設備在所述第四子時間段的歷史數(shù)據(jù)合并,得到合并后的歷史數(shù)據(jù)。
當然,第三獲取模塊15具體可以包括:第三獲取單元和第二確定單元。
第三獲取單元,用于在所述查詢結(jié)果為所述補點歷史庫中存在所述目標設備在預設時刻的歷史數(shù)據(jù)的情況下,從所述補點歷史庫中獲取所述目標設備在所述預設時刻的歷史數(shù)據(jù),所述預設時刻為所述第二子時間段中的某一個時刻。
第二確定單元,用于確定所述目標設備在第五子時間段內(nèi)各個時間點的歷史數(shù)據(jù)為所述目標設備在所述預設時刻的歷史數(shù)據(jù),得到所述目標設備在所述第五子時間段內(nèi)的歷史數(shù)據(jù)。
所述第五子時間段為從所述預設時刻至所述第二子時間段的最后一個時刻的時間段。
實施例三
在本實施例中,提供了一種數(shù)據(jù)查詢系統(tǒng),請參見圖9,數(shù)據(jù)查詢系統(tǒng)包括:實時數(shù)據(jù)庫服務器21、補點歷史庫服務器22和數(shù)據(jù)查詢裝置23。
數(shù)據(jù)查詢裝置23的具體結(jié)構(gòu)及相關功能請參見實施例二示出的數(shù)據(jù)查詢裝置,在此不再贅述。
所述實時數(shù)據(jù)庫服務器21,用于向指定設備發(fā)送通信斷開期間的歷史數(shù)據(jù)采集請求,并接收所述指定設備發(fā)送的所述通信斷開期間的歷史數(shù)據(jù),并將所述指定設備發(fā)送的所述通信斷開期間的歷史數(shù)據(jù)發(fā)送至所述補點歷史庫服務器22。
所述補點歷史庫服務器22,用于將所述指定設備發(fā)送的所述通信斷開期間的歷史數(shù)據(jù)存儲至補點歷史庫。
需要說明的是,本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。對于裝置類實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
以上對本申請所提供的一種數(shù)據(jù)查詢方法、裝置及系統(tǒng)進行了詳細介紹,本文中應用了具體個例對本申請的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領域的一般技術人員,依據(jù)本申請的思想,在具體實施方式及應用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應理解為對本申請的限制。