秦志翔,牟 蘭,閆 祎
(大連測控技術研究所,遼寧大連116013)
數據處理有2種不同的方式:操作型處理和分析型處理,也稱作OLTP(聯機事務處理)和OLAP(聯機分析處理)。操作型處理也叫事務處理,是指對數據庫聯機的日常操作,在潛艇噪聲數據庫中通常是對一條噪聲數據的錄入。這種應用要求快速響應錄入人員的請求,對數據的安全性、完整性以及并發性的要求都很高。分析型處理是指對海量數據的查詢和分析操作,在潛艇噪聲分析中一般可以對應噪聲源的分析與噪聲預報,這樣的操作要訪問的數據量非常大,查詢分析過程也十分復雜。二者的差異使得傳統的數據庫技術不能同時滿足這2種數據處理的要求,數據倉庫技術應運而生。
基于OLTP的數據模型如圖1所示,從圖中可以清楚地了解到基于數據操作的各個數據庫是獨立的,用戶關心的是試驗數據能否完整地存儲到數據庫中,存取的效率如何。對于元器件試驗數據庫不用關心存儲到其他設備和目標數據庫中的資料是否與元器件數據庫中的數據相對應。其他2個數據庫同樣不關心其他數據是如何存儲,如此組成的數據庫如果需要日后集成分析做噪聲控制就會出現由于各個數據庫中的數據沒有統一規劃,集成難度大或者根本就無法集成。另外一個方面即使集成到一起了,由于在設計過程中是基于數據事務處理的,數據庫本身只關心錄入數據的高效性與完整性,對于在被測目標中發現問題的科研人員如果想獲得相應的元器件數據或設備數據不得不先通過元器件數據庫或設備數據庫,查詢到元器件或設備的信息,然后再通過對應的試驗類型才能獲得相應的數據。在做統計分析時面臨著同樣的問題,其查詢跨度如此大,其分析效率可想而知。

圖1 基于數據事務處理的船舶噪聲數據庫模型Fig.1 The data model of ship noise based on OLAP
數據倉庫和數據庫只有一字之差,似乎是一樣的概念,但實際則不同。數據倉庫是為了構建新的分析處理環境而出現的一種數據存儲和組織技術,也就是本文構建船舶噪聲控制分析模型要采用的一種技術。數據倉庫和數據庫主要的區別是數據倉庫中的數據具有以下4個基本特征:
1)數據倉庫的數據是面向主題的
數據倉庫需要按照分析的要求確定主題。本文的主題是噪聲控制,這與按照數據錄入要求來組織數據的差別主要在于關心的數據內容不同。如同樣在被測目標數據庫中,科研人員關心的是如何將數據方便快捷的存儲,而在噪聲控制分析中科研人員關心的是同一被測目標在不同的試驗下不同的數據表現形式。
2)數據倉庫的數據是集成的
噪聲控制分析數據倉庫的數據是從原有分散的數據庫數據中抽取來的。其抽取的過程相當復雜,主要表現在以下幾個方面:
噪聲控制分析數據來源于各個分散的元器件數據庫、設備試驗數據庫和被測目標試驗數據庫。而且噪聲控制分析數據不能從原有的3個數據庫系統中直接得到,這主要是因為各個分散數據庫中會出現同名異義、異名同義、單位不統一,字長不一致等情況。分散的數據庫系統中的數據進入數據倉庫之前,必然要經過轉換、統一與綜合。這一步是數據倉庫建設中最關鍵、最復雜的一步,數據倉庫中的數據綜合工作可以在從原有數據庫中抽取數據時生成,也可以在數據倉庫內部通過綜合計算生成。
3)數據倉庫的數據是不可更新的
噪聲控制分析數據倉庫的數據主要供科研人員分析之用,所涉及的數據操作主要是數據查詢,一般情況下不進行聯機實時的修改操作。相反由于噪聲控制數據倉庫的查詢量往往很大,所以就對查詢提出了更高的要求。它要求采用更多的索引技術,因此設計的數據庫的表結構也會存在巨大區別。
4)數據倉庫的數據是隨時間不斷變化的
數據倉庫的數據不可更新是針對已經載入噪聲控制數據倉庫的數據,其內容不能再修改,即在噪聲分析處理數據時不進行數據更新操作。但是噪聲控制數據倉庫并不是一成不變的,它還需要隨時間變化不斷增加新的數據內容,需要不斷分析3個分散數據庫中的數據,最終綜合計算追加到數據倉庫之中。當然也有些數據倉庫需要不斷刪除舊的數據內容,由于船舶生產的周期較長,所以噪聲控制數據倉庫中的數據一般可以保存20~30年,甚至更長,具體問題具體分析。
在船舶的噪聲控制分析中,科研人員希望從多個不同的角度觀察某一指標或多個指標的值,并找出這些指標的關系。科研人員可能想知道某一船舶(被測目標)在不同振動試驗產生的噪聲值,并從多個角度對設備振動產生的噪聲值進行對比分析,如某一被測目標在相同的試驗類型不同試驗壞境下產生的噪聲振動情況;某一船舶在不同試驗類型下的噪聲振動情況;某一船舶在同一次試驗當中起動不同設備時的噪聲振動情況等。可以看到,分析的數據總是與觀察的角度有關。通常將這些觀察數據的角度稱之為維,所以數據倉庫數據是多維數據。對于多維數據模型可以用一個多維立方體來表示,但對于三維以上的多維立方體很難用可視化的方式直觀表達出來。為此,通常用較為形象的“星型模式” (Star Schema)和“雪片模式” (Snow Flake Schema)來描述多維數據模型。
星型模式通常由1個中心表 (事實表)和1組維表組成。如圖2所示,星型模式的中心表是船舶噪聲數據表,其周圍的維表有測試環境維表、使用年限維表、啟動設備維表、生產廠家維表、測試類型維表、試驗類型維表、船舶類型維表、測試系統維表等。

