複製鏈接
請複製以下鏈接發送給好友

數據優化

鎖定
數據庫是支持知識發現的基礎工程。要獲得高信息含量的、有用的知識,理想情況是原始數據是不含噪聲的正確數據。數據是組成數據庫的基本單元,構建高質量的數據庫,必須對原始數據進行數據預處理,也就是所説的數據優化(EVDO)。
中文名
數據優化
外文名
Data optimization
優化流程
數據採集、數據分析和數據處理
優化模型
SQL優化模型、緩存優化模型等
簡    稱
EVDO
應用學科
計算機科學
通信工程
機械科學

數據優化基本介紹

網絡數據處理是網絡信息計量學的重要組成部分,也是當前網絡界、新聞傳播界、信息管理界都十分關注的熱點研究領域之一。有科學價值的數據庫,應能實現基於數據庫的數據挖掘和科學研究。數據庫是支持知識發現的基礎工程。要獲得高信息含量的、有用的知識,理想情況是原始數據是不含噪聲的正確數據。
數據是組成數據庫的基本單元,構建高質量的數據庫,必須對原始數據進行數據預處理,也就是所説的數據優化。 [1] 

數據優化優化模型

數據分析優化模型
對數據進行分析重組可以很大程度上減少數據轉化過程中的為了轉化而進行的查詢次數,也能最大程度上的提高緩存命中率。首先我們判定哪些字段需要進行轉化。如果僅有一個字段需要轉化,那麼只需將數據根據相關字段進行分組重排。這組數據的字段轉化關係可以完全加入到緩存中。而且可以保證的是這個組的數據處理完畢後,其他的組不會用到這個緩存中的數據。也就是説這個字段被移除緩存後,就不會再加入緩存了。如果有多個字段,就要通過抽樣試驗分析字段問的相關性,按相關性的順序進行數據重組。
程序員在進行數據抽取時只要聲明要轉化字段和相關性字段就可以了。並把它保存在配置文件中。轉化字段非常容易的識別出,但是相關性字段除了一些常識性的可以立刻判斷出,如一個部門的人重疊性很高,一個品牌的汽車重疊性很高。但有很多,用户也無法識別。框架提供了相關性抽樣試驗數據學習方法,抽取三個不相關數據子集,分別進行相關性命中率測試,取命中率平均值。最高的就為最相關的字段。
用户編寫的SQL語句,要先進行語法語義分析。先分析這個SQL有哪些字段。去優化配置文件中找出待轉化字段和相關字段,判斷該SQL是要加入分組條件還是分組加排序條件。第二就是看看該SQL是不是會進行全盤掃描。如果會導致全盤掃描轉化為按照索引進行掃描。最後根據以上兩個方面進行SQL重寫,生成符合要求的SQI,讓取出的數據變得有規律,使得下一步進行數據轉化,緩存命中率大大提高。
1.對文件的分析過程
這部分主要是如果數據源是文本文件,如EXCEL表格時,根據文本類型,調用文本文件的一些操作函數,根據配置文件的規則,對EXCEL按照某些列進行排序,形成有規律的數據。再被引入到系統之中。方法和SQL類似。
2.數據重組
從數據分析模型中已經得知需要按照哪些屬性進行重組,重組屬性的優先級。如果數據源是文件,我們需要對文件進行排序。如果數據源是數據庫,那麼我們需要對查詢SQL按照屬性優先級進行重寫。 [2] 
SQL優化模型
主要是對數據轉化時,有些屬性需要根據從目標數據庫查詢出的數據才能轉化的情況。為了使緩存置換的時間變短,需要對查詢SQL進行優化。經過SQL語句的預處理,將SQL語句分離成片段,找到片段中的各個部分,將片段主體部分拆分出來,根據規則優化SQL語句,還原整個SQL語句6個部分。
1.SQL語句的預處理
在對SQL語句進行分析之前,有必要對它進行一些預處理,這樣能減輕不少後面編程的負擔。預處理的主要工作是對SQL進行標準化,方便後續的處理。標準化是要去空格,統一成小寫格式,多行變為一行
2.將SQL語句分離成片段
預處理後,SQL語句變為我們想要的格式。接下來將這個字符串按照某種限定符分為幾個部分。
3.找到片段中的各個部分
有了表示片段的正則表達式,找到片段後從中分離出片段起始標誌start片段主體body和片段結束標誌end就很容易了。
4.對主體部分進行更深入的分析
5.將片段還原成主體
我們經過前四部分,已經將SQL分析完畢,但我們最終的目的還是將SQL還原,我們的目的是將前四部分分析的記過整合起來
6.優化SQL語句 [2] 
緩存優化模型
和以往系統在初始化時初始緩存不同,這個緩存是業務緩存,且是不斷變換的。需要在數據抽取階段時進行初始化,隨着數據類別的變化,緩存內容也要不斷的進行替換。
如果有多個屬性需要進行轉變。優先級高的屬性使用的緩存不需要置換。而優先級較低的緩存內容需要進行置換。因為置換的內容聯繫性較強。也就是説用到的幾率都是相近的,因此,最近沒被用到的,往往最容易被用到。所以使用LRU置換算法。 [2] 

