陳慶榮
(西安航空學院 計算機學院,西安 710077)
由于市場經濟的迅速發展,各行各業對石油資源的需求量逐漸增大,從而給石油地質開發提出了嚴峻的挑戰[1]。隨著石油企業信息化建設的不斷深入,各個企業都在開發各自的數據庫系統,如何正確、有效的處理和使用這些數據,快速生成針對不同石油生產需求主題的信息,越來越成為信息技術人員棘手的問題。
數據庫就是一個用以更好地支持企業決策分析處理的、面向主題的、集成的、不可更新的、隨時間不斷變化的數據集合[2]。聯機分析處理(On_Line Analytical Processing,OLAP)采用多維的方式來組織和顯示數據,其主要特點就是多維數據分析。多維分析是指對以多維形式組織起來的數據采取切片、切塊、旋轉、上卷、下鉆等各種分析動作,以求剖析數據[2]。針對石油企業生產信息的多維數據分析使用戶能多角度、多側面地觀察這些數據,深入地了解數據包含的信息和內涵,用以指導經營生產活動。
根據對石油生產信息數據的特點分析,不同石油生產需求主題的分析方法需要對生產信息數據進行多角度、多側面、多層次地分析查詢,使用OLAP技術進行石油生產信息的數據分析可以提供科學、方便、有效的生產指導,及時發現生產異常,保證油田正常、安全、經濟地運行,進而達到提高開發效率、減少風險和幫助石油企業做出正確決策的目標。
石油生產企業需要對大量的具有自身特點的生產數據進行多維度的不同主題的數據分析是一個相對復雜的過程,這完全有異于其他領域。
石油生產信息特點如下:
1)分散性。因行業特點,企業內部各單位通常比較分散,不同單位的生產信息分別由各單位進行數據的錄入、整理和加工,更有可能存在于不同的數據庫中。
2)多樣性。石油開發的特點導致石油生產信息及數據類型多種多樣。
3)異構性。因石油企業特點,各部門的數據可能存在于不同系統,導致了異構的石油生產數據。
根據對信息數據特點分析及不同主題數據分析的研究,石油生產信息數據倉庫應包括3個基本組成部分:
1)數據獲取:該部分主要負責從外部信息數據源獲取生產信息數據。這些數據被區分出來,進行處理后,準備裝入石油生產信息數據倉庫。
2)數據存儲和管理:該部分主要負責數據倉庫的內部維護和管理,包括數據的存儲組織、數據維護等。
3)數據訪問:該部分屬于石油生產信息數據倉庫的前端,主要包括查詢組織及石油生產信息的多維分析。
數據倉庫數據粒度的劃分主要根據石油生產的業務需要來進行的。在分析業務需要細化程度較高的數據時,數據粒度就劃分為低粒度級;反之,數據倉庫就采用高粒度級的劃分。
石油生產信息數據倉庫的元數據可以被稱為“關于石油生產信息數據的數據”。石油生產信息數據倉庫的元數據實現主要依靠匯總元數據表(表1)、分析類型元數據表(表2)和分析定義元數據表(表3)所示。

表1 匯總元數據表

表2 分析類型元數據表

表3 分析定義元數據表
其中,表1、表2元數據主要包括現有數據的詳細清單、名稱和數據項定義、名稱和定義的關鍵字列表等內容。表3元數據主要包括數據清單索引和訪問關鍵字列、數據生成的操作步驟記錄、數據用于分析的步驟記錄等內容。
石油生產信息數據倉庫中數據的存儲方式主要采取虛擬存儲方式,即虛擬數據倉庫。它沒有專門的數據倉庫數據存儲,數據倉庫中的數據仍在源數據庫中,只是根據用戶的多維需求及形成的多維視圖,臨時在源數據庫中找出所需的數據,完成多維分析。這種存儲方式的優點是實現簡單易行、體積小。
虛擬數據倉庫將多維結構劃分為兩類表,一類是事實表(fact),用來存儲石油生產數據事實的度量值和各個維的碼值;另一類是維表,即維的描述信息,包括維的層次及維成員。如圖1所示。