圖2 星型模式Fig.2 Star schema
星型模式的事實表與所有的維表相連,而每個維表只與事實表相連。維表與事實表的連接是通過碼來體現的,如圖3所示。也就是說,在船舶噪聲數據表中一般存儲各個維表的主碼;如測試環境主碼、啟動設備主碼、生產廠家主碼、測試類型主碼、試驗類型主碼、船舶類型主碼、測試系統主碼等。使用年限維一般可以省略,因為在銷售事實表中包含測試時間數據項就可以了。

圖3 星型模式示例Fig.3 Star schema sample
由于圖3中描述的數據粒度通常較粗,無法滿足船舶噪聲控制分析的需要,通常人們將星型模式進一步細化,因此就形成了雪片模式。通常雪片模式就是對維的層次進一步細化后形成的。圖2所示的星型模式測試環境可以按測試地點和海洋環境分類,啟動設備可以按類型和狀態分類,生產廠家維可以按工廠及工廠所在的地區分層,等。通過這樣的變形后,雪片模式就形成了。

圖4 雪片模式Fig.4 Snow flake schema
多維數據模型數據分析時使用的數據視圖屬于邏輯模型。OLAP服務器應該透明地為上層分析軟件和用戶提供多維數據視圖。上層分析軟件和用戶不用關心數據是如何存儲的。本文主要介紹按照ROLAP結構來實現多維數據的管理,ROLAP將多維立方體劃分為2類表,一類是事實表,一類是維表。事實表用來描述和存儲多維立方體的度量值和各個維的碼值。維表用來描述維的信息,包括維的層次和成員類別等。ROLAP用關系數據庫的二維表來表示事實表和維表,即用星型模式和雪片模式來表示多維數據模型。最終可以用1張事實表和8張維表來表示圖4中的雪片模型:
1)船舶噪聲數據表 (日期,測試環境主碼,啟動設備主碼,元器件主碼,測試系統主碼,船舶類型主碼,生產廠家主碼,試驗類型主碼,測試類型主碼,噪聲數據);
2)測試環境 (測試環境主碼,測試地點,海洋環境,……);
3)啟動設備 (啟動設備主碼,設備名稱,設備類型,設備狀態,……);
4)元器件 (元器件主碼,元器件名稱,元器件類型,……);
5)測試系統 (測試系統主碼,測試系統名稱,測試依據,測試儀表,……);
6)船舶類型 (船舶類型主碼,船舶編號,船舶名稱,……);
7)生產廠家 (生產廠家主碼,生產廠家名稱,電話,地址,……);
8)試驗類型 (試驗環境主碼,試驗類型名稱,試驗主辦方,經費,……);
9)測試類型 (測試類型主碼,測試類型名稱,測試方法,測試人員,……);
ROLAP結構用RDBMS或擴展的RDBMS來管理多維數據,用關系表組織和存儲多維數據。同時它將多維立方體上的操作映射為標準的關系操作,因此可以將以上二維表組織完成后直接映射數據庫管理系統之中為上層軟件和用戶提供OLAP服務。
通過本文分析可以得出以下結論:使用傳統數據庫技術針對事務處理設計的船舶噪聲數據模型很難滿足需要大數據量查詢的噪聲控制分析的應用。該結論能夠為日后構建面向分析處理的船舶噪聲數據庫指引方向。同時本文通過利用數據倉庫技術構建了一個基于OLAP的船舶噪聲數據星型模型和雪片模型,并通過ROLAP結構將模型轉化為1個事實表和多個維表。本文建立的模型主要針對船舶噪聲控制設計,稍作細化和改進即可用于建立船舶噪聲控制數據庫。并且上述建立數據模型方法的通用性強,適用于面向分析其他主題的數據庫設計。
[1]王程之,于沨,劉文帥.船舶噪聲測量與分析[M].北京:國防工業出版社,2004.
[2]楊國強,等.Erwin數據建模[M].北京:電子工業出版社,2004.
[3]余珍.艦艇噪聲數據庫的建設[A].第十屆船舶水下噪聲學術討論文集[C].北京:中國造船工程學會,2005.
[4]王珊,李盛恩.數據庫基礎與應用[M].北京:人民郵電出版社,2002.
[5]苗金林,等.船舶噪聲數據庫的設計與實現[J].艦船科學技術,2007,29(4):69-71.MIAO Jin-lin,et al.The design and realization of the ship noise database[J].Ship Science and Technology,2007,29(4):69-71.