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

摘 要: 结合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),由包含一个或多个类的集合构成。这些类封装了上述函数及其相关的数据结构,通过类中的方法来组织上述函数。用户通过对包装界面类的方法调用进而获得对底层代码序列的调用。

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

随着人工智能(AI)技术的迅速发展,人们对于通用人工智能(AGI,即Artificial General Intelligence)的期待也日益高涨。通用人工智能指的是具备像人类一样全面智能的计算机系统,能够执行各种复杂...

关键字: 人工智能 计算机 数据

在数字化时代,数据的数量和价值飞速增长,如何安全、有效地存储和管理这些数据成为了一个重要的问题。刻录机,作为一种同时具有数据存储和备份功能的设备,在这方面发挥着越来越重要的作用。本文将向大家介绍刻录机的定义、工作原理以及...

关键字: 刻录机 数据

在数字时代,数据已经成为企业的重要资产。随着云计算技术的快速发展,云服务器已成为企业和个人存储数据的重要平台。然而,数据的存储和处理也面临着多种安全威胁。本文将探讨如何使用云服务器确保存储数据的安全性。

关键字: 数据 云服务

北京——2023年9月21日,近期,亚马逊云科技作为参展商参与了久负盛名的IBC 2023 (欧洲广播电视展)并宣布推出一系列聚焦营收增长的媒体与娱乐(Amazon Web Services for M&E)行业解决方案...

关键字: 亚马逊 数据

STIF2023第四届国际科创节暨DSC2023国际数字服务大会(数服会)定于12月15日在北京举行,主题为:数实融合 推动高质量发展。日前,活动筹备工作正式启动。

关键字: 国际科创节暨 数据

随着信息时代的到来,数据存储成为了一项基本需求。Flash存储器成为了一种常见的存储设备,用于存储各种类型的数据,如文档、图片、视频等。本文将详细介绍如何使用Flash存储器以及如何写入数据,帮助读者了解Flash存储器...

关键字: Flash 存储器 数据

仿真的概念其实使用非常广,最终的含义就是使用可控的手段来模仿真实的情况。在嵌入式系统的设计中,仿真应用的范围主要集中在对程序的仿真上。

关键字: 单片机 仿真器 程序

在信息爆炸时代,大量的数据涌现出来,如何准确、高效地理解和传达这些复杂的数据成为许多领域所面临的挑战。可视化作为一种强大的数据处理和展示手段,通过图形、图表和动画等方式将抽象的数据转化为直观的可视形式,帮助用户更容易地理...

关键字: 视觉化 数据 可视化技术

随着信息时代的到来,数据成为了我们生活和工作中不可或缺的一部分。然而,海量的数据对我们来说往往难以理解和利用。这时,数据可视化技术的出现为我们提供了一种直观、有效的方式来展示和解读数据。本文将探讨数据可视化的作用以及其在...

关键字: 数据 信息 可视化

直接操作数据?我们来举个例子:取一个整型数的相反数。一般的实现方法是这样的:

关键字: 数据 浮点 C 语言
关闭
关闭