圖1 星型模型
油井生產數據表為事實表,包含4個維表:區塊維表、井型維表、井別維表和井組維表。在油井生產數據表中分別通過井名代碼、井型代碼、井組代碼以及時間代碼分別可與相應的維表進行連接,形成“星型模式”,完全用二維模式表示了多維數據。建立了“星型模式”后,就可以在關系數據庫中進行多維查詢分析。通過維表的主碼,對事實表和每個維表進行連接操作,此查詢就可以得到數據的值以及對數據的多維描述。
1.3.1 基本概念
1)石油信息數據變量:數據的實際含義,用以描述石油生產信息數據“是什么”。 一般情況,石油信息數據變量總是一個數據值的度量指標。
2)石油信息數據維:觀察生產信息數據的特定角度。例如,某一油井采取了某種措施后產油量隨時間的變化情況,此時就是從措施類別和時間的角度來觀察油井的產油量,故措施類別和時間都是信息數據維。
3)石油信息數據維的層次:觀察石油生產數據的某個角度(即某個維)存在的不同細節程度的描述。同上例,油井某天的產油量,某周的產油量,或某月的產油量。那么此處的日、周、月等等都是時間維的一個層次。
4)石油信息數據維成員:某個石油信息數據維的一個取值就稱為該維的一個維成員。例,時間維具有3個維層次,即日、月、年,那么分別在這3個層次上的取值就是該時間維的一個維成員,例如某年某月某日就是這個時間維的一個維成員。注意:一個維成員不一定在每個維層次上都要取值。
5)石油信息數據多維數組:石油信息數據的一個多維數組可以表示為:(維1,維2,… …,維n,變量)。油田產油量數據是按時間、措施類別、區塊組織起來的三維立方體,加上變量“產油量”就組成了一個石油信息數據多維數組(時間,措施類別,區塊,產油量),如圖2所示。

圖2 石油信息數據多維數組示例圖
6)石油信息數據單元(單元格):石油信息數據多維數組的取值。當多維數組的各個維都選定了一個維成員,這些維成員的組合就唯一確定了一個變量的值,可以表示為(維1維成員,維2維成員,… …,維n維成員,變量的取值)。圖2中,選時間維成員為2016年1月,措施類別維為恢復井,區塊維1區,就確定了一個變量產油量的值15.00,則該石油信息數據單元就可以表示為:(2016年1月,恢復井,1區,15.00)。
1.3.2 基本分析動作
石油生產信息多維數據分析是指根據針對不同石油生產需求主題的相關分析方法,結合數據倉庫技術和聯機分析處理技術,對以多維形式組織起來的石油生產信息數據采取切片、切塊等各種靈活的分析動作,以求深度分析數據,使最終用戶可以從多個角度、多個側面觀察這些數據,從而更為深入的了解石油生產數據的內涵。
石油生產信息多維分析的基本動作:
1)切片(Slice)
定義:選定石油生產信息數據多維數組的一個二維子集的動作叫做切片,即石油生產信息數據多維數組(維1,維2,… …,維n,變量)中選定維i和維j,并在這兩個維上取某一區間或任一維成員,其它維都取確定的一個維成員,則得到的就是在維i和維j上的一個切片,表示為(維i,維j,變量)。
如圖3所示。選定某一石油信息數據多維數組(時間,措施類別,區塊,產油量)中時間維和措施類別維,另一維區塊維取“1區”,則得到了這一石油信息數據多維數組在時間維和措施類別維上的一個切片(時間,措施類別,產油量),這一切片表示1區油井采取各類措施后、各時間段的產油量。

