- 相關(guān)推薦
Oracle數據倉庫分層管理器解決方案
隨著(zhù)Oracle技術(shù)的成熟,尤其是8.15本版后Oracle Spatial的出現,數據倉庫在海量數據存儲、分析和表達方面有著(zhù)無(wú)可比擬的優(yōu)勢。同時(shí),由于信息量的巨大,傳統的數據存儲和顯示方式在大范圍數據快速瀏覽方面顯得力不從心,這樣有必要改變空間數據的存儲方式,加載需要的空間數據部分,避免不必要數據的反復加載和卸載。
1、分層管理器架構
分層管理器是實(shí)現大范圍數據的快速瀏覽的關(guān)鍵部分,它控制了逐層細化表的結構和元數據的定義和賦值,定義了組件表中的關(guān)鍵信息,給出了空間數據的來(lái)源、數據挖掘規則、圖層加載范圍和圖形編輯、輸出和保存。分層管理器有兩部分組成,分別為:
a) 一組存儲于Oracle數據倉庫中的空間數據表,用于逐層細化圖層中的每個(gè)詳細信息層,這些表稱(chēng)為組件表;
b) 一個(gè)空表,包含該表的結構定義和描述組件表的特殊元數據,該表稱(chēng)為逐層細化表。任何逐層細化應用程序均需要逐層細化表,從中可以了解逐層細化圖層中各層的層次關(guān)鍵字描述,以及它們之間的層次關(guān)聯(lián)方式。進(jìn)行分層時(shí),分層管理器作為程序的一部分,確定需要添加的子圖元所在的圖層及其關(guān)鍵字,以便確定在逐層細化圖層中需要添加和刪除的圖元信息。
逐層細化圖層是一種特殊的地圖圖層,它是有自己表結構的空白圖層,并用元數據規定了所有加載圖層的一些規則和限制,所顯示出來(lái)的地圖信息是按照元數據規定的規則從其它表或數據庫中提取出來(lái)的。在地圖中顯示逐層細化圖層時(shí),分層管理器會(huì )創(chuàng )建一個(gè)臨時(shí)表,然后將組件表中的圖元復制到該臨時(shí)表中。逐層細化圖層中顯示的圖元實(shí)際上是組件表中圖元的副本。這樣就可以靈活的在圖層上面加載需要的信息。在應用程序終止時(shí),將丟棄該臨時(shí)表,為了保存有用的專(zhuān)題圖信息,可以對提取出來(lái)的圖層進(jìn)行保存。此時(shí),如果用戶(hù)查看圖層信息時(shí),逐層細化圖層仍將是單個(gè)圖層。
逐層細化表的要求作為分層管理器的組織核心部分,它定義了元數據關(guān)鍵字和三個(gè)標準列:關(guān)鍵字、層和標簽。并有著(zhù)自己的一套語(yǔ)法:
(1) 關(guān)鍵字 begin_metadata 標記逐層細化表中元數據部分的開(kāi)頭。
(2) 每行元數據包含兩個(gè)元素:關(guān)鍵字和值。所有關(guān)鍵字和值均使用雙引號引起來(lái)。
(3) 逐層細化表必須包含 \IsDrilldown 關(guān)鍵字,該關(guān)鍵字的值必須為 True。
(4) 每個(gè)關(guān)鍵字以“\”(反斜線(xiàn))開(kāi)頭。
(5) 元數據關(guān)鍵字可以在層次結構中嵌套。層次結構中的每一層以反斜線(xiàn) (\) 標記。
(6) 元數據包括 \DDMap\ComponentMaps\ 關(guān)鍵字層次結構。在該層次結構中為每個(gè)組件表指定四個(gè)元數據關(guān)鍵字。
分層管理器的分層原理圖如圖1所示,從圖中可以看出,分層管理器有兩部分組成:組件表和逐層細化表組成,分層管理器根據系統的要求以數據挖掘的方式從 Oracle數據倉庫中提取數據,形成組件表中的某個(gè)圖層,然后確定需要加載圖層的名稱(chēng)和圖層中的部分,并加載到逐層細化表中。如果是第一次加載,此時(shí)的逐層細化表是空白圖層,在加載過(guò)程中,逐層細化表不斷的進(jìn)行圖元信息的增加和刪除,這樣會(huì )出現每個(gè)組件表中的部分信息顯示在逐層細化表所示的圖層中。這樣輸出所需要的圖層,并對它進(jìn)行編輯,由于逐層細化表中數據是個(gè)組件表中的副本,需要對編輯后的圖層進(jìn)行另存,形成專(zhuān)題圖。
分層管理器首先形成空白圖層,通過(guò)分層管理器用數據挖掘工具從Oracle數據倉庫中提取數據,根據分層管理器的元數據規則形成一級的圖層,在該圖層中,通過(guò)響應事件,以確定加載二級圖層的圖層名稱(chēng)和該圖層中的加載部分,相應的加載三級、四級圖層數據,在加載的同時(shí),就形成了各種專(zhuān)題圖。當然,分層管理器功能的實(shí)現是通過(guò)GIS組件(MapX、MO、AO等)和編程語(yǔ)言(VB、VC、Delphi等)來(lái)實(shí)現的。
2、分層管理器開(kāi)發(fā)步驟
分層管理器應用程序需要進(jìn)行許多設置和準備。主要步驟匯總如下:
(1)獲取多層逐層細化圖層時(shí)要使用的各個(gè)表的數據。
(2)創(chuàng )建一個(gè)包含特殊列和特殊元數據的新的空逐層細化表(.tab 文件)。元數據為每個(gè)組件表指定一個(gè)層名,同時(shí)標識組件表中的重要列標識列和標題列。
(3)將逐層細化表加入地圖。例如,將逐層細化表加入您使用的Geoset,或通過(guò)編碼方法將逐層細化表加入地圖。
(4)在應用程序中添加用戶(hù)界面元素,響應逐層細化事件。
(5)添加代碼,響應用戶(hù)對逐層細化工具的使用(也就是說(shuō)編寫(xiě)分層管理器)。
(6)該代碼需要檢測用戶(hù)已選擇的圖元;確定需要添加的子圖元和需要刪除的圖元;調用應用程序來(lái)實(shí)現分層或匯總地圖圖元。
實(shí)例分析
由于遙感影響數據量特別巨大,對于數據的存儲、管理、分析和有用圖形部分顯示就顯得非常困難,這需要用關(guān)系——對象數據庫對數據進(jìn)行存儲。在圖形顯示時(shí),為了使取得有用圖層信息,減少加載時(shí)間和提高編輯效率,需要對圖形進(jìn)行分層顯示,即用到了前面介紹的分層管理器技術(shù)。本文用VB作為編程語(yǔ)言, MapX作為GIS組件進(jìn)行二次開(kāi)發(fā)來(lái)實(shí)現分層管理技術(shù)。
1、構建分層管理器
構建逐層細化表,其表結構為:
Definition Table
Type Native Charset "WindowsLatin1"
Fields 3
Key Char (32);
Level Char (32);
Label Char (32) ;
元數據關(guān)鍵字和對應值為:
begin_metadata
"\IsDrilldown" = "TRUE"
"\DDMap\ComponentMaps\One\File" = " Tab_YNP.TAB"
"\DDMap\ComponentMaps\One\LevelID" = " Tab_YNP "
"\DDMap\ComponentMaps\One\FeatureIDCol" = "3"
"\DDMap\ComponentMaps\One\FeatureCaptionCol" = "1"
…(其他各組件層的關(guān)鍵字和值與此相同)
"\DDMap\HierarchyManager\IsDLL" = "TRUE"
"\DDMap\HierarchyManager\ID" = "SomeDLL.dll"
"\DDMap\HierarchyManager\InitialLevel" = " Tab_YNP "
end_metadata
2、分層管理器的實(shí)現
使用 CreateCustomTool 方法實(shí)現逐層細化工具,定義為:Map1.CreateCustomTool customDrilldownExpandTool, miToolTypePoint, miDrilldownExpandCursor, miDrilldownContractCursor, miDrilldownContractCursor
每次使用自定義逐層細化工具均會(huì )觸發(fā) ToolUsed 事件。在 ToolUsed 事件過(guò)程中,您將需要執行產(chǎn)生逐層細化行為的代碼。該過(guò)程主要分為四個(gè)步驟:
(1)使用 SelectByPoint 或 SearchAtPoint 之類(lèi)的方法確定用戶(hù)單擊的地圖圖元。
(2)確定應取代用戶(hù)單擊的圖元的子圖元集。例如,可以使用一個(gè)或多個(gè)嵌套的 Case 語(yǔ)句確定哪些子圖元取代所選的父圖元。
(3)提取空間數據。根據前述條件,用SQL語(yǔ)言從數據倉庫中提取信息,如:select goloc form YN. Tab_HQ_KC where Prix=68
(4)調用 DrilldownAddFeatures 方法將子圖元加入地圖。
(5)調用 DrilldownRemoveFeatures 方法從地圖中刪除父圖元(用戶(hù)單擊的圖元)。
(6)對顯示圖層進(jìn)行編輯,并把編輯結果保存。
3、結果分析
從實(shí)例的結果可以看出,Oracle數據倉庫能夠方便的對空間數據進(jìn)行存儲、分析、管理和輸出,數據挖掘技術(shù)的應用能夠靈活存取數據,而不需要加載整個(gè)數據表中的所有數據,分層管理器的應用實(shí)現了空間數據大范圍快速瀏覽和不同主題圖層的部分疊加,實(shí)際應用中有著(zhù)非常方便的應用。
高效地利用現有的海量數據是目前面臨的難題之一。Oracle數據倉庫技術(shù)是專(zhuān)門(mén)針對海量數據的管理和應用的技術(shù),它在對象-關(guān)系型數據庫、功能強大的 DBMS和支持可視化檢索方面有著(zhù)非常明顯的優(yōu)勢。地學(xué)數據倉庫的理論在今年的時(shí)間應用中不斷完善,本文在數據倉庫的存儲、分析和表達層方面把理論和實(shí)際應用相結合,結合分層管理GIS二次開(kāi)發(fā),開(kāi)發(fā)出基于Oracle數據倉庫的分層管理系統,它結合了數據倉庫和分層管理的優(yōu)點(diǎn),在地學(xué)空間數據應用方面進(jìn)行了有益的嘗試。
【Oracle數據倉庫分層管理器解決方案】相關(guān)文章:
Oracle認證:ORACLE綁定變量BINDPEEKING03-08
Oracle認證:Oracle內存結構研究-PGA篇03-08
Oracle認證作用03-19
Oracle認證簡(jiǎn)介11-30
Oracle發(fā)展歷程03-12
oracle的sql語(yǔ)句01-21