数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle数据仓库的分层管理器解决方案


发布日期:2018年10月05日
 
Oracle数据仓库的分层管理器解决方案
摘要 本文描述分层管理器的原理步骤限制并和Oracle数据仓库相结合实现了地学数据的有效存储管理以及大范围数据的快速浏览

关键字 分层管理器 元数据 快速浏览

前言

世纪是信息的世纪综合国力的竞争在很大程度上是信息的竞争更是信息利用率的竞争近年来随着数字地球数字国土战略的提出和实施地学领域的海量数据飞速增长数据的存储分析管理和处理变得日益复杂随着Oracle技术的成熟尤其是本版后Oracle Spatial的出现数据仓库在海量数据存储分析和表达方面有着无可比拟的优势同时由于信息量的巨大传统的数据存储和显示方式在大范围数据快速浏览方面显得力不从心这样有必要改变空间数据的存储方式加载需要的空间数据部分避免不必要数据的反复加载和卸载

分层管理器

分层管理器架构

分层管理器是实现大范围数据的快速浏览的关键部分它控制了逐层细化表的结构和元数据的定义和赋值定义了组件表中的关键信息给出了空间数据的来源数据挖掘规则图层加载范围和图形编辑输出和保存分层管理器有两部分组成分别为

a) 一组存储于Oracle数据仓库中的空间数据表用于逐层细化图层中的每个详细信息层这些表称为组件表

b) 一个空表包含该表的结构定义和描述组件表的特殊元数据该表称为逐层细化表任何逐层细化应用程序均需要逐层细化表从中可以了解逐层细化图层中各层的层次关键字描述以及它们之间的层次关联方式进行分层时分层管理器作为程序的一部分确定需要添加的子图元所在的图层及其关键字以便确定在逐层细化图层中需要添加和删除的图元信息

逐层细化图层是一种特殊的地图图层它是有自己表结构的空白图层并用元数据规定了所有加载图层的一些规则和限制所显示出来的地图信息是按照元数据规定的规则从其它表或数据库中提取出来的在地图中显示逐层细化图层时分层管理器会创建一个临时表然后将组件表中的图元复制到该临时表中逐层细化图层中显示的图元实际上是组件表中图元的副本这样就可以灵活的在图层上面加载需要的信息在应用程序终止时将丢弃该临时表为了保存有用的专题图信息可以对提取出来的图层进行保存此时如果用户查看图层信息时逐层细化图层仍将是单个图层

逐层细化表的要求作为分层管理器的组织核心部分它定义了元数据关键字和三个标准列关键字层和标签并有着自己的一套语法

() 关键字 begin_metadata 标记逐层细化表中元数据部分的开头

() 每行元数据包含两个元素关键字和值所有关键字和值均使用双引号引起来

() 逐层细化表必须包含 \IsDrilldown 关键字该关键字的值必须为 True

() 每个关键字以\(反斜线)开头

() 元数据关键字可以在层次结构中嵌套层次结构中的每一层以反斜线 (\) 标记

() 元数据包括 \DDMap\ComponentMaps\ 关键字层次结构在该层次结构中为每个组件表指定四个元数据关键字

分层管理器的分层原理图如图所示从图中可以看出分层管理器有两部分组成组件表和逐层细化表组成分层管理器根据系统的要求以数据挖掘的方式从Oracle数据仓库中提取数据形成组件表中的某个图层然后确定需要加载图层的名称和图层中的部分并加载到逐层细化表中如果是第一次加载此时的逐层细化表是空白图层在加载过程中逐层细化表不断的进行图元信息的增加和删除这样会出现每个组件表中的部分信息显示在逐层细化表所示的图层中这样输出所需要的图层并对它进行编辑由于逐层细化表中数据是个组件表中的副本需要对编辑后的图层进行另存形成专题图

分层管理器首先形成空白图层通过分层管理器用数据挖掘工具从Oracle数据仓库中提取数据根据分层管理器的元数据规则形成一级的图层在该图层中通过响应事件以确定加载二级图层的图层名称和该图层中的加载部分相应的加载三级四级图层数据在加载的同时就形成了各种专题图当然分层管理器功能的实现是通过GIS组件(MapXMOAO等)和编程语言(VBVCDelphi等)来实现的