圖3 切片動作示意圖
2)切塊(Dice)
定義:選定石油生產信息數據多維數組的一個三維子集的動作叫做切塊,即石油生產信息數據多維數組(維1,維2,… …,維n,變量)中選定維i、維j和維k,并在這3個維上取某一區間或任一維成員,其它維都取確定的一個維成員,則得到的就是在維i、維j和維k上的一個切塊,表示為(維i,維j,維k,變量)。
基于虛擬倉庫的石油生產信息的多維分析就是通過對石油生產信息數據特點的分析,根據分析主題將石油生產信息數據組織在虛擬倉庫中,通過切片或切塊等分析動作,最終完成對石油生產信息數據的主題分析,從而達到提高石油開發效率、減少風險并幫助石油企業做出正確決策。例如,某油田通過分析系統對區塊、油井、時間等維度的產油量切塊、切片分析發現不同石油生產區的某些油井產油率降低,石油開發部門會根據對這些油井產油率降低的原因進行技術分析,采用某些技術措施以提高產油率。措施實施后一段時間,系統根據對區塊、措施類別、時間等維度的產油率切塊、切片等分析,快速高效的獲取采取措施后的油井產油量變化數據,從而得出在哪個區塊的油井采取哪種技術措施可更好地提高產油量,繼而達到提高開發效率、指導油田科學經濟的運行。
石油生產信息數據倉庫多維數據分析系統結構,如圖4所示。

圖4 石油生產信息數據倉庫多維數據分析系統結構
石油生產信息數據倉庫數據模型定義完后,來自不同數據源的數據將裝入數據倉庫中,接著系統根據業務主題進行相應的數據綜合,最終用戶的多維分析請求通過多維引擎動態翻譯為SQL請求,然后由關系數據庫來處理SQL請求,最后查詢結果經過多維處理后返回給用戶。在石油生產信息數據倉庫多維分析中,由于用戶可以動態的定義統計或計算方式,因此其靈活性較好。
石油生產信息數據倉庫多維數據分析是基于關系數據庫的,因此在數據的存儲容量較大,可以支持的維數也較大。元數據是石油生產信息數據倉庫和多維分析的核心部件,它描述了數據倉庫中的各個對象,遍及數據倉庫的所有方面,包括層次關系、計算轉換信息、時間序列信息、數據更新狀態及數據源,等等。石油生產信息數據倉庫多維數據分析的元數據采用專有格式來存儲。
石油生產信息數據倉庫多維數據分析數據的存取是基于關系數據庫的,石油生產信息數據倉庫用關系表來模擬多維數據。首先用戶的分析請求由石油生產信息多維分析處理器轉化為SQL請求,然后交由RDBMS處理,處理結果經多維處理后返回給用戶。
依據基于虛擬倉庫的石油生產信息多維分析方法,石油生產信息多維分析系統的總體框架,如圖5所示。

圖5 石油生產信息多維分析系統總體框圖
圖5中,事務數據庫采用的是可重用的結構化數據庫,源數據采取由各作業單位直接錄入和按指定格式導入到事務數據庫中。
石油生產信息數據倉庫是面向主題而構建的,是一個面向數據分析型處理的數據環境,其數據組織和數據處理方式都與傳統數據庫有較大需求配置平臺的區別。
石油信息聯機分析服務器是一個經過特殊設計,用于支持和管理多維數據結構的高性能、多用戶的數據處理引擎。多維數據結構是將原始數據按維度進行整理后所得的結果,該結構中的數據項的訪問需根據定義該項的維度成員來訪問。該多維數據結構具有良好的性能,能夠靈活、快速地處理原始數據,并滿足對各種查詢具有一致的響應速度。
客戶端應用程序(查詢、分析)通過石油信息聯機分析服務器提供的統一訪問接口,可以靈活地訪問多維數據。
根據石油生產信息多維分析系統的功能目標,該系統應該包括分析系統管理及分析系統應用兩部分,共有6個功能模塊,如圖6所示。
其中,系統配置模塊和用戶管理模塊屬于分析系統管理部分。分析系統應用部分包括3個核心模塊:分析定義模塊、分析應用模塊和例化分析模塊。分析定義模塊主要負責定義選定的分析類型相關的分析表。分析應用模塊主要負責分析度量、分析維度的設計,以及分析結果的展現。例化分析模塊主要負責對在分析定義和分析應用模塊中經常使用的分析進行實例化,方便用戶對經常要做的分析進行智能化應用。

