專利名稱:一種基于“蓄水池”原理的動態(tài)數(shù)據(jù)存儲與管理方法
技術領域:
本發(fā)明涉及對大量動態(tài)數(shù)據(jù)的實時存儲與管理方法,屬于數(shù)據(jù) 存儲與信息處理領域。
背景技術:
在實際工業(yè)生產(chǎn)過程中,經(jīng)常需要存儲和管理生產(chǎn)過程所產(chǎn)生 的大量的實時數(shù)據(jù)。例如對于油田鉆井過程來說,泥漿泵在關停之 前要工作很長時間。在這段時間內(nèi),隨鉆測量系統(tǒng)會產(chǎn)生數(shù)量龐大 的原始數(shù)據(jù),這為實時存儲和處理隨鉆信號帶來很大的挑戰(zhàn)。另一 方面,生產(chǎn)實際又要求必須維護數(shù)據(jù)的完整性和實時性,這樣才能 對現(xiàn)場工作人員提供及時、準確的井下各種物理參數(shù)數(shù)據(jù),提高工 作決策的正確性。當前國內(nèi)企業(yè)正在使用的國外軟件,采用數(shù)據(jù)庫 容器來存儲和管理實時信號數(shù)據(jù)。其主要過程是首先從串口接受即 時數(shù)據(jù),然后把即時數(shù)據(jù)實時地存放到數(shù)據(jù)庫中,各種后繼操作所 需的數(shù)據(jù)則都從該數(shù)據(jù)庫讀取。這種方法可以較好地保證數(shù)據(jù)的完 整屬性,但是由于數(shù)據(jù)量非常龐大,與之對應的數(shù)據(jù)庫也就非常龐 大,這樣就造成了軟件正常啟動速度、后續(xù)各種操作對即時泥漿信 號數(shù)據(jù)的處理速度都非常緩慢,嚴重破壞了整體實時性,滿足不了 實際生產(chǎn)的需要。如果只采用文件來保存數(shù)據(jù),由于在操作過程中 需要對原始數(shù)據(jù)進行曲線回放,僅僅打開這個文件就有可能把內(nèi)存 資源占完,造成機器處于假死機狀態(tài),而且文件數(shù)據(jù)查詢起來也容 易出錯,這同樣滿足不了實際生產(chǎn)的需要。針對上述問題,本發(fā)明 提出了基于"蓄水池"原理的動態(tài)數(shù)據(jù)存儲與管理方法,并成功地 用于石油鉆井的隨鉆測量系統(tǒng)。發(fā)明內(nèi)容發(fā)明內(nèi)容本發(fā)明的目的失著重解決數(shù)據(jù)存儲的完整性以及數(shù)據(jù)處理與顯 示的實時性問題,提供一種有效的、能夠?qū)Υ罅縿討B(tài)數(shù)據(jù)進行實時 存儲與管理的方法。首先對數(shù)據(jù)完整性和數(shù)據(jù)實時性進行簡單的解釋。數(shù)據(jù)完整性 這一術語用來泛指與損壞和丟失相對的數(shù)據(jù)的狀態(tài),它通常表明數(shù) 據(jù)的可靠與準確性是可以信賴的,同時,在不好的情況下,意味著 數(shù)據(jù)有可能是無效的,或者是不完整的。所謂數(shù)據(jù)的實時性,指的 是即時性,即數(shù)據(jù)信息的處理到結果顯示之間所需的時間要在允許 的范圍之內(nèi)。為了解決數(shù)據(jù)存儲的完整性以及數(shù)據(jù)處理與顯示的實 時性問題,參考日常生活中蓄水池的工作原理,本發(fā)明提出"水池" 容器,"水池"中主要存儲當前數(shù)據(jù),其容量可以動態(tài)變化,這樣 可以保證數(shù)據(jù)操作的實時性;文件的永久保存性(可保存在硬盤中), 可以保證數(shù)據(jù)的完整性。結合使用"水池"容器和文件容器進行數(shù) 據(jù)管理,從而達到優(yōu)勢互補、增強性能的目的。本發(fā)明的目的是通過下述技術方案實現(xiàn)的。本發(fā)明的一種基于"蓄水池"原理的動態(tài)數(shù)據(jù)存儲與管理方法, 利用蓄水池的工作原理,提出了 "水池"容器,并結合使用文件容 器進行動態(tài)數(shù)據(jù)的存儲與管理,采用向量容器做"水池",包含如下 對"水池"的操作-1) 建立"水池"創(chuàng)建一個向量容器,通過調(diào)用向量容器的壓 入函數(shù)把水滴(即數(shù)據(jù)點)注入向量容器進行注水操作,通過調(diào)用 向量容器的刪除函數(shù)進行放水操作;2) 當水池中的水滴(數(shù)據(jù)點)數(shù)量等于或小于若干滴時,關閉 放水閥,只打開注水閥,進入只注不放的狀態(tài);3) 當水池中的水滴數(shù)量大于若干滴時,打開放水閥,進入放水 狀態(tài)。這時要進行向文件容器中存儲原始數(shù)據(jù)的操作。正常的波形 繪制和解碼,也從放水閥處獲得數(shù)據(jù)點;4) 當需要進行暫停操作時,馬上關閉放水閥,在此期間"水池" 只接收數(shù)據(jù)點,不釋放數(shù)據(jù)點,即處于只注水不放水的狀態(tài);5) 當進行追擊操作時,注水與放水同時進行,放水的速度要大 于注水的速度;6) 當水池中的水滴數(shù)量下降到某個值時,就立即把放水的速度 改為等于注水的速度。本發(fā)明用面向?qū)ο缶幊陶Z言中的向量容器設計"水池",它兼有 數(shù)組和鏈表的優(yōu)點。當追擊操作向正常操作過渡的關鍵時刻,可能出現(xiàn)"水池"為 空的情況,而且此時還沒有得到下一個數(shù)據(jù)點,此刻就會造成誤讀 數(shù)據(jù)點的情況,破壞的數(shù)據(jù)的完整性。解決辦法是除了在關泵時, 要把"水池"中的水放空外,在正常運行的情況下,"水池"中的水 量要始終保持在若干滴(如5滴)以上。而這種"水池"容器只能 在程序運行期間對數(shù)據(jù)進行暫時存儲,不能滿足永久保持數(shù)據(jù)的要 求,所以要結合文件容器綜合運用。本發(fā)明所使用的文件容器并不是一個單獨的文件。由于實際生 產(chǎn)過程的周期很長(如幾天時間),在這個過程中產(chǎn)生非常龐大的原 始數(shù)據(jù),采用一個文件存儲所有數(shù)據(jù)是不科學的。而且在操作過程 中,技術人員需要隨時對某一段的原始數(shù)據(jù)進行重新分析(即曲線 回放操作),這時僅僅打開這個文件有可能把內(nèi)存資源占完,造成機 器處于假死機狀態(tài)。針對這種情況,本發(fā)明使用N個較小的文件代 替一個大文件,每一個小文件的容量可以人為設定一個允許的值(如 5M等)。當需要觀察歷史數(shù)據(jù)時,可以方便地進行回放操作,但不影 響對當前和后續(xù)輸入數(shù)據(jù)的采集、存儲與處理。本發(fā)明具有以下優(yōu)點-1、本發(fā)明提出"水池"容器,并結合使用"水池"容器和文件2、本發(fā)明提出一種有效的、能夠?qū)Υ罅縿討B(tài)數(shù)據(jù)進行實時存儲 與管理的方法,可以同時保證數(shù)據(jù)完整性以及實時性的要求,滿足 實際生產(chǎn)的需要。
圖l是數(shù)據(jù)存儲、處理與顯示的流程圖;圖2是文件容器中數(shù)據(jù)誤讀的波形圖;圖3是結合使用"水池"及文件容器的數(shù)據(jù)波形圖。
具體實施方式
下面結合附圖和實施例對本發(fā)明作進一步說明。 實施例本發(fā)明可實施于需要對大量動態(tài)數(shù)據(jù)進行實時存儲與顯示的系 統(tǒng)。在油田鉆井過程中,隨鉆測量儀器跟隨鉆井過程進行數(shù)據(jù)采集、 處理、分析計算、顯示等操作。數(shù)據(jù)量隨著生產(chǎn)的進行在不斷地增 加。如何存儲和管理這樣龐大的原始數(shù)據(jù),同時要滿足技術人員對 數(shù)據(jù)的完整性和實時性提出的要求, 一直是一個沒有很好解決的難 題。采用本發(fā)明提出的"水池"容器技術,并結合使用文件容器進 行數(shù)據(jù)管理,很好地解決了上面的難題。圖1所示的是隨鉆測量系統(tǒng)中數(shù)據(jù)存儲、處理與顯示的流程圖。 X表示外界傳入的當前數(shù)據(jù);串口是一個控件,用來接受當前數(shù)據(jù), 并把此當前數(shù)據(jù)送到"水池"入口處;"水池"有一個入口操作和出 口操作,入口接受數(shù)據(jù),出口把"水池"中的數(shù)據(jù)釋放出來;文件 部分是由多個小文件組成,存儲所有的原始數(shù)據(jù);繪圖是畫N個數(shù) 據(jù)點組成的曲線,顯示數(shù)據(jù)代表的意義等;解碼就是把某段數(shù)據(jù)表示的物理參數(shù)解釋出來。采用"水池"容器存儲技術,并結合使用文件容器的數(shù)據(jù)管理方 法如下1) 首先打開注水閥,然后開泵,當前"水滴"數(shù)量等于小于5 滴時關閉放水閥,進入只注不放的狀態(tài)。用程序?qū)崿F(xiàn)就是只調(diào)用向 量容器的數(shù)據(jù)壓入函數(shù)。2) 當水池中的"水滴"數(shù)量大于5滴時,打開放水閥,進入放 水狀態(tài),也就是調(diào)用向量容器的數(shù)據(jù)刪除函數(shù)。這時要進行向文件 容器中存儲原始數(shù)據(jù)的操作。正常的波形繪制和解碼,也從放水閥 處獲得數(shù)據(jù)點。3) 當需要進行暫停操作時,馬上關閉放水閥,在此期間"水池" 只接收數(shù)據(jù)點,不釋放數(shù)據(jù)點,即處于只注水不放水的狀態(tài)。4) 當進行追擊操作時,注水與放水同時進行,放水的速度要大 于注水的速度。5) 當水池中的水滴數(shù)量下降到5時,就立即把放水的速度改為 等于注水的速度。本應用實例中串口向"水池"中注水的速度是50ms —個數(shù)據(jù)點。 由于當程序處于追擊狀態(tài)之前一定有一個暫停狀態(tài),所以當進行追 擊操作時,"水池"中"水滴"的數(shù)量一定是大于5的。為了盡量減 少追擊所用的時間,需要具有最大的放水速度,根據(jù)工作計算機的 硬件性能,在本應用實例中是lms讀一個數(shù)據(jù)點。這樣在最大限度 內(nèi)保持了參數(shù)解碼結果顯示的實時性。在隨鉆測量過程中,需要進行SYN、 FID、 PLAY等操作。SYN操 作是當同步信號未捕捉到時,需要放寬條件重新進行捕捉的操作; FID是同步信號正確,工作方式(FID)信號由于噪聲干擾使解碼結 果產(chǎn)生錯誤,此時需要人為校正;PLAY操作是當工作人員在暫停狀7態(tài)觀察分析波形及參數(shù)結果后,不需要進行SYN和FID等操作而進 行的繼續(xù)動作。這些操作都包含了暫停、追擊等操作。在使用數(shù)據(jù)庫方法存儲數(shù)據(jù)時,由于其數(shù)據(jù)量非常龐大,這樣 就造成了軟件正常啟動速度、后續(xù)各種操作對即時數(shù)據(jù)的處理速度 都非常緩慢,嚴重破壞了整體實時性,滿足不了實際生產(chǎn)的需要。 鑒于數(shù)據(jù)庫方法在數(shù)據(jù)顯示的實時性方面性能比較差,因此下面只 對只使用文件容器和結合使用"水池"及文件容器的實驗結果進行 比較。1) 文件容器方法創(chuàng)建一個臨時文件作容器來存儲從暫停后到 追擊結束期間的串口接受的所有數(shù)據(jù)點。當暫停時,程序建立臨時 文件,并且串口同時向臨時文件寫數(shù)據(jù),停止其它操作。當進入追 擊狀態(tài)時,程序同時也就開始了波形繪制、參數(shù)解碼,參數(shù)顯示等 等操作。此時追擊結束的條件是,讀到臨時文件的未尾。為了準確快捷地讀出數(shù)據(jù),對臨時文件中數(shù)據(jù)的格式做一規(guī)定每行存儲一個數(shù)據(jù),這樣就要求在每行存完后有一個換行的操作。 如果在換行前,追擊操作恰好完成,此時參數(shù)就可以正確解出,否 則就會出現(xiàn)多讀一個空行的操作,即多讀一個零值,這在在實際工 作中是不允許出現(xiàn)的。參見圖2,可以看出后面的參數(shù)都未能解出,此方法造成了嚴重的錯誤。波形右端出現(xiàn)的白色豎線,表明繪制操作從臨時文件的未 尾多讀了一個零值。2) "水池"及文件容器結合方法利用本發(fā)明的方法,創(chuàng)建一個"水池"來存儲從暫停后到追擊結束期間的串口接受的所有數(shù)據(jù) 點。當暫停時,"水池"只關閉放水閥,放水閥打開狀態(tài)不變,接受 從串口輸入的數(shù)據(jù)點,程序停止其它操作。當進入追擊狀態(tài)時,"水池"放水閥打開,程序同時也就開始了波形繪制、參數(shù)解碼,參數(shù) 顯示等操作。此時追擊結束的條件是,"水池"中剩下水滴量是一個 固定大小的值。采用這種方法,除停泵之外,"水池"在其它任何狀態(tài)下,都有 一部分儲量,保證了每一次從"水池"中都能正確地讀到一個有效 的數(shù)據(jù)點,很好地避免了誤讀數(shù)據(jù)點的情況發(fā)生。由于現(xiàn)場技術人員需要不斷査詢和觀察過去的數(shù)據(jù),因此還要 把這些數(shù)據(jù)存入文件。為了保證數(shù)據(jù)整體性同時又使數(shù)據(jù)查詢方便, 本發(fā)明采用多個文件代替一個文件。在本應用實例中,每一個文件的容量可設定為1M字節(jié)。當進行回放操作時,可以立即關閉當前文 件,立即產(chǎn)生一個新的文件用以存儲其后串口接受的數(shù)據(jù)。這樣曲 線回放操作可以回放除當前文件以外的其它波形,這樣不僅可以看 歷次的開關泵的數(shù)據(jù)波形,也可以看本次開泵后的數(shù)據(jù),提高了實 時性性能。曲線回放操作對實時性要求不高,但在暫停、"追擊"等 操作對實時性擁有嚴格的要求,此時用一個單獨的臨時的文件容器 去存儲這部分數(shù)據(jù)點。當處理暫停狀態(tài)時,就向這個臨時的文件容 器存儲數(shù)據(jù),當前處于追擊狀態(tài)時,在向這文件容器存儲數(shù)據(jù)的同 時,要讀數(shù)據(jù),直至讀完,完成追擊任務過渡到正常繪制波形和解 碼狀態(tài)。結果如圖3所示。經(jīng)過多次鉆井現(xiàn)場實驗證明,這種方法是理想的、滿足鉆井現(xiàn) 場實際需要的最佳數(shù)據(jù)管理方法。
權利要求
1.一種基于“蓄水池”原理的動態(tài)數(shù)據(jù)存儲與管理方法,利用蓄水池的工作原理,提出了“水池”容器,并結合使用文件容器進行動態(tài)數(shù)據(jù)的存儲與管理,其特征在于采用向量容器做“水池”,包含如下對“水池”的操作1)建立“水池”創(chuàng)建一個向量容器,通過調(diào)用向量容器的壓入函數(shù)把水滴(即數(shù)據(jù)點)注入向量容器進行注水操作,通過調(diào)用向量容器的刪除函數(shù)進行放水操作;2)當水池中的水滴(數(shù)據(jù)點)數(shù)量等于或小于若干滴時,關閉放水閥,只打開注水閥,進入只注不放的狀態(tài);3)當水池中的水滴數(shù)量大于若干滴時,打開放水閥,進入放水狀態(tài)。這時要進行向文件容器中存儲原始數(shù)據(jù)的操作。正常的波形繪制和解碼,也從放水閥處獲得數(shù)據(jù)點;4)當需要進行暫停操作時,馬上關閉放水閥,在此期間“水池”只接收數(shù)據(jù)點,不釋放數(shù)據(jù)點,即處于只注水不放水的狀態(tài);5)當進行追擊操作時,注水與放水同時進行,放水的速度要大于注水的速度;6)當水池中的水滴數(shù)量下降到某個值時,就立即把放水的速度改為等于注水的速度。
全文摘要
本發(fā)明是一種基于“蓄水池”原理的動態(tài)數(shù)據(jù)存儲與管理方法,涉及對大量動態(tài)數(shù)據(jù)的實時存儲與管理,屬于數(shù)據(jù)存儲與信息處理領域。本發(fā)明針對單純使用數(shù)據(jù)庫或文件容器在完整性和實時性方面所存在的問題,本發(fā)明提出了“水池”容器的思想。把數(shù)據(jù)分別存儲到“水池”容器和文件容器中?!八亍敝兄饕鎯Ξ斍皵?shù)據(jù),水池容量是動態(tài)變化的,從而保證數(shù)據(jù)處理及結果顯示的實時性。使用多個文件來保存原始數(shù)據(jù),從而保證數(shù)據(jù)存儲的完整性和歷史回放的快捷性與準確性。這種存儲與管理大量動態(tài)數(shù)據(jù)的方法,即能保證數(shù)據(jù)的完整性,又能兼顧數(shù)據(jù)的實時性,取得了比較理想的實用效果。
文檔編號G06F17/30GK101609446SQ20081010592
公開日2009年12月23日 申請日期2008年5月7日 優(yōu)先權日2008年5月7日
發(fā)明者張保軍, 巍 王, 趙清杰 申請人:北京理工大學