当前位置:首页 > 嵌入式 > 嵌入式硬件

摘 要: 结合Wrapper Facade模式,给出OCCI程序访问Oracle SpATIal的一般过程,并给出实例。

对象关系数据库管理系统(ORDBMS)是面向对象技术与传统的关系数据库相结合的产物。ORDBMS在原来关系数据库的基础上 ,增加了一些新的特性 ,这些特性对查询优化影响很大。查询处理是ORDBMS的重要组成部分 ,它的性能优劣将直接影响到DBMS的性能 。在当前众多的ORDBMS中,越来越多的GIS系统采用Oracle SpaTIal管理地理数据。目前访问Oracle数据库的方式有很多种,而这些方式或因为追求通用性而牺牲效率,或因为不能适应地理数据类型特点而无法实际采用。

针对上述问题,本文探讨了通过设计OCCI程序访问Oracle Spatial中地理数据的一般过程。由于OCCI程序在代码级上具有类级封装,因此具有灵活、高效、代码简洁、易于理解和维护的优点。OCCI在引入面向对象分析和设计技术后,有利于实现进一步封装,在封装边界上限定软件元素的共生性,产生更健壮、更可靠和更易维护的软件模块。同时,本文采用Wrapper模式向外提供一个简单一致的界面,降低外部程序对功能实现部分的直接依赖。

1 几何对象在Oracle Spatial中的表示

ORACLE SPATIAL 是 Oracle 数据库强大的核心特性,包含了用于存储矢量数据类型、栅格数据类型和持续拓扑数据的原生数据类型。ORACLE SPATIAL使得我们能够在一个多用户环境中部署地理信息系统(GIS),并且与其它企业数据有机结合起来,统一部署电子商务、政务。有了 ORACLE SPATIAL 之后,即可用标准的 SQL 查询管理我们的空间数据……该方案中,能由上述对象关系模型所表示的空间对象被存储在由用户定义的数据表的单个数据域列中。该数据域的数据类型是几何对象类型SDO_GEOMETRY。对象类型SDO_GEOMETRY的定义如下:

CREATE TYPE sdo_geometry AS OBJECT (

SDO_GTYPE NUMBER,

SDO_SRID NUMBER,

SDO_POINT SDO_POINT_TYPE,

SDO_ELEM_INFO

MDSYS.SDO_ELEM_INFO_ARRAY,

SDO_ORDINATES

MDSYS.SDO_ORDINATE_ARRAY);

其中:SDO_GTYPE描述地理对象的类型,SDO_SRID用以确定所采用的坐标系,SDO_ELEM_INFO用以定义对象组成元素的信息。

2 OCCI

OCCI(Oracle C++ Calling Interface)是Oracle公司推出的专为访问Oracle数据库的API类库,它为用户提供了一个底层二次开发环境。通过OCCI,用户可以开发自己的程序,灵活、高效地访问Oracle数据库,获取数据库管理系统的支持,完成对数据的访问。

2.1 OCCI的优势

OCCI本质上是对OCI代码的类级封装。因此在继承了OCI强大功能的基础上,OCCI在访问Oracle方面还具有许多新的特性:

(1)封装了复杂的实现细节,提供了一致的调用接口。代码简洁有力,程序易于开发、理解和维护。

(2)引入面向对象的设计和编程技术,使编写的程序更健壮、可靠、可扩展、易复用和易维护。

(3)由于具有类级封装,所以有利于在封装的边界上限定软件元素的共生性,使得开发的程序更健壮、可靠和易维护。

类级封装改变了从前的OCI代码难理解、难维护的缺点,为更好地解决软件中的共生性创造了条件。共生性(connascence)是指在一定的环境下,软件元素间为适应某种变化、保持正确性而需要进行的一些变化。但如果采用正确的面向对象设计方法,可以增强封装体内部的聚合质量,降低它们之间的耦合程度,产生封装边界内共生性最大化、边界间共生性最小化的较佳设计效果。这样产生的软件模块具有健壮、可靠、易扩展、易复用和易维护的特点。

2.2 OCCI应用程序生成机制

第三方应用程序通过与OCCI类库进行连接生成OCCI应用程序(OCCI Application)。通过获得Oracle数据库管理系统服务(Oracle Database Server)的支持,OCCI应用程序支持所有的SQL数据定义、数据操纵和事务处理功能。OCCI应用程序生成机制如图1所示。

2.3 一般对象访问流程

OCCI进行对象访问的流程为:(1)采用对象模式初始化程序环境。(2)取得对象的一个拷贝存到用户端的缓存中。(3)在该缓存中操纵对象。(4)如对该对象拷贝进行了设置操作,则将该拷贝置为Dirty。(5)如果需要,用修改过的对象拷贝刷新数据库中的永久对象。OCCI的一般对象访问流程如图2所示。

3 Wrapper Facade模式封装OCCI代码

3.1 Wrapper Facade的意图和一般结构

Wrapper facade模式的意图是采用面向对象类的接口对底层函数和数据结构进行封装,以产生简洁、健壮、可移植和易复用的应用程序模块。本文应用环境下,虽然OCCI对OCI进行了类级别的封装,但在具体应用程序中,开发人员仍然要根据应用需要编写OCCI代码序列。常见的Wrapper facade pattern的应用实例有MFC、ACE以及AWT,它们都封装了操作系统的C代码API函数。

图3和图4是该模式一般结构示意图和动态结构用UML的类图和顺序图分别表示的情况。模式中主要的成分有:(1)函数,封装了已有的底层函数和数据结构序列,这个序列提供一个内聚的功能服务。(2)包装界面(Wrapper facade),由包含一个或多个类的集合构成。这些类封装了上述函数及其相关的数据结构,通过类中的方法来组织上述函数。用户通过对包装界面类的方法调用进而获得对底层代码序列的调用。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