圖6 石油生產信息多維分析系統功能結構圖
系統采取虛擬數據倉庫結構。在虛擬數據倉庫中并不需要從業務系統中抽取數據到新的數據存儲位置,只是在用戶進行數據倉庫查詢分析操作時,數據倉庫利用描述了業務系統中數據的位置和抽取數據算法的元數據直接從業務系統中抽取查詢的數據進行概括、聚合操作,將最終結果提供給用戶。
石油生產信息多維分析系統數據庫數據表主要包括:系統數據表索引信息表(表4)、分析維定義表(表5)、例化分析表(表6)所示。

表4 syst_TableField(系統數據表索引信息表)
說明:此表為整個系統的所有表的索引信息表。

表5 olapwdyb(分析維定義表)
說明:此表是維度定義信息表。主要牽涉該維度層次的劃分、各層次的具體內容、以及維表相關信息,是石油生產信息多維分析系統的主要分析用表。

表6 olapwsampleb(例化分析表)
說明:此表是例化分析表。主要表明該例化分析的分析類型、例化分析語句、例化分析維度等相關信息,是實現系統實例化分析的主要用表。
根據上述石油生產信息多維分析系統的總體設計、功能目標以及石油生產信息數據倉庫結構和元數據的介紹,數據庫的設計應從實際的需求出發,按照用戶對數據處理的要求,考慮到系統的運行效率、可靠性、可修改性、靈活性、通用性和實用性等各個方面。通過對石油生產信息多維分析系統的特點進行分析,系統的數據庫采用C/S結構,在客戶端面向用戶,接受并行處理任務,進行任務的分解,將任務中需要服務器完成的部分交由數據倉庫服務器進行處理。而數據倉庫服務器只接受客戶端的委托,完成特定的任務,并將結果傳送給客戶端。
Delphi是Borland公司研發的可視化開發工具,采用面向對象的編程語言和基于部件的開發結構,其具有簡單、高效、功能強大的特點,特別是其在數據庫方面適應于多種數據庫結構、更先進的數據庫引擎等特長,可以作為石油生產信息多維分析系統的開發平臺。石油生產信息多維分析系統的虛擬倉庫以Microsoft SQL Server 2005數據庫管理系統為基礎結合系統開發得以實現。
根據石油生產信息多維分析系統設計,要求系統運行的服務器端和客戶端軟硬件配置分別如下:
1)服務器端:
硬件配置要求:CPU為PIII及其以上型號、內存為4G及以上、硬盤容量為500G或以上;
軟件要求:操作系統為Windows2003或以上版本、數據庫管理系統:SQLServer2005。
2)客戶端:
硬件配置要求:CPU Intel i3、1G內存、100G硬盤空間;
軟件要求:操作系統為Windows 7或以上版本。
1)建立了以關系數據庫為基礎的虛擬數據倉庫。在虛擬數據倉庫中并不需要從業務系統中抽取數據到新的數據存儲位置,即數據倉庫中去。只是在用戶進行數據倉庫查詢分析操作時,數據倉庫利用描述了業務系統中數據的位置和抽取數據算法的元數據直接從業務系統中抽取查詢的數據進行概括、聚合操作,將最終結果提供給用戶。
2)以星型多維數據模型為基礎,建立了基于虛擬數據倉庫的石油信息多維分析基本概念和分析動作。
3)依據基于虛擬數據倉庫的石油生產信息的多維分析方法,完成了石油生產信息多維分析系統設計。通過系統設計,進一步建立分析系統,可以完成對石油信息的切片、切塊等多維分析,為石油生產的決策者提供了多角度、多側面、多層次地石油生產數據,從而深入地理解包含在數據中的信息及內涵,用以指導石油企業的經營生產活動,在一定程度上幫助石油生產決策者調整策略、減少風險,做出正確決策。