數據優化優化流程

主要流程分三個方面,分別是數據採集、數據分析和數據處理。下面將分別介緇這三個步驟所要完成的主要功能。
1.數據採集
軟件測試方案生成子系統根據不同的測試部門和不同的測試項目的具體要求確定相應的數據採集範圍,以實時數據和歷史數據作為基礎採集系統運行當中需要的數據。
2.數據分析
對於實時數據,系統將根據輸入的文件或者命令,將其按照給定的設計要求保存到對應的數據變量和數組中,供測試管理人員生成新方案使用。
對於歷史數據,系統需根據不同的數據表內容,分析其中的有用信息,並對其進行深入的分析。
3.數據處理
每次系統運行開始時,對系統中的各種數據進行總結與整理,將其按照系統要去放入對應的變量或者數據表當中,以供下一步工作使用。 [3] 

數據優化批量處理框架

數據優化研究背景

在計算機領域裏,很多系統的開發和使用都離不開準確的數據。而這些數據很多時候都是由別的系統或資源產生和提供的。數據在不同的系統之間雖然內含一致,但表現形勢不同。因此我們往往需要將數據從一個系統導入另一個系統中,而大部分數據需要經過處理後再導入。而這個過程會出現三個問題。
第一個問題是處理速度。如果數據量比較大,或者涉及數據庫表非常多,或者轉化過程邏輯很複雜,或者數據大部分都需要映射。那麼處理數據和導入數據的過程就會佔用大量的時間,在這段時間內很多因素都會導致批量處理過程的失敗,這就造成了系統的不穩定性。而有些批量處理數據過程也需要在短時間完成,以給用户以良好的體驗過程。這個是論文解決的重點。
第二個問題就是導入過程往往是把抽取數據,轉化數據,導入數據過程和它們關聯的業務僅僅聯繫在一起。讓代碼變得耦合性高和雜亂無章。使得批量處理過程沒法擴展和重用。如果出現了一個新的業務的批量數據導入,就要做很多重複工作,甚至重新導數據。人們曾經利用MVC模式的struts框架成功分離了頁面元素和業務邏輯元素。那麼導數據過程也可以利用框架分離準備數據過程和處理數據過程,讓程序員把業務邏輯都寫入一個業務邏輯類中。而取數據,插入數據過程由框架完成。
第三個問題是,在處理數據的過程中,對於過程中處理的異常狀況沒有恰當的處理。最壞的情況下是導完數據後,不知道哪些成功了,哪些失敗了。這樣導數據工作將變得毫無意義。稍微好一點的情況是知道導入失敗的記錄,然後利用記錄去手工調整。這樣雖然最後也能完成批量處理數據過程,但浪費了很多時間。框架會把異常記錄成為異常信息和異常關鍵字兩部分,根據異常信息進行微調,在根據異常關鍵字進行補發。 [2] 

數據優化過程介紹

大批量數據的處理是將數據從一個數據源經過處理和轉化後,同步到另一個數據源的過程。這個過程關注以下問題:從數據源讀取數據,數據的處理,數據的寫入。大批量數據處理過程有以下特點:數據源的多樣性造成取數據方式的多樣性。轉化過程比較複雜,有的設計運算,有時需要查詢,耗費大量時間。同步過程頻繁,如果數據量大,對目標數據庫寫入次數過多,消耗大量時間。
獲取數據是大批量數據處理過程的一個重要組成部分,它負責將分佈的、異構數據源中的數據,如關係數據、數據文件等的數據抽取出來,加載到內存中,以方便對數據發生重要的重構。
數據處理是將源數據轉換為目標數據的關鍵環節。它指的是對於數據源獲取到的數據,經過一系列的轉換來變為目標數據庫需要的數據的過程,通過比較源數據和目標數據的關係,實現了各種複雜的轉換,包括數據格式轉換,數據類型轉換,數據彙總計算,數據拼接等。
數據同步主要是將經過轉換和清洗的數據加載到目標數據庫中,供目標系統使用處理。 [2] 

數據優化系統架構

系統的體系結構圖 系統的體系結構圖 [2]
開發人員利用該框架對大批量數據進行處理進行編程時,通過取數據組件獲取到數據,程序員設置一次性處理的數據量,並確定用什麼樣的規則對數據進行處理和轉化,將數據送入倉庫。另外,程序員需要設置消費者邏輯,如將數據寫入哪個表,並將這個邏輯傳入數據同步組件。剩下的問題程序員都不需要關注,框架會完成整個數據同步過程。如果同步過程是不穩定的,程序員需要調用異常處理函數。保證同步過程的順利進行。
參考資料
  • 1.    林端宜, 徐筱傑, 楊淑靜,等. 中藥數據優化處理探討[J]. 中國中藥雜誌, 2008, 33(19):2291-2293.
  • 2.    李騰. 批量數據優化處理框架的設計和實現[D]. 山東大學, 2015.
  • 3.    王梓權. 軟件測試數據優化系統設計與實現[D]. 西安電子科技大學, 2015.