Oracle數據倉庫分層管理器解決方案

隨着Oracle技術的成熟,尤其是8.15本版後Oracle Spatial的出現,數據倉庫在海量數據存儲、分析和表達方面有着無可比擬的優勢。同時,由於信息量的巨大,傳統的數據存儲和顯示方式在大範圍數據快速瀏覽方面顯得力不從心,這樣有必要改變空間數據的存儲方式,加載需要的空間數據部分,避免不必要數據的反覆加載和卸載。

Oracle數據倉庫分層管理器解決方案

  1、分層管理器架構

分層管理器是實現大範圍數據的快速瀏覽的關鍵部分,它控制了逐層細化表的結構和元數據的定義和賦值,定義了組件表中的關鍵信息,給出了空間數據的來源、數據挖掘規則、圖層加載範圍和圖形編輯、輸出和保存。分層管理器有兩部分組成,分別爲:

a) 一組存儲於Oracle數據倉庫中的空間數據表,用於逐層細化圖層中的每個詳細信息層,這些表稱爲組件表;

b) 一個空表,包含該表的結構定義和描述組件表的特殊元數據,該表稱爲逐層細化表。任何逐層細化應用程序均需要逐層細化表,從中可以瞭解逐層細化圖層中各層的層次關鍵字描述,以及它們之間的層次關聯方式。進行分層時,分層管理器作爲程序的一部分,確定需要添加的子圖元所在的圖層及其關鍵字,以便確定在逐層細化圖層中需要添加和刪除的圖元信息。

逐層細化圖層是一種特殊的地圖圖層,它是有自己表結構的空白圖層,並用元數據規定了所有加載圖層的一些規則和限制,所顯示出來的地圖信息是按照元數據規定的規則從其它表或數據庫中提取出來的。在地圖中顯示逐層細化圖層時,分層管理器會創建一個臨時表,然後將組件表中的圖元複製到該臨時表中。逐層細化圖層中顯示的圖元實際上是組件表中圖元的副本。這樣就可以靈活的在圖層上面加載需要的信息。在應用程序終止時,將丟棄該臨時表,爲了保存有用的專題圖信息,可以對提取出來的圖層進行保存。此時,如果用戶查看圖層信息時,逐層細化圖層仍將是單個圖層。

逐層細化表的要求作爲分層管理器的組織核心部分,它定義了元數據關鍵字和三個標準列:關鍵字、層和標籤。並有着自己的一套語法:

(1) 關鍵字 begin_metadata 標記逐層細化表中元數據部分的開頭。

(2) 每行元數據包含兩個元素:關鍵字和值。所有關鍵字和值均使用雙引號引起來。

(3) 逐層細化表必須包含 IsDrilldown 關鍵字,該關鍵字的值必須爲 True。

(4) 每個關鍵字以“”(反斜線)開頭。

(5) 元數據關鍵字可以在層次結構中嵌套。層次結構中的每一層以反斜線 () 標記。

(6) 元數據包括 DDMapComponentMaps 關鍵字層次結構。在該層次結構中爲每個組件表指定四個元數據關鍵字。

分層管理器的分層原理圖如圖1所示,從圖中可以看出,分層管理器有兩部分組成:組件表和逐層細化表組成,分層管理器根據系統的要求以數據挖掘的方式從 Oracle數據倉庫中提取數據,形成組件表中的某個圖層,然後確定需要加載圖層的名稱和圖層中的部分,並加載到逐層細化表中。如果是第一次加載,此時的逐層細化表是空白圖層,在加載過程中,逐層細化表不斷的進行圖元信息的增加和刪除,這樣會出現每個組件表中的部分信息顯示在逐層細化表所示的圖層中。這樣輸出所需要的圖層,並對它進行編輯,由於逐層細化表中數據是個組件表中的副本,需要對編輯後的圖層進行另存,形成專題圖。

分層管理器首先形成空白圖層,通過分層管理器用數據挖掘工具從Oracle數據倉庫中提取數據,根據分層管理器的元數據規則形成一級的圖層,在該圖層中,通過響應事件,以確定加載二級圖層的圖層名稱和該圖層中的加載部分,相應的`加載三級、四級圖層數據,在加載的同時,就形成了各種專題圖。當然,分層管理器功能的實現是通過GIS組件(MapX、MO、AO等)和編程語言(VB、VC、Delphi等)來實現的。

  2、分層管理器開發步驟

分層管理器應用程序需要進行許多設置和準備。主要步驟彙總如下:

(1)獲取多層逐層細化圖層時要使用的各個表的數據。

(2)創建一個包含特殊列和特殊元數據的新的空逐層細化表( 文件)。元數據爲每個組件表指定一個層名,同時標識組件表中的重要列標識列和標題列。

(3)將逐層細化表加入地圖。例如,將逐層細化表加入您使用的Geoset,或通過編碼方法將逐層細化表加入地圖。

(4)在應用程序中添加用戶界面元素,響應逐層細化事件。

(5)添加代碼,響應用戶對逐層細化工具的使用(也就是說編寫分層管理器)。

(6)該代碼需要檢測用戶已選擇的圖元;確定需要添加的子圖元和需要刪除的圖元;調用應用程序來實現分層或彙總地圖圖元。

  實例分析

由於遙感影響數據量特別巨大,對於數據的存儲、管理、分析和有用圖形部分顯示就顯得非常困難,這需要用關係——對象數據庫對數據進行存儲。在圖形顯示時,爲了使取得有用圖層信息,減少加載時間和提高編輯效率,需要對圖形進行分層顯示,即用到了前面介紹的分層管理器技術。本文用VB作爲編程語言, MapX作爲GIS組件進行二次開發來實現分層管理技術。