一種分布式實(shí)時(shí)數(shù)據(jù)快速處理方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及大型分布式工業(yè)控制或試驗(yàn)測試技術(shù)領(lǐng)域,尤其涉及一種分布式實(shí)時(shí) 數(shù)據(jù)快速處理方法。
【背景技術(shù)】
[0002] 目前,許多領(lǐng)域的軟件都涉及到大量的實(shí)時(shí)數(shù)據(jù),在實(shí)時(shí)數(shù)據(jù)增量的獲取和處理 上,雖然當(dāng)今大多數(shù)的數(shù)據(jù)庫可以存儲(chǔ)并查詢到某兩個(gè)時(shí)間戳的數(shù)據(jù)并計(jì)算出增量,但是 存儲(chǔ)并查詢的過程耗時(shí)很長,往往無法滿足客戶對軟件處理速度的要求。例如,目前廣泛使 用的行式數(shù)據(jù)庫,在面對大量實(shí)時(shí)數(shù)據(jù)的增量的獲取和處理時(shí),其速度較慢,無法滿足客戶 的需求。還有其他現(xiàn)有的數(shù)據(jù)庫如列式數(shù)據(jù)庫、鍵值數(shù)據(jù)庫均無法滿足客戶對處理速度的 需求。
[0003]因此,提高面對大量實(shí)時(shí)數(shù)據(jù)的增量的獲取和處理速度具有非常重要的意義,已 成為急需解決的技術(shù)問題。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的在于提供一種分布式實(shí)時(shí)數(shù)據(jù)快速處理方法,通過該方法不僅確保 數(shù)據(jù)的快速查詢、存儲(chǔ)和讀取,也可對分批傳送數(shù)據(jù)進(jìn)行自動(dòng)化整合。
[0005] 為實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是:
[0006] -種分布式實(shí)時(shí)數(shù)據(jù)快速處理方法,其特征在于:建立并利用類環(huán)形的數(shù)據(jù)結(jié)構(gòu) 對實(shí)時(shí)數(shù)據(jù)進(jìn)行存儲(chǔ)。
[0007] 優(yōu)選的,建立的類環(huán)形數(shù)據(jù)結(jié)構(gòu)時(shí)可使用變量控制存儲(chǔ)文件的大小,當(dāng)寫入數(shù)據(jù) 超過存儲(chǔ)文件大小時(shí),寫入的數(shù)據(jù)從該存儲(chǔ)文件頭部繼續(xù)寫入,覆蓋原來的數(shù)據(jù)。
[0008] 優(yōu)選的,采用指定壓縮算法和Zip壓縮算法共同對數(shù)據(jù)進(jìn)行壓縮,減少數(shù)據(jù)的存 儲(chǔ)量以提高數(shù)據(jù)讀寫速度。
[0009] 優(yōu)選的,在內(nèi)存中建立并利用索引查找數(shù)據(jù),可以快速查找某個(gè)時(shí)間戳的數(shù)據(jù),以 便于快速計(jì)算任意一個(gè)時(shí)間戳的數(shù)據(jù)到其他任意一個(gè)時(shí)間戳數(shù)據(jù)的增量。
[0010] 優(yōu)選的,在對數(shù)據(jù)進(jìn)行讀寫時(shí)分別使用lock關(guān)鍵字鎖定來保證當(dāng)一個(gè)線程位于 代碼的臨界區(qū)時(shí),另一個(gè)線程不會(huì)進(jìn)入該臨界區(qū)。
[0011] 本發(fā)明中所提出的分布式實(shí)時(shí)數(shù)據(jù)快速處理方法,至少可以達(dá)到以下有益效果:
[0012] 1)采用環(huán)形存儲(chǔ)結(jié)構(gòu)可以使一個(gè)周期后到達(dá)的數(shù)據(jù)直接覆蓋舊數(shù)據(jù),方便、快捷, 而傳統(tǒng)的數(shù)據(jù)庫存儲(chǔ)方式則需要查找數(shù)據(jù)點(diǎn)進(jìn)行覆蓋,浪費(fèi)了時(shí)間;
[0013] 2)而面對實(shí)時(shí)的海量大數(shù)據(jù),考慮實(shí)際網(wǎng)絡(luò)傳輸?shù)那闆r,為了避免網(wǎng)絡(luò)數(shù)據(jù)傳輸 時(shí)發(fā)生阻塞,該方法可以使同一時(shí)間戳的數(shù)據(jù)分批傳送,因此提供兩種形式的數(shù)據(jù)更新方 式,追加數(shù)據(jù)和新增數(shù)據(jù);
[0014] 3)該方法提供的以索引方式查詢和讀取大數(shù)據(jù)時(shí)所耗費(fèi)的時(shí)間大約是傳統(tǒng)數(shù)據(jù) 庫查詢和讀取大數(shù)據(jù)時(shí)間的七分之一。
【附圖說明】
[0015] 為了更清楚的說明本發(fā)明或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù) 描述中所需要使用的附圖做簡單的介紹,顯而易見,下面描述中的附圖僅僅是本發(fā)明中記 載的一些實(shí)例,對于本領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根 據(jù)這些附圖獲得其他的附圖。
[0016] 圖1為該分布式實(shí)時(shí)數(shù)據(jù)快速處理方法中的各功能組成的示意圖;
[0017] 圖2為該處理方法中功能1的流程圖;
[0018] 圖3為該處理方法中功能2的流程圖;
[0019] 圖4為該處理方法中功能3的流程圖;
[0020] 圖5為該處理方法中功能4的流程圖;
[0021] 圖6為該處理方法中功能7的數(shù)據(jù)壓縮的流程圖;
[0022] 圖7為該處理方法中功能7的數(shù)據(jù)反壓縮的流程圖。
【具體實(shí)施方式】
[0023] 為了使本技術(shù)領(lǐng)域的人員更好的理解本發(fā)明實(shí)施例中的技術(shù)方案,并使本發(fā)明上 述的目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖對本發(fā)明技術(shù)方案作進(jìn)一步詳細(xì) 說明。
[0024] 該分布式實(shí)時(shí)數(shù)據(jù)快速處理方法中的各功能組成如圖1所示,其中包括:功能1, 建立存儲(chǔ)數(shù)據(jù)的文件索引;功能2,將數(shù)據(jù)寫入文件;功能3,查詢某個(gè)時(shí)間戳的數(shù)據(jù);功能 4,計(jì)算某兩個(gè)時(shí)間戳的數(shù)據(jù)增量;功能5,打開文件;功能6,關(guān)閉文件;功能7,數(shù)據(jù)壓縮和 反壓縮。
[0025] 上述這些功能分別由三個(gè)模塊來實(shí)現(xiàn)。
[0026] 其中,操作模塊實(shí)現(xiàn)的功能包括:
[0027] 1)打開文件;
[0028] 2)關(guān)閉文件;
[0029] 3)采用特殊的壓縮算法和Zip壓縮算法同時(shí)對數(shù)據(jù)進(jìn)行壓縮,以及反壓縮。
[0030] 讀寫模塊實(shí)現(xiàn)的功能包括:
[0031] 1)建立存儲(chǔ)數(shù)據(jù)的文件索引;
[0032] 2)將數(shù)據(jù)寫入文件;
[0033] 查詢模塊實(shí)現(xiàn)的功能包括:
[0034] 1)查詢某個(gè)時(shí)間戳數(shù)據(jù);
[0035] 2)計(jì)算某兩個(gè)時(shí)間戳數(shù)據(jù)增量。
[0036] 在以上對分布式實(shí)時(shí)數(shù)據(jù)快速處理方法中,操作模塊執(zhí)行的功能3)提供特殊的 數(shù)據(jù)壓縮算法,減少數(shù)據(jù)的存儲(chǔ)量以提高數(shù)據(jù)的存儲(chǔ)速度。
[0037] (-)讀寫模塊
[0038] 讀寫模塊執(zhí)行的功能1)所述的建立存儲(chǔ)數(shù)據(jù)的文件索引,當(dāng)檢測到某個(gè)路徑的 文件已存在索引時(shí),不再新建一個(gè)索引,而是將原文件的索引讀取于內(nèi)存中,同時(shí)讀取配 額。
[0039] 讀寫模塊執(zhí)行的功能2)所述的將數(shù)據(jù)寫入文件,此功能首先需要判斷將要寫入 的此時(shí)間戳是否已經(jīng)存在于文件之中;若此時(shí)間戳已經(jīng)存在,則進(jìn)行追加新數(shù)據(jù),讀取當(dāng)前 數(shù)據(jù)字節(jié),寫入新增后的數(shù)據(jù)字節(jié),寫入新數(shù)據(jù);若不存在,則進(jìn)行新增數(shù)據(jù),計(jì)算新增數(shù)據(jù) 行的位置,寫入新數(shù)據(jù),最后更新索引。
[0040] 在上述分布式實(shí)時(shí)數(shù)據(jù)快速處理方法中,讀寫模塊執(zhí)行的功能1)和功能2),進(jìn)行 讀寫操作時(shí),分別使用關(guān)鍵字l 〇Ck鎖定來保證當(dāng)一個(gè)線程位于代碼的臨界區(qū)時(shí),另一個(gè)線 程不會(huì)進(jìn)入該臨界區(qū)。
[0041] 功能1創(chuàng)建索引中首先要使用函數(shù)File. Exists ()判斷要打開的路徑上是否已經(jīng) 存在文件,若文件已存在,則讀取已存在文件的索引,具體過程:
[0042]
【主權(quán)項(xiàng)】
1. 一種分布式實(shí)時(shí)數(shù)據(jù)快速處理方法,其特征在于:建立并利用類環(huán)形的數(shù)據(jù)結(jié)構(gòu)對 實(shí)時(shí)數(shù)據(jù)進(jìn)行存儲(chǔ)。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于:建立的類環(huán)形數(shù)據(jù)結(jié)構(gòu)時(shí)可使用變量控 制存儲(chǔ)文件的大小,當(dāng)寫入數(shù)據(jù)超過存儲(chǔ)文件大小時(shí),寫入的數(shù)據(jù)從該存儲(chǔ)文件頭部繼續(xù) 寫入,覆蓋原來的數(shù)據(jù)。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于;采用指定壓縮算法和Zip壓縮算法共同 對數(shù)據(jù)進(jìn)行壓縮,減少數(shù)據(jù)的存儲(chǔ)量W提高數(shù)據(jù)讀寫速度。
4. 根據(jù)權(quán)利要求1所述的方法,其特征在于;在內(nèi)存中建立并利用索引查找數(shù)據(jù),可W 快速查找某個(gè)時(shí)間戳的數(shù)據(jù),W便于快速計(jì)算任意一個(gè)時(shí)間戳的數(shù)據(jù)到其他任意一個(gè)時(shí)間 戳數(shù)據(jù)的增量。
5. 根據(jù)權(quán)利要求1所述的方法,其特征在于:在對數(shù)據(jù)進(jìn)行讀寫時(shí)分別使用lock關(guān)鍵 字鎖定來保證當(dāng)一個(gè)線程位于代碼的臨界區(qū)時(shí),另一個(gè)線程不會(huì)進(jìn)入該臨界區(qū)。
【專利摘要】本發(fā)明提出了一種分布式實(shí)時(shí)數(shù)據(jù)快速處理方法。該方法利用類環(huán)形的數(shù)據(jù)結(jié)構(gòu)進(jìn)行數(shù)據(jù)存儲(chǔ),存儲(chǔ)文件大小可通過變量調(diào)整,并能自動(dòng)進(jìn)行新舊數(shù)據(jù)的自動(dòng)覆蓋,支持不同數(shù)據(jù)源或同一數(shù)據(jù)源采集數(shù)據(jù)的分批接收,通過內(nèi)存索引技術(shù),數(shù)據(jù)查詢速度比傳統(tǒng)數(shù)據(jù)快7倍以上,通過多線程和數(shù)據(jù)鎖技術(shù),實(shí)現(xiàn)大量數(shù)據(jù)的可靠、快速訪問,同時(shí)采用特殊的數(shù)據(jù)壓縮算法和Zip壓縮算法,減少數(shù)據(jù)存儲(chǔ)量,實(shí)現(xiàn)提高數(shù)據(jù)存儲(chǔ)速度。
【IPC分類】G06F9-44, G06F17-30
【公開號】CN104572995
【申請?zhí)枴緾N201510005234
【發(fā)明人】謝吉慧, 王奕榮, 劉暢, 張景川, 朱熙, 王晶, 郄殿福, 陳金明
【申請人】北京衛(wèi)星環(huán)境工程研究所
【公開日】2015年4月29日
【申請日】2015年1月6日