关于在地址本数据库设计中同步内容使用XMLType的技术建议

 

关于在地址本数据库设计中同步内容使用XMLType的技术建议

周鹏

2005-02-20

 

oracle 9i9.0.1)对XML技术的支持

Oracle 9i提供的XML内置特性:

Oracle 9i支持XMLType类型,它是一种Oracle 9i系统定义的对象类型。XMLType有内置的函数,有力的提供了推XML的创建,索检,索引等功能。

用户可以使用SQL函数动态的产生XML文档。这些函数有:SYS_XMLGENSYS_XMLAGGPL/SQLDBMS_XMLGEN

XML特性

描述

XMLType

1XMLTypeoracle系统定义的数据类型,系统预定义了内部函数去访问XML数据。可以执行下面的任务:

2、创建XMLType列,在XMLType列上面使用内置的函数。

创建PL/SQL函数和存储过程,可以使用XMLType作为参数传入,或者作为返回参数传出。

3、在XMLType列上面存储、索引、处理XML数据。

 

DBMS_XMLGEN

DBMS_XMLGEN是一个PL/SQL包,提转换一个sql查询的结果到标准的xml格式,返回的是一个XMLTye类型或者是CLOBDBMS_GEN是用c语言实现,放置在数据库的内核中。DBMS_XMLGEN包和DBMS_XMLQuery包的功能相相似。

SYS_XMLGEN

XMLGEN是一个SQL函数,它用来在sql查询中产生XMLDBMS_XMLGEN和其他包操作在查询水平,

SYS_XMLGEN把一个值,对象类型,XMLType实例转换成一个XML文档。SYS_XMLGEN返回的类型是XMLType

 

SYS_XMLAGG

SYS_XMLAGG 是一个聚合函数,它聚合在XMLType类型上面。

SYS_XMLAGG聚合所有的输入的XML文档合片断并且通过连接XML片断合增加上一层的标签产生单个XML文档

 

UriTypes

UriType 类型家族能够在数据库中存储和查询Ur-refsSYS.UriType是一抽象的数据类型,它提供功能去访问URL指向的数据。SYS.HttpUriTypeSYS.DBUriTypeUriType的子类型。SYS.HttpUriType存储的是HTTP URLsDBUriType存储的是intra-database 参考。你可以定义自己的SYS.UriType的子类型。

 

 

 

如何使用XMLType

创建XMLType列:

CREATE TABLE warehouses(

warehouse_id NUMBER(3),

warehouse_spec SYS.XMLTYPE,

warehouse_name VARCHAR2(35),

location_id NUMBER(4));

插入XMLType列数据

INSERT into warehouses (warehouse_id, warehouse_spec) VALUES (1001, sys.XMLType.createXML(

’<Warehouse whNo="100">

<Building>Owned</Building>

</Warehouse>’));

createXML的输入参数可以是任何的返回为varchar2的表达式或者式CLOBCreateXML能够检测XML是否的符合合适的,但是它不能检查XML的有效性。

 

使用在XMLType列上sql查询

SELECT

w.warehouse_spec.extract('/Warehouse/Building/text()').getStringVal()

"Building"

FROM warehouses w

warehouse_spec是一个XMLType列,Extract()是操作在上面的函数

查询结果如下:

Building

-----------------

Owned

更新XMLType的列

UPDATE warehouses SET warehouse_spec =

sys.XMLType.createXML(

’<Warehouse whono="200">

<Building>Leased</Building>

</Warehouse>’));

删去XMLType的列

DELETE FROM warehouses e

WHERE e.warehouse_spec.extract(’//Building/text()’).getStringVal()

= ’Leased’;

具体的技术,请参考文档《Application Developer’s Guide – XML

 

在地址本中使用XMLType存储同步信息的好处

1、  数据的真实性:

XMLType字段能够象其他类型的一样进行增加、修改、删去、索引。我们

可以保存用户同步的原始数据。

2、  功能的可扩展性:

同步的信息是XML自描述内容,内容复杂多样:

u       不同的数据的xml描述不一样;

u       传输不同的内容格式不一样,vcardvcalendar等等的数据格式不一样。

  很难使用传统的表技术来解决这样的问题。

  如果使用XML的转换技术,将来为不同的类型提供统一的接口。

在地址本中使用XMLType存储同步信息的缺点

  我们现在还不是很了XMLType的查询性能问题。

 

XML的相关技术

1、  XML文件转换成对象的技术

JDK 1.4提供了把对象保存为XML文件,和把XML文件转换成对象的技术。

参考java.beans.Encode

java.beans.Decode

2、  动态把xml实例成对象

参考org.jibx.runtime.*

 

你可能感兴趣的:(数据库设计)