專利名稱:一種分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢方法及系統(tǒng)的制作方法
技術領域:
本申請涉及查詢技術領域,特別涉及一種分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢方法及系統(tǒng)。
背景技術:
目前,基于滑動窗口的K-Skyband持續(xù)查詢方法是一種單數(shù)據(jù)流上的K-Skyband持續(xù)查詢方法,其中單數(shù)據(jù)流上的K-Skyband持續(xù)查詢方法的具體實現(xiàn)過程為:算法將滑動窗口中的數(shù)據(jù)點保存為〈P.1d, P.xl,P.x2,…,P.xd, P.t,P.num>的形式,其中P.1d是記錄的唯一標識,P.xl, P.χ2,..., P.xd為各維的num屬性值,P.t是P的到達時間,P.num是支配P的K-Skyband點的個數(shù);當滑動窗口數(shù)據(jù)滿以后,借鑒Skyline查詢算法BBS計算K-skyband初始結果,同時記錄下每個數(shù)據(jù)點P的num值,并且將指向K-Skyband點的指針保存在一個Pskyband指針隊列中,指向候選K-Skyband點的指針保存在一個Prest隊列中;新來數(shù)據(jù)點Pnew先依次和Pskyband關聯(lián)的Κ-Skyband點進行支配比較,若發(fā)現(xiàn)Pnew被多于K個K-Skyand點支配,即Pnew.num>K,則立即停止遍歷,并將指向Pnew的指針插入Prest隊列;否則,若遍歷完成 后仍有Pnew.num〈K,則將指向Pnew的指針插入Pskyband隊列,此時,還需將那些被Pnew支配而導致其num值大于K的原先的K-Skyband點從Pskyband隊列移至Prest隊列;如果過期點是候選點,則直接刪除;若過期點是K-Skyband點,則將Pskyband隊列中那些被過期點控制的K-Skyband點的num減I,同時檢查Prest關聯(lián)的候選點中是否會因為K-Skyband點到期,支配其點數(shù)減少而成為K-Skyband點。然而在現(xiàn)實生活的實際應用中,數(shù)據(jù)源本質上是分布的,數(shù)據(jù)源可能位于不同的地理位置或屬于不同的社會團體,比如傳感器網(wǎng)絡和金融股票分析等應用領域,由于數(shù)據(jù)源本質上是分布的,而單數(shù)據(jù)流上的K-Skyband持續(xù)查詢方法只能對單一的數(shù)據(jù)源進行查詢,不能對分布式的數(shù)據(jù)源進行查詢,因此目前尚不存在一種分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢方法。
發(fā)明內容
為解決上述技術問題,本申請實施例提供一種分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢方法及系統(tǒng),以達到在分布式數(shù)據(jù)流環(huán)境下進行K-Skyband連續(xù)查詢,擴展了K-Skyband連續(xù)查詢查詢方法的應用領域的目的,技術方案如下:—種分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢方法,所述方法包括:接收不同數(shù)據(jù)源發(fā)送的數(shù)據(jù);接收查詢命令,所述查詢命令觸發(fā)滑動窗口連續(xù)逐個讀取接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù);在達到預設條件時,依據(jù)當前滑動窗口中的數(shù)據(jù)確定初始全局K-Skyband點的結果集,所述預設條件包括:所述滑動窗口首次裝滿數(shù)據(jù)或所述滑動窗口讀取數(shù)據(jù)的時長達到預設時間;
將初始全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集,并將其作為查詢結果輸出;判斷所述滑動窗口是否讀取到新數(shù)據(jù);若是,則依據(jù)所述滑動窗口讀取到新數(shù)據(jù)后產生的過期數(shù)據(jù)和所述新數(shù)據(jù)對所述當前全局K-Skyband點的結果集進行過期維護和更新維護,并將對所述當前全局K-Skyband點的結果集進行過期維護和更新維護后確定的全局K-Skyband點的結果集作為查詢結果并輸出;將對所述當前全局K-Skyband點的結果集進行過期維護和更新維護后確定的全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集并返回執(zhí)行判斷所述滑動窗口是否讀取到新數(shù)據(jù);若否,則結束。優(yōu)選的,在所述接收查詢命令后還包括:判斷是否接收到停止查詢命令,所述停止查詢命令用于停止所述滑動窗口讀取所述接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù);若是,所述滑動窗口停止讀取所述接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù);若否,所述滑動窗口繼續(xù)讀取所述接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)直至讀取完所述接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)。優(yōu)選的,所述依據(jù)當前滑動窗口中的數(shù)據(jù)確定初始全局K-Skyband點的結果集包括:將所述當前滑動窗口中的數(shù)據(jù)的指針存入所述當前滑動窗口中的數(shù)據(jù)的屬性所對應的規(guī)則網(wǎng)絡索引的網(wǎng)格中;依據(jù)嵌套循環(huán)比較BNL算法對所述滑動窗口中的數(shù)據(jù)進行支配比較,確定K-Skyband點和候選K-Skyband點,所述K-Skyband點的num屬性值不大于預先設定的K值,所述候選K-Skyband點的num屬性值大于預先設定的K值; 將所述K-Skyband點的指針存入所述K-Skyband點的指針所在網(wǎng)格所關聯(lián)的K-Skyband隊列,將所述候選K-Skyband點的指針存入所述候選K-Skyband點的指針所在網(wǎng)格所關聯(lián)的候選K-Skyband隊列,所述候選K-Skyband隊列中的指針按照所述指針對應的數(shù)據(jù)的mindist大小升序排列;遍歷各個K-Skyband隊列,確定初始全局K-Skyband點的結果集。優(yōu)選的,所述則依據(jù)所述滑動窗口讀取到新數(shù)據(jù)后產生的過期數(shù)據(jù)和所述新數(shù)據(jù)對所述當前全局K-Skyband點的結果集進行過期維護和更新維護包括:判斷所述過期數(shù)據(jù)是否為候選K-Skyband點;若是,在所述滑動窗口中刪除所述過期數(shù)據(jù);若否,依據(jù)所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系和存儲所述過期數(shù)據(jù)的指針的網(wǎng)格更新所述過期數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小并更新所述當前全局K-Skyband點的結果集,將更新后的所述當前全局K-Skyband點的結果集作為當前全局K-Skyband點的
結果集;確定存儲所述新數(shù)據(jù)的指針的網(wǎng)格,并將所述新數(shù)據(jù)的指針存入規(guī)則網(wǎng)格索引;依據(jù)存儲所述新數(shù)據(jù)的指針的網(wǎng)格、所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系和更新后的所述過期數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小確定所述新數(shù)據(jù)的身份;
在確定所述新數(shù)據(jù)的身份為K-Skyband點后,更新所述新數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小,并根據(jù)更新后的所述新數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小更新所述當前全局K-Skyband點的結果集,并將更新后的所述當前全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集。
優(yōu)選的,所述依據(jù)所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系和存儲所述過期數(shù)據(jù)的指針的網(wǎng)格更新所述過期數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小并更新所述當前全局K-Skyband點的結果集包括:
確定存儲所述過期數(shù)據(jù)的指針的網(wǎng)格;
依據(jù)所述存儲所述過期數(shù)據(jù)的指針的網(wǎng)格和所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系確定所述過期數(shù)據(jù)在規(guī)則網(wǎng)格索引中的部分支配區(qū)和完全支配區(qū);
對所述過期數(shù)據(jù)和所述過期數(shù)據(jù)的部分支配區(qū)中的指針對應的數(shù)據(jù)進行支配比較,確定所述過期數(shù)據(jù)支配的數(shù)據(jù),更新所述過期數(shù)據(jù)支配的數(shù)據(jù)的num屬性值大小并更新所述部分支配區(qū)的K-Skyband點的結果集;
更新所述完全支配區(qū)中的指針對應的數(shù)據(jù)的num屬性值大小并更新所述完全支配區(qū)的K-Skyband點的結果集。
優(yōu)選的,所述對所述過期數(shù)據(jù)和所述過期數(shù)據(jù)的部分支配區(qū)中的指針對應的數(shù)據(jù)進行支配比較,確定所述過期數(shù)據(jù)支配的數(shù)據(jù),更新所述過期數(shù)據(jù)支配的數(shù)據(jù)的num屬性值大小并更新所述部分支配區(qū)的K-Skyband點的結果集包括:
讀取所述過期數(shù)據(jù)的部分支配區(qū)中未遍歷網(wǎng)格中mindist最小的網(wǎng)格中K-Skyband隊列中的指針對應的數(shù)據(jù)中未被處理的數(shù)據(jù);
判斷當前讀取到的數(shù)據(jù)是否被所述過期數(shù)據(jù)支配;
若否,該數(shù)據(jù)的num屬性值不變,若是,該數(shù)據(jù)的num屬性值減I ;
判斷當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格中K-Skyband隊列中的指針對應的數(shù)據(jù)中是否存在未被處理的數(shù)據(jù);
若是,繼續(xù)讀取當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格中K-Skyband隊列中的指針對應的數(shù)據(jù)中未被處理的數(shù)據(jù),直至當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格中K-Skyband隊列中的指針對應的數(shù)據(jù)中不存在未被處理的數(shù)據(jù);
若否,從當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格中候選K-Skyband隊列中的指針對應的數(shù)據(jù)中讀取未被處理的數(shù)據(jù);
判斷當前讀取到的數(shù)據(jù)是否被所述過期數(shù)據(jù)支配;
若否,該數(shù)據(jù)的num屬性值不變,若是,該數(shù)據(jù)的num屬性值減1,并將該數(shù)據(jù)的num屬性值減I后的num屬性值作為該數(shù)據(jù)的當前num屬性值;
判斷該數(shù)據(jù)的當前num屬性值是否不大于預先設定的K值;
若是,將該數(shù)據(jù)的指針移動至該數(shù)據(jù)的指針所在網(wǎng)格所關聯(lián)的K-Skyband隊列;
若否,該數(shù)據(jù)的指針位置不變;
判斷當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格關聯(lián)的候選K-SKyband隊列中的指針對應的數(shù)據(jù)中是否存在未被處理的數(shù)據(jù);
若是,繼續(xù)讀取當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格中候選K-Skyband隊列中的指針對應的數(shù)據(jù)中未被處理的數(shù)據(jù);若否,返回執(zhí)行讀取所述過期數(shù)據(jù)的部分支配區(qū)中未遍歷網(wǎng)格中mindist最小的網(wǎng)格中K-Skyband隊列中的指針對應的數(shù)據(jù)中未被處理的數(shù)據(jù),直至所述過期數(shù)據(jù)的部分支配區(qū)中不存在未遍歷網(wǎng)格。優(yōu)選的,所述更新所述完全支配區(qū)中的指針對應的數(shù)據(jù)的num屬性值大小并更新所述完全支配區(qū)的K-Skyband點的結果集包括:將所述過期數(shù)據(jù)的完全支配區(qū)中未遍歷網(wǎng)格中mindist最小的網(wǎng)格中存儲的指針對應的數(shù)據(jù)num屬性值減I ;判斷當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格關聯(lián)的候選K-Skyband隊列中的指針對應的數(shù)據(jù)在num屬性值減I后的num屬性值大小是否不大于預先設定的K值,若是,將該該數(shù)據(jù)的指針存入該數(shù)據(jù)的指針所在網(wǎng)格所關聯(lián)的K-Skyband隊列;遍歷所述完全支配區(qū)的K-Skyband隊列,將遍歷后的結果集合作為所述完全支配區(qū)當前的K-Skyband點的結果集。優(yōu)選的,所述依據(jù)存儲所述新數(shù)據(jù)的指針的網(wǎng)格、所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系和更新后的所述過期數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小確定所述新數(shù)據(jù)的身份包括:在所述更新后的所述過期數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小的基礎上,依據(jù)存儲所述新數(shù)據(jù)的指針的網(wǎng)格和所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系確定所述新數(shù)據(jù)在所述規(guī)則網(wǎng)格索引中的部分反支配區(qū)和完全反支配區(qū);遍歷所述新數(shù)據(jù)的完全反支配區(qū)中K-Skyband隊列中的指針,確定所述新數(shù)據(jù)的num屬性值大小;對所述新數(shù)據(jù)和所述新數(shù)據(jù)的部分反支配區(qū)中K-Skyband隊列中的數(shù)據(jù)進行支配比較,并根據(jù)支配比較的結果更新所述新數(shù)據(jù)的num屬性值大??;判斷更新后的所述新數(shù)據(jù)的num屬性值大小是否大于預先設定的K值的大??;若是,確定所述新數(shù)據(jù)為候選K-SKyband點;若否,確定所述新數(shù)據(jù)為K-Skyband點。優(yōu)選的,所述在確定所述新數(shù)據(jù)的身份為K-Skyband點后,更新所述新數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小,并根據(jù)更新后的所述新數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小更新所述當前全局K-Skyband點的結果集,并將更新后的所述當前全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集包括:確定所述新數(shù)據(jù)在規(guī)則網(wǎng)格索引中的部分支配區(qū)和完全支配區(qū);讀取所述新數(shù)據(jù)的完全支配區(qū)中K-SKyband隊列中未被讀取的指針對應的數(shù)據(jù);將當前讀取到的指針對應的數(shù)據(jù)的num屬性值加I,并將num屬性值加I后的num屬性值作為當前num屬性值;判斷當前num屬性值是否大于預先設定的K值;若是,將當前讀取到的指針存入該當前讀取到的指針的所在網(wǎng)格所關聯(lián)的候選K-SKyband隊列,返回執(zhí)行讀取所述新數(shù)據(jù)的完全支配區(qū)中K-SKyband隊列中未被讀取的指針對應的數(shù)據(jù),直至所述完全支配區(qū)中K-SKyband隊列中不存在未被讀取的指針;若否,當前讀取到的指針的位置保持不變,返回執(zhí)行讀取所述新數(shù)據(jù)的完全支配區(qū)中K-SKyband隊列中未被讀取的指針對應的數(shù)據(jù),直至所述完全支配區(qū)中K-SKyband隊列中不存在未被讀取的指針;讀取所述新數(shù)據(jù)的完全支配區(qū)中候選K-Skyband隊列中未被讀取的指針對應的數(shù)據(jù);將當前讀取到的指針對應的數(shù)據(jù)的屬性值加1,返回執(zhí)行讀取所述新數(shù)據(jù)的完全支配區(qū)中候選K-SKyband隊列中未被讀取的指針對應的數(shù)據(jù),直至所述完全支配區(qū)中候選K-SKyband隊列中不存在未被讀取的指針;讀取所述新數(shù)據(jù)的部分支配區(qū)中K-Skyband隊列中未被讀取的指針對應的數(shù)據(jù);判斷當前讀取到的指針對應的數(shù)據(jù)是否被所述新數(shù)據(jù)支配;若是,將當前讀取到的指針對應的數(shù)據(jù)的num屬性值加1,并將加I后的num屬性值作為當前讀取到的指針對應的數(shù)據(jù)的當前num屬性值;判斷當前讀取到的指針的當前num屬性值是否大于預先設定的K值;若是,將當前讀取到的數(shù)據(jù)的指針移動至該當前讀取到的數(shù)據(jù)的指針所在網(wǎng)格所關聯(lián)的候選K-SKyband隊列,返回執(zhí)行讀取所述新數(shù)據(jù)的部分支配區(qū)中K-Skyband隊列中未被讀取的指針對應的數(shù)據(jù),直至所述部分支配區(qū)中K-Skyband隊列中不存在未被讀取的指針;若否,當前讀取到的數(shù)據(jù)的指針的位置保持不變,返回執(zhí)行讀取所述新數(shù)據(jù)的部分支配區(qū)中K-Skyband隊列中未被讀取的指針對應的數(shù)據(jù),直至所述部分支配區(qū)中K-Skyband隊列中不存在未被讀取的指針;讀取所述新數(shù)據(jù)的部分支配區(qū)中候選K-Skyband隊列中未被讀取的指針對應的數(shù)據(jù);判斷當前讀取到的指針對應的數(shù)據(jù)是否被所述新數(shù)據(jù)支配;若是,將當前讀取到的指針對應的數(shù)據(jù)的屬性值加1,返回執(zhí)行讀取所述新數(shù)據(jù)的部分支配區(qū)中候選K-SKyband隊列中未被讀取的指針對應的數(shù)據(jù),直至所述部分支配區(qū)中候選K-SKyband隊列中不存在未被讀取的指針;遍歷所述完全支配區(qū)中更新后的K-Skyband隊列和所述部分支配區(qū)中更新后的K-Skyband隊列,將遍歷后的結果集合作為當前全局K-Skyband點的結果集。優(yōu)選的,所述接收不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)包括:接收不同數(shù)據(jù)源發(fā)送的K-Skyband增量,所述K-Skyband增量為不同數(shù)據(jù)源上新增加的K-Skyband點,所述K-Skyband點攜帶有所述K-Skyband點的屬性。優(yōu)選的,所述預設條件還包括:所述滑動窗口讀取完不同數(shù)據(jù)源各自首次發(fā)送的數(shù)據(jù)。一種分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢系統(tǒng),所述系統(tǒng)包括:第一接收單元,用于接收不同數(shù)據(jù)源發(fā)送的數(shù)據(jù);第一讀取單元,用于讀取所述第一接收單元接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù),所述讀取單元為滑動窗口;第二接收單元,用于接收查詢命令,所述查詢命令觸發(fā)滑動窗口連續(xù)逐個讀取接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù);第一處理單元,用于在達到預設條件時,依據(jù)當前滑動窗口中的數(shù)據(jù)確定初始全局K-Skyband點的結果集,所述預設條件包括:所述滑動窗口首次裝滿數(shù)據(jù)或所述滑動窗口讀取數(shù)據(jù)的時長達到預設時間;
第一輸出單元,用于將所述第一處理單元確定的初始全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集,并將其作為查詢結果輸出;
第一判斷單元,用于判斷所述滑動窗口是否讀取到新數(shù)據(jù);
若是,則觸發(fā)第二處理單元;
第二處理單元,用于依據(jù)所述滑動窗口讀取到新數(shù)據(jù)后產生的過期數(shù)據(jù)和所述新數(shù)據(jù)對所述當前全局K-Skyband點的結果集進行過期維護和更新維護;
第二輸出單元,用于將所述第二處理單元對所述當前全局K-Skyband點的結果集進行過期維護和更新維護后確定的全局K-Skyband點的結果集作為查詢結果并輸出;
第三處理單元,用于將所述第二處理單元對所述當前全局K-Skyband點的結果集進行過期維護和更新維護后確定的全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集并觸發(fā)所述第一判斷單元;
若否,則結束。
優(yōu)選的,還包括:
第二判斷單元,用于判斷是否接收到停止查詢命令,所述停止查詢命令用于停止所述滑動窗口讀取所述接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù);
若是,所述滑動窗口停止讀取所述接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù);
若否,所述滑動窗口繼續(xù)讀取所述接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)直至讀取完所述接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)。
優(yōu)選的,所述第一接收單元具體用于接收不同數(shù)據(jù)源發(fā)送的K-Skyband增量,所述K-Skyband增量為不同數(shù)據(jù)源上新增加的K-Skyband點,所述K-Skyband點攜帶有所述K-Skyband點的屬性。
優(yōu)選的,所述第一處理單元還用于在所述滑動窗口讀取完不同數(shù)據(jù)源各自首次發(fā)送的數(shù)據(jù)時,依據(jù)當前滑動窗口中的數(shù)據(jù)確定初始全局K-Skyband點的結果集。
與現(xiàn)有技術相比,本申請的有益效果為:
在本申請中,中央服務器接收不同數(shù)據(jù)源發(fā)送的數(shù)據(jù);接收查詢命令,所述查詢命令觸發(fā)滑動窗口連續(xù)逐個讀取接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù);在達到預設條件時,依據(jù)當前滑動窗口中的數(shù)據(jù)確定初始全局K-Skyband點的結果集,所述預設條件包括:所述滑動窗口首次裝滿數(shù)據(jù)或所述滑動窗口讀取數(shù)據(jù)的時長達到預設時間;將初始全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集,并將其作為查詢結果輸出;判斷所述滑動窗口是否讀取到新數(shù)據(jù);若是,則依據(jù)所述滑動窗口讀取到新數(shù)據(jù)后產生的過期數(shù)據(jù)和所述新數(shù)據(jù)對所述當前全局K-Skyband點的結果集進行過期維護和更新維護,并將對所述當前全局K-Skyband點的結果集進行過期維護和更新維護后確定的全局K-Skyband點的結果集作為查詢結果并輸出;將對所述當前全局K-Skyband點的結果集進行過期維護和更新維護后確定的全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集并返回執(zhí)行判斷所述滑動窗口是否讀取到新數(shù)據(jù);若否,則結束。
因此,本申請實現(xiàn)了在分布式數(shù)據(jù)流環(huán)境下進行K-Skyband連續(xù)查詢,擴展了K-Skyband連續(xù)查詢查詢方法的應用領域。
進一步的,中央服務器可以接收不同數(shù)據(jù)源發(fā)送的K-Skyband增量,中央服務器根據(jù)不同數(shù)據(jù)源發(fā)送的K-Skyband增量對中央服務器的全局結果進行計算和維護,中央服務器不需要接收不同數(shù)據(jù)源發(fā)送的不同數(shù)據(jù)源上的所有數(shù)據(jù),從而減少了不同數(shù)據(jù)源和中央服務器之間的通信量,保證了分布式系統(tǒng)的通信有效性。而且,采用關聯(lián)了 K-Skyband增量指針隊列的網(wǎng)格索引技術和支配區(qū)域劃分技術遍歷網(wǎng)格索引,極大的減少了滑動窗口中的數(shù)據(jù)點之間的支配比較,減少查詢時間,提高查詢系統(tǒng)的反應速度,并且候選K-Skyband隊列關聯(lián)的數(shù)據(jù)按照mindist大小升序排列,使候選K-Skyband隊列前面的數(shù)據(jù)點不會被后面的數(shù)據(jù)點支配,當產生K-Skyband過期點時,保證支配能力較強的候選K-Skyband點轉換為新的K-Skyband點,從而避免候選K-Skyband點的身份反復變化所帶來的大量支配測試,提高查詢速度,減少查詢時間。
為了更清楚地說明本申請實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是本申請?zhí)峁┑囊环N分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢方法的一種流程圖;圖2是本申請?zhí)峁┑某跏既諯-Skyband點的結果集的一種流程圖;圖3是本申請?zhí)峁┑囊?guī)則網(wǎng)格索引的一種示意圖;圖4是本申請?zhí)峁┑膶Ξ斍叭諯-Skyband點的結果集進行過期維護和更新維護的一種流程圖;圖5是本申請?zhí)峁┑膶Ξ斍叭諯-Skyband點的結果集進行過期維護和更新維護的一種子流程圖;圖6是本申請?zhí)峁┑膶Ξ斍叭諯-Skyband點的結果集進行過期維護和更新維護的另一種子流程圖;圖7是本申請?zhí)峁┑囊环N分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢方法的另一種流程圖;圖8是本申請?zhí)峁┑囊环N分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢系統(tǒng)的一種結構示意圖;圖9是本申請?zhí)峁┑囊环N分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢系統(tǒng)的另一種結構示意圖。
具體實施例方式下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├绢I域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。請參閱圖1,其示出了本申請?zhí)峁┑囊环N分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢方法的流程圖,圖1示出的分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢方法中的中央服務器設置有滑動窗口,且滑動窗口的長度固定,其中滑動窗口的長度可以根據(jù)需要進行自行設定??梢园ㄒ韵虏襟E:步驟Sll:接收不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)。在本實施例中,不同數(shù)據(jù)源采取異步不定時的方式向中央服務器發(fā)送數(shù)據(jù),數(shù)據(jù)源發(fā)送的每個數(shù)據(jù)都具有各自的屬性,且每個數(shù)據(jù)具有的屬性的個數(shù)是相同的。中央服務器則接收不同數(shù)據(jù)源發(fā)送的數(shù)據(jù),并將接收到的數(shù)據(jù)按照接收順序依次存入緩沖區(qū)內。步驟S12:接收查詢命令,所述查詢命令觸發(fā)滑動窗口連續(xù)逐個讀取接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)。中央服務器接收查詢命令,所述查詢命令觸發(fā)滑動窗口連續(xù)逐個讀取接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)即滑動窗口從緩沖區(qū)內連續(xù)逐個讀取數(shù)據(jù)?;瑒哟翱谥饌€讀取緩沖區(qū)內的數(shù)據(jù)時,每次讀取的數(shù)據(jù)都是緩沖區(qū)內當前接收順序最早的數(shù)據(jù)。在本實施例中,滑動窗口中所有數(shù)據(jù)均以(p.1d, p.site, p.xl,…,p.xn, p.num)形式保存,其中P.1d,是數(shù)據(jù)的編號,p.site是數(shù)據(jù)所來自的數(shù)據(jù)源的編號,p.xl,...,p.xn為數(shù)據(jù)在各維上的值,P.num是支配數(shù)據(jù)p的數(shù)據(jù)的個數(shù)?;瑒哟翱谥忻總€數(shù)據(jù)均有一個num屬性值,所述num屬性值記錄的是支配該數(shù)據(jù)的K-Skyband點個數(shù)。步驟S13:在達到預設條件時,依據(jù)當前滑動窗口中的數(shù)據(jù)確定初始全局K-Skyband點的結果集,所述預設條件包括:所述滑動窗口首次裝滿數(shù)據(jù)或所述滑動窗口讀取數(shù)據(jù)的時長達到預設時間。在本實施例中,中央服務器依據(jù)接收到的數(shù)據(jù)的屬性的個數(shù)建立規(guī)則網(wǎng)格索引,例如,接收到的數(shù)據(jù)具有2個屬性,則中央服務器建立2維規(guī)則網(wǎng)格索引,若接收到的數(shù)據(jù)具有3個屬性,則中央服務器建立3維規(guī)則網(wǎng)格索引。在建立規(guī)則網(wǎng)格索引之后,將滑動窗口中的數(shù)據(jù)的指針存入規(guī)則網(wǎng)格索引中相應的網(wǎng)格中。在本實施例中,滑動窗口連續(xù)逐個從緩沖區(qū)中讀取數(shù)據(jù),在達到預設條件時,中央服務器依據(jù)當前滑動窗口中的數(shù)據(jù)確定初始全局K-Skyband點的結果集。其中所述預設條件包括滑動窗口首次裝滿數(shù)據(jù)或滑動窗口讀取數(shù)據(jù)的時長達到預設時間。步驟S14:將初始全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集,并將其作為查詢結果輸出。在本實施例中,將初始全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集,并將當前全局K-Skyband點的結果集作為查詢結果輸出,且初始全局K-Skyband點的結果集為開始查詢的第一次查詢結果。步驟S15:判斷所述滑動窗口是否讀取到新數(shù)據(jù)。在第一次查詢結果輸出后,所述滑動窗口可以作為一個基于傳感器的監(jiān)測站點以監(jiān)測是否讀取到新數(shù)據(jù),監(jiān)測是否讀取到新數(shù)據(jù)即判斷是否讀取到新數(shù)據(jù)。若否,則執(zhí)行步驟S16,若是,執(zhí)行步驟S17。步驟S16:結束。 步驟S17:依據(jù)所述滑動窗口讀取到新數(shù)據(jù)后產生的過期數(shù)據(jù)和所述新數(shù)據(jù)對所述當前全局K-Skyband點的結果集進行過期維護和更新維護。
在本實施例中,所述滑動窗口在讀取到新數(shù)據(jù)后,會產生過期數(shù)據(jù),所述滑動窗口讀取新數(shù)據(jù)后產生的過期數(shù)據(jù)和讀取到的新數(shù)據(jù),會對當前全局K-Skyband點的結果集產生影響,因此需要對當前全局K-Skyband點的結果集進行過期維護和更新維護。
對所述當前全局K-Skyband點的結果集進行過期維護和更新維護時采用了支配區(qū)域劃分技術,采用支配區(qū)域劃分技術對所述當前全局K-Skyband點的結果集進行過期維護和更新維護的具體過程可以為:根據(jù)過期數(shù)據(jù)在規(guī)則網(wǎng)格索引中的存儲位置即所在網(wǎng)格確定過期數(shù)據(jù)的部分支配區(qū)和完全支配區(qū),然后更新過期數(shù)據(jù)的部分支配區(qū)的K-Skyband隊列和候選K-Skyband隊列與完全支配區(qū)的K-Skyband隊列和候選K-Skyband隊列,上述過程即完成了過期維護,在過期維護的基礎上,確定所述新數(shù)據(jù)的身份,確定所述新數(shù)據(jù)的身份即確定所述新數(shù)據(jù)的num屬性值的大小,由所述新數(shù)據(jù)的num屬性值的大小可以確定所述新數(shù)據(jù)是否為K-Skyband點。
在確定新數(shù)據(jù)身份后,根據(jù)新數(shù)據(jù)在規(guī)則網(wǎng)格索引中的存儲位置即所在網(wǎng)格,確定新數(shù)據(jù)的完全支配區(qū)和部分支配區(qū),更新新數(shù)據(jù)的部分支配區(qū)的K-Skyband隊列和候選K-Skyband隊列與完全支配區(qū)的K-Skyband隊列和候選K-Skyband隊列。
步驟S18:將對所述當前全局K-Skyband點的結果集進行過期維護和更新維護后確定的全局K-Skyband點的結果集作為查詢結果并輸出。
在本實施例中,遍歷步驟S17獲得的新數(shù)據(jù)的完全支配區(qū)中更新后的K-Skyband隊列和部分支配區(qū)中更新后的K-Skyband隊列,將遍歷完全支配區(qū)中更新后的K-Skyband隊列后獲得的K-Skyband點和將遍歷部分支配區(qū)中更新后的K-Skyband隊列后獲得的K-Skyband點合并,合并后的K-Skyband點的集合即當前全局的K-Skyband點的結果集,并將當前全局的K-Skyband點的結果集作為查詢結果輸出。
在將對所述當前全局K-Skyband點的結果集進行過期維護和更新維護后確定的全局K-Skyband點的結果集作為查詢結果輸出后,執(zhí)行步驟S19。
步驟S19:將對所述當前全局K-Skyband點的結果集進行過期維護和更新維護后確定的全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集并返回執(zhí)行判斷所述滑動窗口是否讀取到新數(shù)據(jù)。
將對所述當前全局K-Skyband點的結果集進行過期維護和更新維護后確定的全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集并返回執(zhí)行步驟S15。若中央服務器的緩沖區(qū)內有數(shù)據(jù),且沒有外在因素強制所述滑動窗口從緩沖區(qū)內讀取數(shù)據(jù),所述滑動窗口就一直從緩沖區(qū)內讀取數(shù)據(jù),且所述滑動窗口每讀取一個新數(shù)據(jù),就執(zhí)行步驟S17,以實現(xiàn)連續(xù)查詢。
在上述方法步驟中,若中央服務器接收到停止查詢命令,所述停止查詢命令強制停止所述滑動窗口從緩沖區(qū)內讀取數(shù)據(jù),若中央服務器未接收到停止查詢命令,只要緩沖區(qū)內含有數(shù)據(jù),所述滑動窗口會一直從緩沖讀取數(shù)據(jù)直至讀取完所述緩沖區(qū)內的數(shù)據(jù)。
本申請實現(xiàn)了在分布式數(shù)據(jù)流環(huán)境下進行K-Skyband連續(xù)查詢,擴展了K-Skyband連續(xù)查詢查詢方法的應用領域。
在上述方法步驟,中央服務器接收的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)可以為各個數(shù)據(jù)源上的K-Skyband增量,各個數(shù)據(jù)源上的K-Skyband增量為各個數(shù)據(jù)源在接收到新數(shù)據(jù)時,產生的新的K-Skyband點。各個數(shù)據(jù)源均具有一個固定大小的滑動窗口,且滑動窗口關聯(lián)K-Skyband增量隊列,K-Skyband增量隊列用于存儲數(shù)據(jù)源上新增的K-Skyband點。各個數(shù)據(jù)源不斷對各自的當前全局K-Skyband點的結果集進行過期維護和更新維護,且各個數(shù)據(jù)源對各自的當前全局K-Skyband點的結果集進行過期維護和更新維護的過程與中央服務器對中央服務器的當前全局K-Skyband點的結果集進行過期維護和更新維護的過程相同,各個數(shù)據(jù)源只記錄各自對各自當前全局K-Skyband點的結果集進行更新維護和過期維護后產生的新增K-Skyband點,并將新增的K-Skyband點的指針保存在各自的K-Skyband增量隊列中。各個數(shù)據(jù)源的新增k_Skyband點產生來源有兩個:(I)新數(shù)據(jù)被判定為K-Skyband點,那么將該新數(shù)據(jù)加入數(shù)據(jù)源K-Skyband增量隊列中(2)過期維護過程中,某些候選K-Skyband點由于支配它的K-Skyband點過期而轉變?yōu)樾碌腒-Skyband點,那么將這些點加入K-Skyband增量隊列中。當中央服務器接收的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)為各個數(shù)據(jù)源上的K-Skyband增量時,對接收的的K-Skyband增量進行初始化,和過期維護與更新維護,中央服務器初始全局K-Skyband點的結果集和對當前全局K-Skyband點的結果集進行過期維護和更新維護的過程與中央服務器接收不同數(shù)據(jù)源發(fā)送各自所有的數(shù)據(jù)時,初始全局K-Skyband點的結果集和對當前全局K-Skyband點的結果集進行過期維護和更新維護的過程相同,不同之處就在于處理的對象不同即中央服務器接收不同數(shù)據(jù)源發(fā)送的K-Skyband增量時,是對K-Skyband增量進行處理,接收不同數(shù)據(jù)源發(fā)送各自所有數(shù)據(jù)時,是對所有數(shù)據(jù)進行處理,相比于中央服務器接收不同數(shù)據(jù)源發(fā)送各自所有的數(shù)據(jù),優(yōu)點在于傳輸量小且處理對象少,查詢速度快。另一個實施例請參閱圖2,本實施例示出的是依據(jù)當前滑動窗口中的數(shù)據(jù)確定初始全局K-Skyband點的結果集的具體過程,可以包括以下步驟:步驟S21:將所述當前滑動窗口中的數(shù)據(jù)的指針存入所述當前滑動窗口中的數(shù)據(jù)的屬性所對應的規(guī)則網(wǎng)絡索引的網(wǎng)格中。在本實施例中,在建立規(guī)則網(wǎng)格索引后,可以滑動窗口中的數(shù)據(jù)的屬性和規(guī)則網(wǎng)格索引中哪個網(wǎng)格相對應,滑動窗口中的數(shù)據(jù)的指針就存入滑動窗口中的數(shù)據(jù)的屬性所對應的規(guī)則網(wǎng)格索引的網(wǎng)格中。規(guī)則網(wǎng)格索引的每一個網(wǎng)格c均關聯(lián)K-Skyband隊列和候選K-Skyband隊列,它們分別用于保存指向網(wǎng)格c中K-Skyband點和候選K-Skyband點的指針,如圖3所示?;瑒哟翱谥械臄?shù)據(jù)的指針存儲在規(guī)則網(wǎng)格索引中相應的網(wǎng)格中。步驟S22:依據(jù)BNL (block-nested-loops,嵌套循環(huán)比較)算法對所述滑動窗口中的數(shù)據(jù)進行支配比較,確定K-Skyband點和候選K-Skyband點,所述K-Skyband點的num屬性值不大于預先設定的K值,所述候選K-Skyband點為num屬性值大于預先設定的K值。在本實施例中,依據(jù)BNL算法對所述滑動窗口中的數(shù)據(jù)進行支配比較的過程可以為:假設滑動窗口中有W個數(shù)據(jù),依據(jù)BNL算法嵌套比較的思想,滑動窗口中的第一個數(shù)據(jù)與在該數(shù)據(jù)之后讀取的所有數(shù)據(jù)進行支配比較,同時記錄每個數(shù)據(jù)的num屬性值,然后,第二個數(shù)據(jù)與在該數(shù)據(jù)之后讀取的所有數(shù)據(jù)進行支配比較,同時更新每個數(shù)據(jù)的num屬性值,以此類推,直至第W-1個數(shù)據(jù)與第W個數(shù)據(jù)進行支配比較,同時更新每個數(shù)據(jù)的num屬性值。
在本實施例中,依據(jù)BNL算法對所述滑動窗口中的數(shù)據(jù)進行支配比較,確定支配比較后所述滑動窗口中的各個數(shù)據(jù)的num屬性值,將num屬性值不大于預先設定的K值的數(shù)據(jù)作為K-Skyband點,將num屬性值大于預先設定的K值的數(shù)據(jù)作為候選K-Skyband點。步驟S23:將所述K-Skyband點的指針存入所述K-Skyband點的指針所在網(wǎng)格所關聯(lián)的K-Skyband隊列,將所述候選K-Skyband點的指針存入所述候選K-Skyband點的指針所在網(wǎng)格所關聯(lián)的候選K-Skyband隊列,所述候選K-Skyband隊列中的指針按照所述指針對應的數(shù)據(jù)的mindist大小升序排列。在本實施例中,在確定所述滑動窗口中哪些數(shù)據(jù)為K-Skyband點,哪些數(shù)據(jù)為候選K-Skyband點之后,由于規(guī)則網(wǎng)格索引中的各個網(wǎng)格分別關聯(lián)一個K-Skyband隊列和一個候選K-Skyband隊列,所以可以將各個K-Skyband點的指針存入各個K-Skyband點指針各自所在網(wǎng)格所關聯(lián)的K-Skyband隊列中,將各個候選K-Skyband點的指針存入各個候選K-Skyband點指針各自所在網(wǎng)格所關聯(lián)的候選K-Skyband隊列中。將網(wǎng)格索引每個格子的候選K-Skyband隊列中的指針按照指針對應數(shù)據(jù)的mindist大小升序排列,以使候選K-Skyband隊列的任意指針對應的數(shù)據(jù)的mindist小于排列在該指針后面的指針對應的數(shù)據(jù)的mindist,從而使該指針對應的數(shù)據(jù)不會被排列在該指針后面的指針對應的數(shù)據(jù)支配。這樣,當有舊的K-Skyband點過期時,能確保支配能力較強的候選K-Skyband點優(yōu)先成為新的K-Skyband點,從而避免候選點身份反復變化所帶來的大量支配測試。其中,mindist為一個數(shù)據(jù)或網(wǎng)格索引的一個格子的左下角在所有維度上的值之和。步驟S24:遍歷各個K-Skyband隊列,確定初始全局K-Skyband點的結果集。遍歷各個K-Skyband隊列,獲取所有K-Skyband隊列中的指針,并根據(jù)獲取的指針獲取指針對應的數(shù)據(jù),獲取到的數(shù)據(jù)構成的集合即初始全局K-Skyband點的結果集。再一個實施例請參閱圖4,本實施例示出的是依據(jù)所述滑動窗口讀取到新數(shù)據(jù)后產生的過期數(shù)據(jù)和所述新數(shù)據(jù)對所述當前全局K-Skyband點的結果集進行過期維護和更新維護的一種流程圖,可以包括以下步驟:步驟S41:判斷所述過期數(shù)據(jù)是否為候選K-Skyband點。判斷所述過期數(shù)據(jù)是否為候選K-Skyband點的具體過程為:判斷所述過期數(shù)據(jù)的num屬性值是否大于預先設定的K值,若是,則說明所述過期數(shù)據(jù)為候選K-Skyband點,若否則說明所述過期數(shù)據(jù)為K-Skyband點。在判斷所述過期數(shù)據(jù)為候選K-Skyband點時,執(zhí)行步驟S42,在判斷所述過期數(shù)據(jù)為K-Skyband點時,執(zhí)行步驟S43。步驟S42:在所述滑動窗口中刪除所述過期數(shù)據(jù)。在判斷所述過期數(shù)據(jù)為候選K-Skyband點時,在所述過期數(shù)據(jù)所在的滑動窗口中直接刪除所述過期數(shù)據(jù),在所述過期數(shù)據(jù)所在的滑動窗口中刪除所述過期數(shù)據(jù)的同時,所述過期數(shù)據(jù)的指針也在規(guī)則網(wǎng)格索引中被刪除。步驟S43:依據(jù)所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系和存儲所述過期數(shù)據(jù)的指針的網(wǎng)格更新所述過期數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小并更新所述當前全局K-Skyband點的結果集,將更新后的所述當前全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集。
由于過期數(shù)據(jù)在所述滑動窗口中會被刪除,所以在判斷所述過期數(shù)據(jù)為K-Skyband點時,首先要消除所述過期數(shù)據(jù)對所述過期數(shù)據(jù)關聯(lián)的數(shù)據(jù)的影響,即判斷在刪除所述過期數(shù)據(jù)后,所述過期數(shù)據(jù)關聯(lián)的數(shù)據(jù)中被所述過期數(shù)據(jù)支配的數(shù)據(jù)的num屬性值是否發(fā)生變化。
更新所述過期數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值時要依據(jù)所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系和存儲所述過期數(shù)據(jù)的指針的網(wǎng)格。
步驟S44:確定存儲所述新數(shù)據(jù)的指針的網(wǎng)格,并將所述新數(shù)據(jù)的指針存入規(guī)則網(wǎng)格索引。
在本實施例中,依據(jù)所述新數(shù)據(jù)的屬性確定存儲所述新數(shù)據(jù)的指針的網(wǎng)格,并將所述新數(shù)據(jù)的指針存入規(guī)則網(wǎng)格索引中相應網(wǎng)格中。
步驟S45:依據(jù)所述存儲所述新數(shù)據(jù)的指針的網(wǎng)格、所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系和更新后的所述過期數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小確定所述新數(shù)據(jù)的身份。
步驟S46:在確定所述新數(shù)據(jù)的身份為K-Skyband點后,更新所述新數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小,并根據(jù)更新后的所述新數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小更新所述當前全局K-Skyband點的結果集,并將更新后的所述當前全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集。
具體過程為:首先依據(jù)所述存儲所述新數(shù)據(jù)的指針的網(wǎng)格和所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系,確定所述新數(shù)據(jù)在規(guī)則網(wǎng)格索引中的部分支配區(qū)和完全支配區(qū)。
其次,更新所述新數(shù)據(jù)的完全支配區(qū)中的指針對應的數(shù)據(jù)的num屬性值大小并更新所述新數(shù)據(jù)的完全支配區(qū)中的K-Skyband隊列和候選K-Skyband隊列。
在本實施例中,所述新數(shù)據(jù)的完全支配區(qū)中的K-Skyband隊列中的指針和候選K-Skyband隊列中的指針對應的數(shù)據(jù)都被所述新數(shù)據(jù)支配,因此,所述新數(shù)據(jù)的完全支配區(qū)中的K-Skyband隊列中的指針對應的數(shù)據(jù)的num屬性值加I,候選K-Skyband隊列中的指針對應的數(shù)據(jù)的num屬性值加I。
更新所述新數(shù)據(jù)的完全支配區(qū)中的指針對應的數(shù)據(jù)的num屬性值大小并更新所述新數(shù)據(jù)的完全支配區(qū)中的K-Skyband隊列和候選K-Skyband隊列的具體過程為:
讀取所述新數(shù)據(jù)的完全支配區(qū)中K-SKyband隊列中未被讀取的指針對應的數(shù)據(jù);
將當前讀取到的指針對應的數(shù)據(jù)的num屬性值加I,并將num屬性值加I后的num屬性值作為當前num屬性值;
判斷當前num屬性值是否大于預先設定的K值;
若是,將當前讀取到的指針存入該當前讀取到的指針所在網(wǎng)格所關聯(lián)的候選K-SKyband隊列,返回執(zhí)行讀取所述新數(shù)據(jù)的完全支配區(qū)中K-SKyband隊列中未被讀取的指針對應的數(shù)據(jù),直至所述完全支配區(qū)中K-SKyband隊列中不存在未被讀取的指針;
若否,當前讀取到的指針的位置保持不變,返回執(zhí)行讀取所述新數(shù)據(jù)的完全支配區(qū)中K-SKyband隊列中未被讀取的指針對應的數(shù)據(jù),直至所述完全支配區(qū)中K-SKyband隊列中不存在未被讀取的指針;
讀取所述新數(shù)據(jù)的完全支配區(qū)中候選K-Skyband隊列中未被讀取的指針對應的數(shù)據(jù);將當前讀取到的指針對應的數(shù)據(jù)的屬性值加1,返回執(zhí)行讀取所述新數(shù)據(jù)的完全支配區(qū)中候選K-SKyband隊列中未被讀取的指針對應的數(shù)據(jù),直至所述完全支配區(qū)中候選K-SKyband隊列中不存在未被讀取的指針。然后,更新所述新數(shù)據(jù)的部分支配區(qū)中的指針對應的數(shù)據(jù)的num屬性值大小并更新所述新數(shù)據(jù)的部分支配區(qū)中的K-Skyband隊列和候選K-Skyband隊列。對于所述新數(shù)據(jù)的部分支配區(qū)中的指針對應的數(shù)據(jù),首先判斷是否被所述新數(shù)據(jù)支配,被所述新數(shù)據(jù)支配的數(shù)據(jù)的num屬性值加I。更新所述新數(shù)據(jù)的部分支配區(qū)中的指針對應的數(shù)據(jù)的num屬性值大小并更新所述新數(shù)據(jù)的部分支配區(qū)中的K-Skyband隊列和候選K-Skyband隊列的具體過程為:讀取所述新數(shù)據(jù)的部分支配區(qū)中K-Skyband隊列中未被讀取的指針對應的數(shù)據(jù);判斷當前讀取到的指針對應的數(shù)據(jù)是否被所述新數(shù)據(jù)支配;若是,將當前讀取到的指針對應的數(shù)據(jù)的num屬性值加1,并將加I后的num屬性值作為當前讀取到的指針對應的數(shù)據(jù)的當前num屬性值;判斷當前讀取到的指針的當前num屬性值是否大于預先設定的K值;若是,將當前讀取到的數(shù)據(jù)的指針移動至該當前讀取到的數(shù)據(jù)的指針所在網(wǎng)格所關聯(lián)的候選K-SKyband隊列,返回執(zhí)行讀取所述新數(shù)據(jù)的部分支配區(qū)中K-Skyband隊列中未被讀取的指針對應的數(shù)據(jù),直至所述部分支配區(qū)中K-Skyband隊列中不存在未被讀取的指針;若否,當前讀取到的數(shù)據(jù)的指針的位置保持不變,返回執(zhí)行讀取所述新數(shù)據(jù)的部分支配區(qū)中K-Skyband隊列中未被讀取的指針對應的數(shù)據(jù),直至所述部分支配區(qū)中K-Skyband隊列中不存在未被讀取的指針;讀取所述新數(shù)據(jù)的部分支配區(qū)中候選K-Skyband隊列中未被讀取的指針對應的數(shù)據(jù);判斷當前讀取到的指針對應的數(shù)據(jù)是否被所述新數(shù)據(jù)支配;若是,將當前讀取到的指針對應的數(shù)據(jù)的屬性值加1,返回執(zhí)行讀取所述新數(shù)據(jù)的部分支配區(qū)中候選K-SKyband隊列中未被讀取的指針對應的數(shù)據(jù),直至所述部分支配區(qū)中候選K-SKyband隊列中不存在未被讀取的指針。在所述新數(shù)據(jù)的完全支配區(qū)中的K-Skyband隊列和候選K-Skyband隊列,所述新數(shù)據(jù)的部分支配區(qū)中的K-Skyband隊列和候選K-Skyband隊列完成更新后,對所述新數(shù)據(jù)的完全支配區(qū)中的K-Skyband隊列和部分支配區(qū)中的K-Skyband隊列進行遍歷,將遍歷后得到的結果集合作為當前全局K-Skyband點的結果集。再一個實施例請參閱圖5,圖5示出的是本申請?zhí)峁┑膶Ξ斍叭諯-Skyband點的結果集進行過期維護和更新維護的一種子流程圖,本實施例示出的是依據(jù)所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系和存儲所述過期數(shù)據(jù)的指針的網(wǎng)格更新所述過期數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小并更新所述當前全局K-Skyband點的結果集,將更新后的所述當前全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集的具體過程,可以包括以下步驟:
步驟S51:確定存儲所述過期數(shù)據(jù)的指針的網(wǎng)格。在滑動窗口產生過期數(shù)據(jù)后,需要確定所述過期數(shù)據(jù)的指針存儲在規(guī)則網(wǎng)格索引中的哪個網(wǎng)格中,以利用規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系更新所述過期數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值。步驟S52:依據(jù)所述存儲所述過期數(shù)據(jù)的指針的網(wǎng)格和所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系確定所述過期數(shù)據(jù)在規(guī)則網(wǎng)格索引中的部分支配區(qū)和完全支配區(qū)。在本實施例中,規(guī)則網(wǎng)格索引中網(wǎng)格之間存在已知確定的支配關系,依據(jù)存儲所述過期數(shù)據(jù)的指針的網(wǎng)格和所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系可以確定所述過期數(shù)據(jù)在規(guī)則網(wǎng)格索引中的部分支配區(qū)和完全支配區(qū)。其中,所述過期數(shù)據(jù)在規(guī)則網(wǎng)格索引中的部分支配區(qū)所關聯(lián)的數(shù)據(jù)不一定被所述過期數(shù)據(jù)支配,所以需要判斷所述過期數(shù)據(jù)在所述規(guī)則網(wǎng)格索引中的部分支配區(qū)關聯(lián)的數(shù)據(jù)是否被所述過期數(shù)據(jù)支配,判斷所述過期數(shù)據(jù)在所述規(guī)則網(wǎng)格索引中的部分支配區(qū)關聯(lián)的數(shù)據(jù)是否被所述過期數(shù)據(jù)支配的具體過程參見步驟S53。所述過期數(shù)據(jù)在規(guī)則網(wǎng)格索引中的完全支配區(qū)所關聯(lián)的數(shù)據(jù)一定被所述過期數(shù)據(jù)支配。步驟S53:對所述過期數(shù)據(jù)和所述過期數(shù)據(jù)的部分支配區(qū)中的指針對應的數(shù)據(jù)進行支配比較,確定所述過期數(shù)據(jù)支配的數(shù)據(jù),更新所述過期數(shù)據(jù)支配的數(shù)據(jù)的num屬性值大小并更新所述部分支配區(qū)的K-Skyband點的結果集。所述過期數(shù)據(jù)的部分支配區(qū)包括至少一個網(wǎng)格。所述過期數(shù)據(jù)的部分支配區(qū)所包含的網(wǎng)格的數(shù)據(jù)在未被處理時,所述過期數(shù)據(jù)的部分支配區(qū)所包含的網(wǎng)格均為未遍歷網(wǎng)格。在本實施例中,需要依次判斷所述過期數(shù)據(jù)的部分支配區(qū)所包含的未遍歷網(wǎng)格所關聯(lián)的數(shù)據(jù)是否被所述過期數(shù)據(jù)支配。在處理完一個未遍歷網(wǎng)格所關聯(lián)的數(shù)據(jù)后,該網(wǎng)格即轉換為已遍歷網(wǎng)格,接著處理下一個未遍歷網(wǎng)格。在依次處理未遍歷網(wǎng)格所關聯(lián)的數(shù)據(jù)時,每一次都是處理未遍歷網(wǎng)格中mindist最小的網(wǎng)格。處理未遍歷網(wǎng)格中midsit最小的網(wǎng)格所關聯(lián)的數(shù)據(jù)的具體過程為:讀取當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格中K-Skyband隊列中的指針對應的數(shù)據(jù)中未被處理的數(shù)據(jù),其中在讀取到數(shù)據(jù)時,判斷當前讀取到的數(shù)據(jù)是否被所述過期數(shù)據(jù)支配;若否,該數(shù)據(jù)的num屬性值不發(fā)生改變,若是,由于所述過期數(shù)據(jù)會被刪除,所以該數(shù)據(jù)的num屬性值減I。該數(shù)據(jù)的num屬性值減I后,由于該數(shù)據(jù)的指針存儲在K-Skyband隊列中,因此該數(shù)據(jù)的num屬性值減I后的num屬性值必定不大于預先設定的K值,因此,該數(shù)據(jù)的指針的存儲位置即所在網(wǎng)格不發(fā)生變化。在每處理完所述K-Skyband隊列中的一個數(shù)據(jù)時,均進行判斷當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格中K-Skyband隊列中的指針對應的數(shù)據(jù)中是否存在未被處理的數(shù)據(jù)的操作。若當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格中K-Skyband隊列中的指針對應的數(shù)據(jù)中存在未被讀取的數(shù)據(jù),返回執(zhí)行讀取所述過期數(shù)據(jù)的部分支配區(qū)中未遍歷網(wǎng)格中mindist最小的網(wǎng)格中K-Skyband隊列中的指針對應的數(shù)據(jù)中未被處理的數(shù)據(jù)。
若當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格中K-Skyband隊列中的指針對應的數(shù)據(jù)中不存在未被處理的數(shù)據(jù),貝1J從當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格中候選K-Skyband隊列中的指針對應的數(shù)據(jù)中讀取未被處理的數(shù)據(jù);
判斷當前讀取到的數(shù)據(jù)是否被所述過期數(shù)據(jù)支配;
若否,該數(shù)據(jù)的num屬性值不變,若是,該數(shù)據(jù)的num屬性值減1,并將該數(shù)據(jù)的num屬性值減I后的num屬性值作為該數(shù)據(jù)的當前num屬性值。由于候選K-Skyband隊列中的指針對應的數(shù)據(jù)若被所述過期數(shù)據(jù)支配,則在刪除所述過期數(shù)據(jù)后,候選K-Skyband隊列中被所述過期數(shù)據(jù)支配的數(shù)據(jù)的num屬性值在減I后的,候選K-Skyband隊列中被所述過期數(shù)據(jù)支配的數(shù)據(jù)可能會轉換為K-Skyband點,所以需要判斷該數(shù)據(jù)的num屬性值減I后的當前num屬性值的大小。判斷該數(shù)據(jù)的當前num屬性值的大小即判斷該數(shù)據(jù)的當前num屬性值是否不大于預先設定的K值。
在本實施例中,判斷該數(shù)據(jù)是否為K-Skyband點依據(jù)的原理為:數(shù)據(jù)點p能成為K-Skyband點的充分必要條件是數(shù)據(jù)點P被不多于K個K-Skyband點支配,由判斷該數(shù)據(jù)是否為K-Skyband點依據(jù)的原理可知,判斷該數(shù)據(jù)是否為K-Skyband點,只需判斷該數(shù)據(jù)的num屬性值的大小是否不大于預先設定的K值。
若該數(shù)據(jù)的當前num屬性值不大于預先設定的K值,則說明在刪除所述過期數(shù)據(jù)后,該數(shù)據(jù)由候選K-Skyband點轉換為K-Skyband點,因此將該數(shù)據(jù)的指針移動至該數(shù)據(jù)的指針所在網(wǎng)格所關聯(lián)的K-Skyband隊列。
在本實施例中,可以確定存儲該數(shù)據(jù)的指針的網(wǎng)格即可以確定該數(shù)據(jù)的指針所在網(wǎng)格是哪個網(wǎng)格,并且該數(shù)據(jù)的指針所在網(wǎng)格關聯(lián)一個K-Skyband隊列和一個候選K-Skyband 隊列。
若該數(shù)據(jù)的當前num屬性值大于預先設定的K值,則說明在刪除所述過期數(shù)據(jù)后,該數(shù)據(jù)仍為候選K-Skyband點,該數(shù)據(jù)的指針位置不變,發(fā)生變化的只是該數(shù)據(jù)的num屬性值,該數(shù)據(jù)的num屬性值減I。
在每處理完所述候選K-Skyband隊列中的一個數(shù)據(jù)時,都進行判斷當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格關聯(lián)的候選K-SKyband隊列中的指針對應的數(shù)據(jù)中是否存在未被處理的數(shù)據(jù)的操作。
若當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格關聯(lián)的K-SKyband隊列中的指針對應的數(shù)據(jù)中存在未被處理的數(shù)據(jù),返回執(zhí)行讀取當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格中候選K-Skyband隊列中的指針對應的數(shù)據(jù)中未被處理的數(shù)據(jù)。直至未遍歷網(wǎng)格中mindist最小的網(wǎng)格關聯(lián)的K-SKyband隊列中的指針對應的數(shù)據(jù)中不存在未被處理的數(shù)據(jù)。
在處理完當前未遍歷網(wǎng)格中misdist最小的網(wǎng)格后,該網(wǎng)格即轉換為已處理網(wǎng)格,未遍歷網(wǎng)格的個數(shù)減1,然后對剩余的未遍歷網(wǎng)格中mindist最小的網(wǎng)格所關聯(lián)的數(shù)據(jù)進行處理,直至不存在未遍歷網(wǎng)格。其中對每一個未遍歷網(wǎng)格所關聯(lián)的數(shù)據(jù)進行處理的過程均相同。
步驟S54:更新所述完全支配區(qū)中的指針對應的數(shù)據(jù)的num屬性值大小并更新所述完全支配區(qū)的K-Skyband點的結果集。
在本實施例中,更新所述完全支配區(qū)中的指針對應的數(shù)據(jù)的num屬性值大小并更新所述完全支配區(qū)的K-Skyband點的結果集的具體過程包括:將所述過期數(shù)據(jù)的完全支配區(qū)中未遍歷網(wǎng)格中mindist最小的網(wǎng)格中存儲的指針對應的數(shù)據(jù)num屬性值減I ;判斷當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格關聯(lián)的候選K-Skyband隊列中的指針對應的數(shù)據(jù)在num屬性值減I后的num屬性值大小是否不大于預先設定的K值,若是,將該該數(shù)據(jù)的指針存入該數(shù)據(jù)的指針所在網(wǎng)格所關聯(lián)的K-Skyband隊列;遍歷所述完全支配區(qū)的K-Skyband隊列,將遍歷后的結果集合作為所述完全支配區(qū)當前的K-Skyband點的結果集。再一個實施例請參閱圖6,圖6示出的是本申請?zhí)峁┑膶Ξ斍叭諯-Skyband點的結果集進行過期維護和更新維護的另一種子流程圖,本實施例示出的是確定所述新數(shù)據(jù)的身份的具體過程,可以包括以下步驟:步驟S61:在所述更新后的所述過期數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小的基礎上,依據(jù)存儲所述新數(shù)據(jù)的指針的網(wǎng)格和所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系確定所述新數(shù)據(jù)在所述規(guī)則網(wǎng)格索引中的部分反支配區(qū)和完全反支配區(qū)。所述新數(shù)據(jù)在所述規(guī)則網(wǎng)格索引中的完全反支配區(qū)所關聯(lián)的數(shù)據(jù)必定支配所述新數(shù)據(jù),所述新數(shù)據(jù)在所述規(guī)則網(wǎng)格索引中的部分反支配區(qū)所關聯(lián)的數(shù)據(jù)不一定支配所述新數(shù)據(jù),因此需要判斷所述新數(shù)據(jù)在所述規(guī)則網(wǎng)格索引中的部分反支配區(qū)所關聯(lián)的數(shù)據(jù)是否支配所述新數(shù)據(jù)。在本實施例中,依據(jù)點P能成為K-Skyband點的充分必要條件是P被不多于K個K-Skyband點支配的原理,所述新數(shù)據(jù)的num屬性值的大小即支配所述新數(shù)據(jù)的K-Skyband點的個數(shù)。步驟S62:遍歷所述新數(shù)據(jù)的完全反支配區(qū)中K-Skyband隊列中的指針,確定所述新數(shù)據(jù)的num屬性值大小。在本實施例中,每遍歷所述新數(shù)據(jù)的完全反支配區(qū)中K-Skyband隊列中的一個指針,支配所述新數(shù)據(jù)的K-Skyband點的個數(shù)就增加1,直至遍歷完所述新數(shù)據(jù)的完全反支配區(qū)中K-Skyband隊列中的指針,在遍歷完所述新數(shù)據(jù)的完全反支配區(qū)中K-Skyband隊列中的指針后,所述新數(shù)據(jù)的num屬性值大小為所述新數(shù)據(jù)的完全反支配區(qū)中K-Skyband隊列中的指針的個數(shù)。步驟S63:對所述新數(shù)據(jù)和所述新數(shù)據(jù)的部分反支配區(qū)中K-Skyband隊列中的數(shù)據(jù)進行支配比較,并根據(jù)支配比較的結果更新所述新數(shù)據(jù)的num屬性值大小。在本實施例中,每進行一次支配比較,根據(jù)每次支配比較的結果確定是否要更新所述新數(shù)據(jù)的num屬性值。每當支配比較的結果為所述部分反支配區(qū)中K-Skyband隊列所關聯(lián)的數(shù)據(jù)支配所述新數(shù)據(jù)時,所述新數(shù)據(jù)的num屬性值就更新一次,即所述新數(shù)據(jù)的num屬性值就增加I。在所述部分反支配區(qū)中K-Skyband隊列中的數(shù)據(jù)和所述新數(shù)據(jù)進行最后一次支配比較后,得到的所述新數(shù)據(jù)的num屬性值即所述新數(shù)據(jù)最終更新后的num屬性值。步驟S64:判斷更新后的所述新數(shù)據(jù)的num屬性值大小是否大于預先設定的K值的大小。在確定所述新數(shù)據(jù)最終更新后的num屬性值后,判斷所述新數(shù)據(jù)最終更新后的num屬性值是否大于預先設定的K值,若是,則所述新數(shù)據(jù)為候選K-Skyband點,若否,所述新數(shù)據(jù)為K-Skyband點。再一個實施例在上述方法步驟中,所述滑動窗口的長度也可以不固定,在所述滑動窗口的長度不固定的情況下,本申請?zhí)峁┝伺c圖1示出的一種分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢方法的另一種分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢方法,請參見圖7,圖7示出了本申請?zhí)峁┑囊环N分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢方法的另一種流程圖,可以包括以下步驟:步驟S71:接收不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)。在本實施例中,中央服務器依據(jù)不同數(shù)據(jù)源的數(shù)量,設置相同數(shù)量的緩沖區(qū),且一個緩沖區(qū)對應一個數(shù)據(jù)源,例如,不同數(shù)據(jù)源的數(shù)量為3,且3個數(shù)據(jù)源分別為數(shù)據(jù)源A、數(shù)據(jù)源B和數(shù)據(jù)源C,則中央服務器設置3個緩沖區(qū),分別為緩沖區(qū)A、緩沖區(qū)B和緩沖區(qū)C,且緩沖區(qū)A接收數(shù)據(jù)源A的數(shù)據(jù),緩沖區(qū)B接收數(shù)據(jù)源B的數(shù)據(jù),緩沖區(qū)C接收數(shù)據(jù)源C的數(shù)據(jù)。中央服務器還設置有計數(shù)器,計數(shù)器記錄了各個緩沖區(qū)每次接收到的數(shù)據(jù)的個數(shù)。仍以上述不同數(shù)據(jù)源的數(shù)量為3為例,3個數(shù)據(jù)源分別為數(shù)據(jù)源A、數(shù)據(jù)源B和數(shù)據(jù)源C,中央服務器設置有緩沖區(qū)A、緩沖區(qū)B和緩沖區(qū)C,緩沖區(qū)A對應數(shù)據(jù)源A、緩沖區(qū)B對應數(shù)據(jù)源B和緩沖區(qū)C對應數(shù)據(jù)源C,若緩沖區(qū)A接收數(shù)據(jù)源A首次發(fā)送的數(shù)據(jù)個數(shù)為4,緩沖區(qū)B接收數(shù)據(jù)源B首次發(fā)送的數(shù)據(jù)個數(shù)為3,緩沖區(qū)C接收數(shù)據(jù)源B首次發(fā)送的數(shù)據(jù)個數(shù)為5,計數(shù)器記錄緩沖區(qū)A首次接收數(shù)據(jù)個數(shù)為4,緩沖區(qū)B接收數(shù)據(jù)個數(shù)為3,緩沖區(qū)C接收數(shù)據(jù)個數(shù)為5 ;若緩沖區(qū)A接收數(shù)據(jù)源A第二次發(fā)送的數(shù)據(jù)個數(shù)為5,緩沖區(qū)B接收數(shù)據(jù)源B第二次發(fā)送的數(shù)據(jù)個數(shù)為4,緩沖區(qū)C接收數(shù)據(jù)源C第二次發(fā)送的數(shù)據(jù)個數(shù)為5,則計數(shù)器記錄緩沖區(qū)A第二次接收數(shù)據(jù)個數(shù)為4,緩沖區(qū)B第二次接收數(shù)據(jù)個數(shù)為4,緩沖區(qū)C接收數(shù)據(jù)源C第二次發(fā)送的數(shù)據(jù)個數(shù)為5 ;若緩沖區(qū)A接收數(shù)據(jù)源A第η次發(fā)送的數(shù)據(jù)個數(shù)為mA,緩沖區(qū)B接收數(shù)據(jù)源B第η次發(fā)送的數(shù)據(jù)個數(shù)為mB,緩沖區(qū)C接收數(shù)據(jù)源C第η次發(fā)送的數(shù)據(jù)個數(shù)為m。,則計數(shù)器記錄緩沖區(qū)A第η次接收數(shù)據(jù)個數(shù)mA,緩沖區(qū)B第η次接收數(shù)據(jù)個數(shù)mB,緩沖區(qū)C第η次接收數(shù)據(jù)個數(shù)m。。步驟S72:接收查詢命令,所述查詢命令觸發(fā)滑動窗口連續(xù)逐個讀取接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)。在本實施例中,中央服務器在接收查詢命令后,所述查詢命令觸發(fā)滑動窗口連續(xù)逐個讀取接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù),滑動窗口讀取接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)的具體過程為:首先,讀取計數(shù)器中記錄的各個緩沖區(qū)各自每次接收的數(shù)據(jù)的個數(shù)。然后根據(jù)各個緩沖區(qū)各自每次接收的數(shù)據(jù)個數(shù)從相應緩沖區(qū)中讀取相應個數(shù)的數(shù)據(jù)。例如,計數(shù)器中記錄緩沖區(qū)A首次接收的數(shù)據(jù)個數(shù)為Al,緩沖區(qū)B首次接收的數(shù)據(jù)個數(shù)為BI,緩沖區(qū)C首次接收的數(shù)據(jù)個數(shù)為Cl,則滑動窗口讀取緩沖區(qū)A中的前Al個數(shù)據(jù),讀取緩沖區(qū)B中的前BI個數(shù)據(jù),讀取緩沖區(qū)C中的前Cl個數(shù)據(jù),滑動窗口在預設條件下,執(zhí)行步驟S73,所述預設條件包括讀取完所有緩存區(qū)中首次接收的數(shù)據(jù)即所述滑動窗口讀取完不同數(shù)據(jù)源各自首次發(fā)送的數(shù)據(jù)。步驟S73:依據(jù)當前滑動窗口中的數(shù)據(jù)確定初始全局K-Skyband點的結果集。在本實施例中,依據(jù)當前滑動窗口中的數(shù)據(jù)確定初始全局K-Skyband點的結果集的具體過程和圖2示出的依據(jù)當前滑動窗口中的數(shù)據(jù)確定初始全局K-Skyband點的結果集的具體過程相同,在此不再贅述。
步驟S74:將初始全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集,并將其作為查詢結果輸出。
步驟S74和圖1示出的分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢方法中的步驟S14相同,在此不再贅述。
步驟S75:判斷所述滑動窗口是否讀取到新數(shù)據(jù)。若否,執(zhí)行步驟S76,若是,執(zhí)行步驟S77。
步驟S76:結束。
步驟S77:依據(jù)所述滑動窗口讀取到新數(shù)據(jù)后產生的過期數(shù)據(jù)和所述新數(shù)據(jù)對所述當前全局K-Skyband點的結果集進行過期維護和更新維護。
步驟S78:將對所述當前全局K-Skyband點的結果集進行過期維護和更新維護后確定的全局K-Skyband點的結果集作為查詢結果并輸出。
步驟S79:將對所述當前全局K-Skyband點的結果集進行過期維護和更新維護后確定的全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集并返回執(zhí)行判斷所述滑動窗口是否讀取到新數(shù)據(jù)。
步驟S75、步驟S76、步驟S77、步驟S78和步驟S79與圖1示出的一種分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢方法中的步驟S15、步驟S16、步驟S17、步驟S18和步驟S19相同,在此不再贅述。
在圖7示出的一種分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢方法中輸出查詢結果的另一種實現(xiàn)方式為:滑動窗口在讀取完各個緩沖區(qū)在同次接收的所有數(shù)據(jù)后得到的過期維護和更新維護的結果作為一次查詢結果輸出即在處理完緩沖區(qū)第n+1次接收的所有數(shù)據(jù)后,輸出一次查詢結果。
其中,在處理完緩沖區(qū)第n+1次接收的所有數(shù)據(jù)后,輸出一次查詢結果的具體過程為:
滑動窗口讀取緩沖區(qū)中的數(shù)據(jù)時,讀取所有緩沖區(qū)中第二次接收的數(shù)據(jù)后,再讀取所有緩沖區(qū)中第三次接收的數(shù)據(jù),即滑動窗口讀取緩沖區(qū)中的數(shù)據(jù)時,在讀取所有緩沖區(qū)中第η次接收的數(shù)據(jù)后,再讀取所有緩沖區(qū)中第n+1次接收的數(shù)據(jù)。
滑動窗口逐個讀取各個緩沖區(qū)中各自第n+1次接收的數(shù)據(jù),例如,緩沖區(qū)A第n+1次接收的數(shù)據(jù)個數(shù)為1,緩沖區(qū)B第n+1次接收的數(shù)據(jù)個數(shù)為2,緩沖區(qū)C第n+1次接收的數(shù)據(jù)個數(shù)為3,滑動窗口首先讀取緩沖區(qū)A的數(shù)據(jù),在讀取完緩沖區(qū)A中數(shù)據(jù)后,讀取緩沖區(qū)B中的數(shù)據(jù),在讀取完緩沖區(qū)B中的數(shù)據(jù)后,讀取緩沖區(qū)C中的數(shù)據(jù),在讀取緩沖區(qū)C中的數(shù)據(jù)后,說明滑動窗口讀取完緩沖區(qū)第n+1次接收的所有數(shù)據(jù)。
滑動窗口每從緩沖區(qū)第n+1次接收的數(shù)據(jù)中讀取一個新數(shù)據(jù),就依據(jù)所述滑動窗口讀取到新數(shù)據(jù)后產生的過期數(shù)據(jù)和所述新數(shù)據(jù)對所述當前全局K-Skyband點的結果集進行過期維護和更新維護,將對所述當前全局K-Skyband點的結果集進行過期維護和更新維護后確定的全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集,直至滑動窗口讀取完緩沖區(qū)第n+1次接收的數(shù)據(jù)。
依據(jù)所述滑動窗口讀取到新數(shù)據(jù)后產生的過期數(shù)據(jù)和所述新數(shù)據(jù)對所述當前全局K-Skyband點的結果集進行過期維護和更新維護的具體過程和圖1示出的方法中依據(jù)所述滑動窗口讀取到新數(shù)據(jù)后產生的過期數(shù)據(jù)和所述新數(shù)據(jù)對所述當前全局K-Skyband點的結果集進行過期維護和更新維護的具體過程相同,在此不再贅述。在依據(jù)所述滑動窗口讀取到新數(shù)據(jù)后產生的過期數(shù)據(jù)和所述新數(shù)據(jù)對所述當前全局K-Skyband點的結果集進行過期維護和更新維護,將對所述當前全局K-Skyband點的結果集進行過期維護和更新維護后確定的全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集后,判斷緩沖區(qū)第n+1次接收的數(shù)據(jù)中是否存在未被滑動窗口讀取的數(shù)據(jù),若存在,滑動窗口繼續(xù)從緩沖區(qū)第n+1次接收的數(shù)據(jù)中讀取新數(shù)據(jù),若不存在,將當前全局K-Skyband點的結果集作為第n+1次的查詢結果輸出。滑動窗口將讀取緩沖區(qū)第n+1次接收的數(shù)據(jù)中的最后一個數(shù)據(jù)時對應的過期維護和更新維護后的當前全局K-Skyband點的結果集作為第n+1次的查詢結果輸出。在上述方法步驟,中央服務器接收的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)可以為各個數(shù)據(jù)源上的K-Skyband增量,各個數(shù)據(jù)源上的K-Skyband增量為各個數(shù)據(jù)源在接收到新數(shù)據(jù)時,產生的新的K-Skyband點。具體請參考圖1示出的一種分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢方法中在中央服務器接收不同數(shù)據(jù)源發(fā)送各自的K-Skyband增量的表述,在此不再贅述。與上述實施例相對應,本申請?zhí)峁┝艘环N分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢系統(tǒng)的一種結構圖,請參閱圖8,分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢系統(tǒng)包括:第一接收單元801、第一讀取單元802、第二接收單元803、第一處理單元804、第一輸出單元805、第一判斷單元806、第二處理單元807、第二輸出單元808和第三處理單元809。其中,第一接收單元801用于接收不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)。在本實施例中,第一接收單元801具體用于接收不同數(shù)據(jù)源發(fā)送的K-Skyband增量,所述K-Skyband增量為不同數(shù)據(jù)源上新增加的K-Skyband點,所述K-Skyband點攜帶有所述K-Skyband點的屬性。第一讀取單元802,讀取第一接收單元801接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)。在本實施例中,第一讀取單元802為滑動窗口。其中,滑動窗口的長度可以設置為固定的,也可以設置為不固定。第二接收單元803,用于接收查詢命令,所述查詢命令觸發(fā)滑動窗口連續(xù)逐個讀取接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)。第一處理單元804,用于在所述滑動窗口首次裝滿數(shù)據(jù)或所述滑動窗口讀取數(shù)據(jù)的時長達到預設時間時,依據(jù)當前滑動窗口中的數(shù)據(jù)確定初始全局K-Skyband點的結果集。在本實施例中,第一處理單元804包括:第三處理單元、第四處理單元、第五處理單元和第六處理單元。其中:第三處理單元,用于將所述當前滑動窗口中的數(shù)據(jù)的指針存入所述當前滑動窗口中的數(shù)據(jù)的屬性所對應的規(guī)則網(wǎng)絡索引的網(wǎng)格中。第四處理單元,用于依據(jù)BNL算法對所述滑動窗口中的數(shù)據(jù)進行支配比較,確定K-Skyband點和候選K-Skyband點,所述K-Skyband點的num屬性值不大于預先設定的K值,所述候選K-Skyband點的num屬性值大于預先設定的K值。第五處理單元,用于將所述第四處理單元確定的K-Skyband點的指針存入所述K-Skyband點的指針所在網(wǎng)格所關聯(lián)的K-Skyband隊列,將所述第四處理單元確定的候選K-Skyband點的指針存入所述候選K-Skyband點的指針所在網(wǎng)格所關聯(lián)的候選K-Skyband隊列,所述候選K-Skyband隊列中的指針按照所述指針對應的數(shù)據(jù)的mindist大小升序排列;第六處理單元,用于遍歷所述第五處理單元確定的各個K-Skyband隊列,將遍歷的結果的集合作為初始全局K-Skyband點的結果集。在本實施例中,第一處理單元還用于在所述滑動窗口讀取完不同數(shù)據(jù)源各自首次發(fā)送的數(shù)據(jù)時,依據(jù)當前滑動窗口中的數(shù)據(jù)確定初始全局K-Skyband點的結果集。第一輸出單元805,用于將第一處理單元804確定的初始全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集,并將其作為查詢結果輸出。第一判斷單元806,用于判斷所述滑動窗口是否讀取到新數(shù)據(jù);若是,則觸發(fā)第二處理單元807,若否,則結束。第二處理單元807,用于依據(jù)所述滑動窗口讀取到新數(shù)據(jù)后產生的過期數(shù)據(jù)和所述新數(shù)據(jù)對所述當前全局K-Skyband點的結果集進行過期維護和更新維護。在本實施例中,第二處理單元807包括:第三判斷單元、第七處理單元、第八處理單元、第九處理單元和第十處理單元。其中,第三判斷單元用于判斷所述過期數(shù)據(jù)是否為候選K-Skyband點,若是,觸發(fā)所述滑動窗口刪除所述過期數(shù)據(jù);若否,觸發(fā)第七處理單元。第七處理單元,用于依據(jù)所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系和存儲所述過期數(shù)據(jù)的指針的網(wǎng)格更新所述過期數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小并更新所述當前全局K-Skyband點的結果集,將更新后的所述當前全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集。在本實施例中,第七處理單元包括:第i^一處理單元、第十二處理單元、第十三處理單元和第十四處理單元。其中,第十一處理單元,用于確定存儲所述過期數(shù)據(jù)的指針的網(wǎng)格。第十二處理單元,用于依據(jù)所述存儲所述過期數(shù)據(jù)的指針的網(wǎng)格和所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系確定所述過期數(shù)據(jù)在規(guī)則網(wǎng)格索引中的部分支配區(qū)和完全支配區(qū);第十三處理單元,用于對所述過期數(shù)據(jù)和第十二處理單元確定的部分支配區(qū)中的指針對應的數(shù)據(jù)進行支配比較,確定所述過期數(shù)據(jù)支配的數(shù)據(jù),更新所述過期數(shù)據(jù)支配的數(shù)據(jù)的num屬性值大小并更新所述部分支配區(qū)的K-Skyband點的結果集。在本實施例中,第十三處理單元包括:第二讀取單元、第四判斷單元、第五判斷單元、第三讀取單元、第六判斷單元、第七判斷單元、第十五處理單元和第八判斷單元。其中:第二讀取單元,用于讀取所述過期數(shù)據(jù)的部分支配區(qū)中未遍歷網(wǎng)格中mindist最小的網(wǎng)格中K-Skyband隊列中的指針對應的數(shù)據(jù)中未被處理的數(shù)據(jù)。第四判斷單元,用于判斷第二讀取單元當前讀取到的數(shù)據(jù)是否被所述過期數(shù)據(jù)支配。若否,第二讀取單元當前讀取到的數(shù)據(jù)的num屬性值不變,若是,第二讀取單元當前讀取到數(shù)據(jù)的num屬 性值減I。第五判斷單元,用于判斷當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格中K-Skyband隊列中的指針對應的數(shù)據(jù)中是否存在未被處理的數(shù)據(jù)。
若是,觸發(fā)第二讀取單元,直至當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格中K-Skyband隊列中的指針對應的數(shù)據(jù)中不存在未被處理的數(shù)據(jù),若否,觸發(fā)第三讀取單元。
第三讀取單元,用于讀取當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格中候選K-Skyband隊列中的指針對應的數(shù)據(jù)中未被處理的數(shù)據(jù)。
第六判斷單元,用于判斷第三讀取單元當前讀取到的數(shù)據(jù)是否被所述過期數(shù)據(jù)支配;
若否,第三讀取單元當前讀取到的數(shù)據(jù)的num屬性值不變,若是,第三讀取單元當前讀取到的數(shù)據(jù)的num屬性值減I,并將第三讀取單元當前讀取到的數(shù)據(jù)的num屬性值減I后的num屬性值作為第三讀取單元當前讀取到的數(shù)據(jù)的當前num屬性值;
第七判斷單元,用于判斷第三讀取單元當前讀取到的數(shù)據(jù)的當前num屬性值是否不大于預先設定的K值;
若是,觸發(fā)第十五處理單元;
第十五處理單元,用于將當前num屬性值不大于預先設定的K值的數(shù)據(jù)的指針移動至該數(shù)據(jù)的指針所在網(wǎng)格所關聯(lián)的K-Skyband隊列。
若否,第三讀取單元當前讀取到的數(shù)據(jù)的數(shù)據(jù)的指針位置不變。
第八判斷單元,用于判斷當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格關聯(lián)的候選K-SKyband隊列中的指針對應的數(shù)據(jù)中是否存在未被處理的數(shù)據(jù),若是,觸發(fā)第三讀取單元,若否,觸發(fā)第二讀取單元,直至所述過期數(shù)據(jù)的部分支配區(qū)中不存在未遍歷網(wǎng)格。
第十四處理單元,用于更新第十二處理單元確定的完全支配區(qū)中的指針對應的數(shù)據(jù)的num屬性值大小并更新所述完全支配區(qū)的K-Skyband點的結果集。
在本實施例中,第十四處理單元包括:第十六處理單元、第九判斷單元和第十七處理單元。其中,第十六處理單元,用于對第十二處理單元確定的完全支配區(qū)中未遍歷網(wǎng)格中mindist最小的網(wǎng)格中存儲的指針對應的數(shù)據(jù)num屬性值進行減I操作。
第九判斷單元,用于判斷第十六處理單元當前處理的未遍歷網(wǎng)格中mindist最小的網(wǎng)格關聯(lián)的候選K-Skyband隊列中的指針對應的數(shù)據(jù)在num屬性值減I后的num屬性值大小是否不大于預先設定的K值,若是,將該該數(shù)據(jù)的指針存入該數(shù)據(jù)的指針所在網(wǎng)格所關聯(lián)的K-Skyband隊列。
第十七處理單元,用于遍歷所述完全支配區(qū)的K-Skyband隊列,將遍歷的結果的集合作為所述完全支配區(qū)當前的K-Skyband點的結果集。
第八處理單元,用于確定存儲所述新數(shù)據(jù)的指針的網(wǎng)格,并將所述新數(shù)據(jù)的指針存入規(guī)則網(wǎng)格索引。
第九處理單元,用于依據(jù)存儲所述新數(shù)據(jù)的指針的網(wǎng)格、所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系和所述過期維護的結果確定所述新數(shù)據(jù)的身份。
在本實施例中,第九處理單元包括:第十八處理單元、第十九處理單元、第二十處理單元和第十判斷單元。其中:第十八處理單元,用于在第七處理單元確定的過期維護的結果的基礎上,依據(jù)存儲所述新數(shù)據(jù)的指針的網(wǎng)格和所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系確定所述新數(shù)據(jù)在所述規(guī)則網(wǎng)格索引中的部分反支配區(qū)和完全反支配區(qū)。
第十九處理單元,用于遍歷所述新數(shù)據(jù)的完全反支配區(qū)中K-Skyband隊列中的指針,確定所述新數(shù)據(jù)的num屬性值大小。
第二十處理單元,用于對所述新數(shù)據(jù)和所述新數(shù)據(jù)的部分反支配區(qū)中K-Skyband隊列中的數(shù)據(jù)進行支配比較,并根據(jù)支配比較的結果更新所述新數(shù)據(jù)的num屬性值大小。第十判斷單元,用于判斷第二十處理單元更新后的所述新數(shù)據(jù)的num屬性值大小是否大于預先設定的K值的大小,若是,確定所述新數(shù)據(jù)為候選K-SKyband點,若否,確定所述新數(shù)據(jù)為K-Skyband點。第十處理單元,用于在第九處理單元確定所述新數(shù)據(jù)的身份為K-Skyband點后,更新所述新數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小,并根據(jù)更新后的所述新數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小更新所述當前全局K-Skyband點的結果集,并將更新后的所述當前全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集。在本實施例中,第十處理單元包括:第二i^一處理單元、第二十二處理單元和第二十三處理單元。其中:第二 十一處理單元,用于確定所述新數(shù)據(jù)在規(guī)則網(wǎng)格索引中的部分支配區(qū)和完全支配區(qū)。第二十二處理單元,用于更新第二十一處理單元確定的所述新數(shù)據(jù)的完全支配區(qū)中的指針對應的數(shù)據(jù)的num屬性值大小并更新所述新數(shù)據(jù)的完全支配區(qū)中的K-Skyband隊列和候選K-Skyband隊列。在本實施例中,第二十二處理單元包括:第四讀取單元、第二十四處理單元、第十一判斷單元、第二十五處理單元、第五讀取單元和第二十六處理單元。其中:第四讀取單元,用于讀取第二十一處理單元確定的所述新數(shù)據(jù)的完全支配區(qū)中K-SKyband隊列中未被讀取的指針對應的數(shù)據(jù)。第二十四處理單元,用于將第四讀取單元當前讀取到的指針對應的數(shù)據(jù)的num屬性值加I,并將num屬性值加I后的num屬性值作為當前num屬性值。第十一判斷單元,用于判斷第二十四處理單元確定的當前num屬性值是否大于預先設定的K值,若是,觸發(fā)第二十五處理單元,第二十五處理單元,用于將第四讀取單元當前讀取到的指針存入該當前讀取到的指針所在網(wǎng)格所關聯(lián)的候選K-SKyband隊列,并觸發(fā)第四讀取單元,直至所述完全支配區(qū)中K-SKyband隊列中不存在未被讀取的指針,若否,第四讀取單元當前讀取到的指針的位置保持不變,并觸發(fā)第四讀取單元,直至所述完全支配區(qū)中K-SKyband隊列中不存在未被讀取的指針。第五讀取單元,用于讀取所述新數(shù)據(jù)的完全支配區(qū)中候選K-Skyband隊列中未被讀取的指針對應的數(shù)據(jù)。第二十六處理單元,用于將當前讀取到的指針對應的數(shù)據(jù)的屬性值加1,并觸發(fā)第五讀取單元,直至所述完全支配區(qū)中候選K-SKyband隊列中不存在未被讀取的指針。第二十三處理單元,用于更新第二十一處理單元確定的所述新數(shù)據(jù)的部分支配區(qū)中指針對應的數(shù)據(jù)的num屬性值大小并更新所述新數(shù)據(jù)的部分支配區(qū)中的K-Skyband隊列和候選Κ-Skyband隊列。在本實施例中,第二十三處理單元包括:第六讀取單元、第十二判斷單元、第二十七處理單元、第十三判斷單元、第二十八處理單元、第七讀取單元、第十四判斷單元和第二十九處理單元。其中:第六讀取單元,用于讀取第二十一處理單元確定的所述新數(shù)據(jù)的部分支配區(qū)中K-Skyband隊列中未被讀取的指針對應的數(shù)據(jù)。第十二判斷單元,用于判斷第六讀取單元當前讀取到的指針對應的數(shù)據(jù)是否被所述新數(shù)據(jù)支配,若是,觸發(fā)第二十七處理單元。第二十七處理單元,用于將第六讀取單元當前讀取到的指針對應的數(shù)據(jù)的num屬性值加1,并將加I后的num屬性值作為當前讀取到的指針對應的數(shù)據(jù)的當前num屬性值。第十三判斷單元,用于判斷第五讀取單元當前讀取到的指針對應的數(shù)據(jù)的當前num屬性值是否大于預先設定的K值,若是,觸發(fā)第二十八處理單元。第二十八處理單元,用于將第六讀取單元當前讀取到的數(shù)據(jù)的指針移動至該當前讀取到的數(shù)據(jù)的指針所在網(wǎng)格所關聯(lián)的候選K-Skyband隊列,并觸發(fā)第六讀取單元,直至所述部分支配區(qū)中K-Skyband隊列中不存在未被讀取的指針,若否,第六讀取單元當前讀取到的數(shù)據(jù)的指針的位置保持不變,觸發(fā)第六讀取單元,直至所述部分支配區(qū)中K-Skyband隊列中不存在未被讀取的指針。第七讀取單元用于讀取所述新數(shù)據(jù)的部分支配區(qū)中候選K-Skyband隊列中未被讀取的指針對應的數(shù)據(jù)。第十四判斷單元用于判斷當前讀取到的指針對應的數(shù)據(jù)是否被所述新數(shù)據(jù)支配。若是,將當前讀取到的指針對應的數(shù)據(jù)的屬性值加1,并觸發(fā)第七讀取單元,直至所述部分支配區(qū)中候選K-SKyband隊列中不存在未被讀取的指針。上述系統(tǒng)還包括:第二判斷單元8010,參見圖9,圖9示出的是本申請?zhí)峁┑囊环N分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢系統(tǒng)的另一種結構示意圖。其中,第二判斷單元8010用于判斷是否接收到停止查詢命令,所述停止查詢命令用于停止所述滑動窗口讀取所述接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù);若是,所述滑動窗口停止讀取所述接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù);若否,所述滑動窗口繼續(xù)讀取所述接收 到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)直至讀取完所述接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)。需要說明的是,本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。對于裝置/系統(tǒng)類實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。以上對本申請所提供的一種分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢方法及系統(tǒng)進行了詳細介紹,本文中應用了具體個例對本申請的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領域的一般技術人員,依據(jù)本申請的思想,在具體實施方式
及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本申請的限制。
權利要求
1.一種分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢方法,其特征在于,所述方法包括: 接收不同數(shù)據(jù)源發(fā)送的數(shù)據(jù); 接收查詢命令,所述查詢命令觸發(fā)滑動窗口連續(xù)逐個讀取接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù); 在達到預設條件時,依據(jù)當前滑動窗口中的數(shù)據(jù)確定初始全局K-Skyband點的結果集,所述預設條件包括:所述滑動窗口首次裝滿數(shù)據(jù)或所述滑動窗口讀取數(shù)據(jù)的時長達到預設時間; 將初始全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集,并將其作為查詢結果輸出; 判斷所述滑動窗口是否讀取到新數(shù)據(jù); 若是,則依據(jù)所述滑動窗口讀取到新數(shù)據(jù)后產生的過期數(shù)據(jù)和所述新數(shù)據(jù)對所述當前全局K-Skyband點的結果集進行過期維護和更新維護,并將對所述當前全局K-Skyband點的結果集進行過期維護和更新維護后確定的全局K-Skyband點的結果集作為查詢結果并輸出; 將對所述當前全局K-Skyband點的結果集進行過期維護和更新維護后確定的全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集并返回執(zhí)行判斷所述滑動窗口是否讀取到新數(shù)據(jù); 若否,則結束。
2.根據(jù)權利要求1所述的方法,其特征在于,在所述接收查詢命令后還包括: 判斷是否接收到停止查詢 命令,所述停止查詢命令用于停止所述滑動窗口讀取所述接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù); 若是,所述滑動窗口停止讀取所述接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù); 若否,所述滑動窗口繼續(xù)讀取所述接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)直至讀取完所述接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)。
3.根據(jù)權利要求1所述的方法,其特征在于,所述依據(jù)當前滑動窗口中的數(shù)據(jù)確定初始全局K-Skyband點的結果集包括: 將所述當前滑動窗口中的數(shù)據(jù)的指針存入所述當前滑動窗口中的數(shù)據(jù)的屬性所對應的規(guī)則網(wǎng)絡索引的網(wǎng)格中; 依據(jù)嵌套循環(huán)比較BNL算法對所述滑動窗口中的數(shù)據(jù)進行支配比較,確定K-Skyband點和候選K-Skyband點,所述K-Skyband點的num屬性值不大于預先設定的K值,所述候選K-Skyband點的num屬性值大于預先設定的K值; 將所述K-Skyband點的指針存入所述K-Skyband點的指針所在網(wǎng)格所關聯(lián)的K-Skyband隊列,將所述候選K-Skyband點的指針存入所述候選K-Skyband點的指針所在網(wǎng)格所關聯(lián)的候選K-Skyband隊列,所述候選K-Skyband隊列中的指針按照所述指針對應的數(shù)據(jù)的mindist大小升序排列; 遍歷各個K-Skyband隊列,確定初始全局K-Skyband點的結果集。
4.根據(jù)權利要求1所述的方法,其特征在于,所述則依據(jù)所述滑動窗口讀取到新數(shù)據(jù)后產生的過期數(shù)據(jù)和所述新數(shù)據(jù)對所述當前全局K-Skyband點的結果集進行過期維護和更新維護包括:判斷所述過期數(shù)據(jù)是否為候選K-Skyband點; 若是,在所述滑動窗口中刪除所述過期數(shù)據(jù); 若否,依據(jù)所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系和存儲所述過期數(shù)據(jù)的指針的網(wǎng)格更新所述過期數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小并更新所述當前全局K-Skyband點的結果集,將更新后的所述當前全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集; 確定存儲所述新數(shù)據(jù)的指針的網(wǎng)格,并將所述新數(shù)據(jù)的指針存入規(guī)則網(wǎng)格索引;依據(jù)存儲所述新數(shù)據(jù)的指針的網(wǎng)格、所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系和更新后的所述過期數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小確定所述新數(shù)據(jù)的身份; 在確定所述新數(shù)據(jù)的身份為K-Skyband點后,更新所述新數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小,并根據(jù)更新后的所述新數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小更新所述當前全局K-Skyband點的結果集,并將更新后的所述當前全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集。
5.根據(jù)權利要求4所述的方法,其特征在于,所述依據(jù)所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系和存儲所述過期數(shù)據(jù)的指針的網(wǎng)格更新所述過期數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小并更新所述當前全局K-Skyband點的結果集包括: 確定存儲所述過期數(shù)據(jù)的指針的網(wǎng)格; 依據(jù)所述存儲所述過期數(shù)據(jù)的指針的網(wǎng)格和所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系確定所述過期數(shù)據(jù)在規(guī)則網(wǎng)格索引中的部分支配區(qū)和完全支配區(qū); 對所述過期數(shù)據(jù)和所述過期數(shù)據(jù)的部分支配區(qū)中的指針對應的數(shù)據(jù)進行支配比較,確定所述過期數(shù)據(jù)支配的數(shù)據(jù),更新所述過期數(shù)據(jù)支配的數(shù)據(jù)的num屬性值大小并更新所述部分支配區(qū)的K-Skyband點的結果集; 更新所述完全支配區(qū)中的指針對應的數(shù)據(jù)的num屬性值大小并更新所述完全支配區(qū)的K-Skyband點的結果集。
6.根據(jù)權利要求5所述的方法,其特征在于,所述對所述過期數(shù)據(jù)和所述過期數(shù)據(jù)的部分支配區(qū)中的指針對應的數(shù)據(jù)進行支配比較,確定所述過期數(shù)據(jù)支配的數(shù)據(jù),更新所述過期數(shù)據(jù)支配的數(shù)據(jù)的num屬性值大小并更新所述部分支配區(qū)的K-Skyband點的結果集包括: 讀取所述過期數(shù)據(jù)的部分支配區(qū)中未遍歷網(wǎng)格中mindist最小的網(wǎng)格中K-Skyband隊列中的指針對應的數(shù)據(jù)中未被處理的數(shù)據(jù); 判斷當前讀取到的數(shù)據(jù)是否被所述過期數(shù)據(jù)支配; 若否,該數(shù)據(jù)的num屬性值不變,若是,該數(shù)據(jù)的num屬性值減I ; 判斷當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格中K-Skyband隊列中的指針對應的數(shù)據(jù)中是否存在未被處理的數(shù)據(jù); 若是,繼續(xù)讀取當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格中K-Skyband隊列中的指針對應的數(shù)據(jù)中未被處理的數(shù)據(jù),直至當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格中K-Skyband隊列中的指針對應的數(shù)據(jù)中不存在未被處理的數(shù)據(jù); 若否,從當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格中候選K-Skyband隊列中的指針對應的數(shù)據(jù)中讀取未被處理的數(shù)據(jù);判斷當前讀取到的數(shù)據(jù)是否被所述過期數(shù)據(jù)支配; 若否,該數(shù)據(jù)的num屬性值不變,若是,該數(shù)據(jù)的num屬性值減1,并將該數(shù)據(jù)的num屬性值減I后的num屬性值作為該數(shù)據(jù)的當前num屬性值; 判斷該數(shù)據(jù)的當前num屬性值是否不大于預先設定的K值; 若是,將該數(shù)據(jù)的指針移動至該數(shù)據(jù)的指針所在網(wǎng)格所關聯(lián)的K-Skyband隊列; 若否,該數(shù)據(jù)的指針位置不變; 判斷當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格關聯(lián)的候選K-SKyband隊列中的指針對應的數(shù)據(jù)中是否存在未被處理的數(shù)據(jù); 若是,繼續(xù)讀取當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格中候選K-Skyband隊列中的指針對應的數(shù)據(jù)中未被處理的數(shù)據(jù); 若否,返回執(zhí)行讀取所述過期數(shù)據(jù)的部分支配區(qū)中未遍歷網(wǎng)格中mindist最小的網(wǎng)格中K-Skyband隊列中的指針對應的數(shù)據(jù)中未被處理的數(shù)據(jù),直至所述過期數(shù)據(jù)的部分支配區(qū)中不存在未遍歷網(wǎng)格。
7.根據(jù)權利要求5所述的方法,其特征在于,所述更新所述完全支配區(qū)中的指針對應的數(shù)據(jù)的num屬性值大小并更新所述完全支配區(qū)的K-Skyband點的結果集包括: 將所述過期數(shù)據(jù)的完全支配區(qū)中未遍歷網(wǎng)格中mindist最小的網(wǎng)格中存儲的指針對應的數(shù)據(jù)nu m屬性值減I ; 判斷當前未遍歷網(wǎng)格中mindist最小的網(wǎng)格關聯(lián)的候選K-Skyband隊列中的指針對應的數(shù)據(jù)在num屬性值減I后的num屬性值大小是否不大于預先設定的K值,若是,將該該數(shù)據(jù)的指針存入該數(shù)據(jù)的指針所在網(wǎng)格所關聯(lián)的K-Skyband隊列; 遍歷所述完全支配區(qū)的K-Skyband隊列,將遍歷后的結果集合作為所述完全支配區(qū)當前的K-Skyband點的結果集。
8.根據(jù)權利要求4所述的方法,其特征在于,所述依據(jù)存儲所述新數(shù)據(jù)的指針的網(wǎng)格、所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系和更新后的所述過期數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小確定所述新數(shù)據(jù)的身份包括: 在所述更新后的所述過期數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小的基礎上,依據(jù)存儲所述新數(shù)據(jù)的指針的網(wǎng)格和所述規(guī)則網(wǎng)格索引中網(wǎng)格之間的支配關系確定所述新數(shù)據(jù)在所述規(guī)則網(wǎng)格索引中的部分反支配區(qū)和完全反支配區(qū); 遍歷所述新數(shù)據(jù)的完全反支配區(qū)中K-Skyband隊列中的指針,確定所述新數(shù)據(jù)的num屬性值大??; 對所述新數(shù)據(jù)和所述新數(shù)據(jù)的部分反支配區(qū)中K-Skyband隊列中的數(shù)據(jù)進行支配比較,并根據(jù)支配比較的結果更新所述新數(shù)據(jù)的num屬性值大小; 判斷更新后的所述新數(shù)據(jù)的num屬性值大小是否大于預先設定的K值的大小; 若是,確定所述新數(shù)據(jù)為候選K-SKyband點; 若否,確定所述新數(shù)據(jù)為K-Skyband點。
9.根據(jù)權利要求4所述的方法,其特征在于,所述在確定所述新數(shù)據(jù)的身份為K-Skyband點后,更新所述新數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小,并根據(jù)更新后的所述新數(shù)據(jù)關聯(lián)的數(shù)據(jù)的num屬性值大小更新所述當前全局K-Skyband點的結果集,并將更新后的所述當前全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集包括:確定所述新數(shù)據(jù)在規(guī)則網(wǎng)格索引中的部分支配區(qū)和完全支配區(qū); 讀取所述新數(shù)據(jù)的完全支配區(qū)中K-SKyband隊列中未被讀取的指針對應的數(shù)據(jù);將當前讀取到的指針對應的數(shù)據(jù)的num屬性值加1,并將num屬性值加I后的num屬性值作為當前num屬性值; 判斷當前num屬性值是否大于預先設定的K值; 若是,將當前讀取到的指針存入該當前讀取到的指針的所在網(wǎng)格所關聯(lián)的候選K-SKyband隊列,返回執(zhí)行讀取所述新數(shù)據(jù)的完全支配區(qū)中K-SKyband隊列中未被讀取的指針對應的數(shù)據(jù),直至所述完全支配區(qū)中K-SKyband隊列中不存在未被讀取的指針; 若否,當前讀取到的指針的位置保持不變,返回執(zhí)行讀取所述新數(shù)據(jù)的完全支配區(qū)中K-SKyband隊列中未被讀取的指針對應的數(shù)據(jù),直至所述完全支配區(qū)中K-SKyband隊列中不存在未被讀取的指針; 讀取所述新數(shù)據(jù)的完全支配區(qū)中候選K-Skyband隊列中未被讀取的指針對應的數(shù)據(jù);將當前讀取到的指針對應的數(shù)據(jù)的屬性值加1,返回執(zhí)行讀取所述新數(shù)據(jù)的完全支配區(qū)中候選K-SKyband隊列中未被讀取的指針對應的數(shù)據(jù),直至所述完全支配區(qū)中候選K-SKyband隊列中不存在未被讀取的指針; 讀取所述新數(shù)據(jù)的部分支配區(qū)中K-Skyband隊列中未被讀取的指針對應的數(shù)據(jù); 判斷當前讀取到的指針對應的數(shù)據(jù)是否被所述新數(shù)據(jù)支配; 若是,將當前讀取到的指針對應的數(shù)據(jù)的num屬性值加1,并將加I后的num屬性值作為當前讀取到的指針對應的數(shù)據(jù)的當前num屬性值; 判斷當前讀取到的指針的當前num屬性值是否大于預先設定的K值; 若是,將當前讀取到的數(shù)據(jù)的指針移動至該當前讀取到的數(shù)據(jù)的指針所在網(wǎng)格所關聯(lián)的候選K-SKyband隊列,返回執(zhí)行讀取所述新數(shù)據(jù)的部分支配區(qū)中K-Skyband隊列中未被讀取的指針對應的數(shù)據(jù),直至所述部分支配區(qū)中K-Skyband隊列中不存在未被讀取的指針; 若否,當前讀取到的數(shù)據(jù)的指針的位置保持不變,返回執(zhí)行讀取所述新數(shù)據(jù)的部分支配區(qū)中K-Skyband隊列中未被讀取的指針對應的數(shù)據(jù),直至所述部分支配區(qū)中K-Skyband隊列中不存在未被讀取的指針; 讀取所述新數(shù)據(jù)的部分支配區(qū)中候選K-Skyband隊列中未被讀取的指針對應的數(shù)據(jù); 判斷當前讀取到的指針對應的數(shù)據(jù)是否被所述新數(shù)據(jù)支配; 若是,將當前讀取到的指針對應的`數(shù)據(jù)的屬性值加1,返回執(zhí)行讀取所述新數(shù)據(jù)的部分支配區(qū)中候選K-SKyband隊列中未被讀取的指針對應的數(shù)據(jù),直至所述部分支配區(qū)中候選K-SKyband隊列中不存在未被讀取的指針; 遍歷所述完全支配區(qū)中更新后的K-Skyband隊列和所述部分支配區(qū)中更新后的K-Skyband隊列,將遍歷后的結果集合作為當前全局K-Skyband點的結果集。
10.根據(jù)權利要求1所述的方法,其特征在于,所述接收不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)包括: 接收不同數(shù)據(jù)源發(fā)送的K-Skyband增量,所述K-Skyband增量為不同數(shù)據(jù)源上新增加的K-Skyband點,所述K-Skyband點攜帶有所述K-Skyband點的屬性。
11.根據(jù)權利要求1所述的方法,其特征在于,所述預設條件還包括:所述滑動窗口讀取完不同數(shù)據(jù)源各自首次發(fā)送的數(shù)據(jù)。
12.—種分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢系統(tǒng),其特征在于,所述系統(tǒng)包括: 第一接收單元,用于接收不同數(shù)據(jù)源發(fā)送的數(shù)據(jù); 第一讀取單元,用于讀取所述第一接收單元接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù),所述讀取單元為滑動窗口; 第二接收單元,用于接收查詢命令,所述查詢命令觸發(fā)滑動窗口連續(xù)逐個讀取接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù); 第一處理單元,用于在達到預設條件時,依據(jù)當前滑動窗口中的數(shù)據(jù)確定初始全局K-Skyband點的結果集,所述預設條件包括:所述滑動窗口首次裝滿數(shù)據(jù)或所述滑動窗口讀取數(shù)據(jù)的時長達到預設時間; 第一輸出單元,用于將所述第一處理單元確定的初始全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集,并將其作為查詢結果輸出; 第一判斷單元,用于判斷所述滑動窗口是否讀取到新數(shù)據(jù); 若是,則觸發(fā)第二處理單元; 第二處理單元,用于依據(jù)所述滑動窗口讀取到新數(shù)據(jù)后產生的過期數(shù)據(jù)和所述新數(shù)據(jù)對所述當前全局K-Skyband點的結果集進行過期維護和更新維護; 第二輸出單元,用于將所述第二處理單元對所述當前全局K-Skyband點的結果集進行過期維護和更新維護后確定的全局K-Skyband點的結果集作為查詢結果并輸出; 第三處理單元,用于將所述第二處理單元對所述當前全局K-Skyband點的結果集進行過期維護和更新維護后確定的全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集并觸發(fā)所述第一判斷單元 ; 若否,則結束。
13.根據(jù)權利要求12所述的系統(tǒng),其特征在于,還包括: 第二判斷單元,用于判斷是否接收到停止查詢命令,所述停止查詢命令用于停止所述滑動窗口讀取所述接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù); 若是,所述滑動窗口停止讀取所述接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù); 若否,所述滑動窗口繼續(xù)讀取所述接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)直至讀取完所述接收到的不同數(shù)據(jù)源發(fā)送的數(shù)據(jù)。
14.根據(jù)權利要求12所述的系統(tǒng),其特征在于,所述第一接收單元具體用于接收不同數(shù)據(jù)源發(fā)送的K-Skyband增量,所述K-Skyband增量為不同數(shù)據(jù)源上新增加的K-Skyband點,所述K-Skyband點攜帶有所述K-Skyband點的屬性。
15.根據(jù)權利要求12所述的系統(tǒng),其特征在于,所述第一處理單元還用于在所述滑動窗口讀取完不同數(shù)據(jù)源各自首次發(fā)送的數(shù)據(jù)時,依據(jù)當前滑動窗口中的數(shù)據(jù)確定初始全局K-Skyband點的結果集。
全文摘要
本申請?zhí)峁┝艘环N分布式數(shù)據(jù)流上的K-Skyband連續(xù)查詢方法,由中央服務器接收不同數(shù)據(jù)源發(fā)送的數(shù)據(jù),并由滑動窗口連續(xù)讀取接收到的數(shù)據(jù),然后依據(jù)滑動窗口中的數(shù)據(jù)確定初始全局K-Skyband點的結果集,并將初始全局K-Skyband點的結果集作為當前全局K-Skyband點的結果集,依據(jù)滑動窗口讀取到新數(shù)據(jù)后產生的過期數(shù)據(jù)和所述新數(shù)據(jù)對所述當前全局K-Skyband點的結果集進行過期維護和更新維護,將過期維護和更新維護后的結果作為查詢結果輸出。因此,本申請實現(xiàn)了在分布式數(shù)據(jù)流環(huán)境下進行K-Skyband連續(xù)查詢,擴展了K-Skyband連續(xù)查詢查詢方法的應用領域。
文檔編號G06F17/30GK103177130SQ201310147898
公開日2013年6月26日 申請日期2013年4月25日 優(yōu)先權日2013年4月25日
發(fā)明者趙雷, 詹彥溥 申請人:蘇州大學