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元件進行二次開發來實現分層管理技術。