分层管理器开发步骤

分层管理器应用程序需要进行许多设置和准备主要步骤汇总如下

()获取多层逐层细化图层时要使用的各个表的数据

()创建一个包含特殊列和特殊元数据的新的空逐层细化表(tab 文件)元数据为每个组件表指定一个层名同时标识组件表中的重要列标识列和标题列

()将逐层细化表加入地图例如将逐层细化表加入您使用的Geoset或通过编码方法将逐层细化表加入地图

()在应用程序中添加用户界面元素响应逐层细化事件

()添加代码响应用户对逐层细化工具的使用(也就是说编写分层管理器)

()该代码需要检测用户已选择的图元确定需要添加的子图元和需要删除的图元调用应用程序来实现分层或汇总地图图元

实例分析

由于遥感影响数据量特别巨大对于数据的存储管理分析和有用图形部分显示就显得非常困难这需要用关系——对象数据库对数据进行存储在图形显示时为了使取得有用图层信息减少加载时间和提高编辑效率需要对图形进行分层显示即用到了前面介绍的分层管理器技术本文用VB作为编程语言MapX作为GIS组件进行二次开发来实现分层管理技术

构建分层管理器

构建逐层细化表其表结构为

Definition Table

Type Native Charset WindowsLatin

Fields

Key Char ();

Level Char ();

Label Char () ;

元数据关键字和对应值为

begin_metadata

\IsDrilldown = TRUE

\DDMap\ComponentMaps\One\File = Tab_YNPTAB

\DDMap\ComponentMaps\One\LevelID = Tab_YNP

\DDMap\ComponentMaps\One\FeatureIDCol =

\DDMap\ComponentMaps\One\FeatureCaptionCol =

…(其他各组件层的关键字和值与此相同)

\DDMap\HierarchyManager\IsDLL = TRUE

\DDMap\HierarchyManager\ID = SomeDLLdll

\DDMap\HierarchyManager\InitialLevel = Tab_YNP

end_metadata

分层管理器的实现

使用 CreateCustomTool 方法实现逐层细化工具定义为MapCreateCustomTool customDrilldownExpandTool miToolTypePoint miDrilldownExpandCursor miDrilldownContractCursor miDrilldownContractCursor

每次使用自定义逐层细化工具均会触发 ToolUsed 事件在 ToolUsed 事件过程中您将需要执行产生逐层细化行为的代码该过程主要分为四个步骤

()使用 SelectByPoint 或 SearchAtPoint 之类的方法确定用户单击的地图图元

()确定应取代用户单击的图元的子图元集例如可以使用一个或多个嵌套的 Case 语句确定哪些子图元取代所选的父图元

()提取空间数据根据前述条件用SQL语言从数据仓库中提取信息select goloc form YN Tab_HQ_KC where Prix=

()调用 DrilldownAddFeatures 方法将子图元加入地图

()调用 DrilldownRemoveFeatures 方法从地图中删除父图元(用户单击的图元)

()对显示图层进行编辑并把编辑结果保存

结果分析

从实例的结果可以看出Oracle数据仓库能够方便的对空间数据进行存储分析管理和输出数据挖掘技术的应用能够灵活存取数据而不需要加载整个数据表中的所有数据分层管理器的应用实现了空间数据大范围快速浏览和不同主题图层的部分叠加实际应用中有着非常方便的应用

结论

高效地利用现有的海量数据是目前面临的难题之一Oracle数据仓库技术是专门针对海量数据的管理和应用的技术它在对象关系型数据库功能强大的DBMS和支持可视化检索方面有着非常明显的优势地学数据仓库的理论在今年的时间应用中不断完善本文在数据仓库的存储分析和表达层方面把理论和实际应用相结合结合分层管理GIS二次开发开发出基于Oracle数据仓库的分层管理系统它结合了数据仓库和分层管理的优点在地学空间数据应用方面进行了有益的尝试

上一篇:数据库连接池C3P0名字的由来

下一篇:ORACLE主要的系统表和数据字典视图