Oracle数据库处理多媒体信息(2)
来源:asp之家 发布时间:2010-07-16 13:01:00
四.Oracle InterMedia工具介绍
interMedia是Oracle推出的对Oracle8i多媒体功能进行扩充的一个集成部件,它使得Oracle能够更方便的管理图象、音频、视频、文本等信息。使得Oracle在internet,电子商务等领域多媒体数据的管理上可靠性与可用性增强。它包括image, audio, video三部份。interMedia使用对象类型,类似于JAVA或C++,来描述image, audio, video类型数据,Oracle在这三类对象类型中定义了许多方法来操作这些数据,如对于 image类型数据来说,你可以很方便地进行图形格式转换,压缩,拷贝,截取图形的任何一部份等,而这些是普通LOB类型数据所无法比拟的,普通sql语句也无法完成这些操作。
Internet的发展更突出了interMedia在WEB应用中的价值,现有的WEB应用绝大多数将image,audio,video等多媒体信息存在文件系统中,其优点是操作简单,速度快,缺点是管理复杂,尤其是管理大量image时就受到目录数等的限制。如果将image保存在数据库中,由数据库来统一维护,统一备份,这样就可以简化管理。
Intermedia中定义了几个多媒体对象类型,例如ORDAUDIO就是其中一个,它提供一些audio对象类型数据的操纵函数。下面我们来看一个例子,在这个例子中我们定义一个歌曲对象,建立一个歌曲对象的表,并对该表进行插入与查询操作。
(1)定义一个歌曲对象:
CREATE TYPE songObject as OBJECT (
songId VARCHAR2(20), --歌曲号
title VARCHAR2(4000), --题目
artist VARCHAR2(4000), --作家
awards VARCHAR2(4000), --奖项
timePeriod VARCHAR2(20), --日期时间
txtinroduction CLOB, --简介
audioSource ORDSYS.ORDAUDIO --音频数据,这个字段由ORDAUDIO对象来定义。
);
(2)建立一个名为songtable的表:
CREATE TABLE SongsTable of songObject (UNIQUE (songId), songId NOT NULL);
(3)插入一行数据到SongsTable表中
INSERT INTO SongsTable VALUES ('00',
'Under Pressure',
'Queen',
'no awards',
'80-90',
243,
NULL,
EMPTY_CLOB(),
ORDSYS.ORDAudio(NULL,
ORDSYS.ORDSource(EMPTY_BLOB(),NULL,NULL,NULL,NULL,NULL),
NULL, NULL, EMPTY_CLOB(), NULL, NULL, NULL, NULL, NULL, NULL));
注意:。EMPTY_CLOB,EMPTY_BLOB()函数只是初始化一个lob数据定位符,而没有存储实际的数据。
(4)向SongsTable表中载入一行数据:
DECLARE
audioObj ORDSYS.ORDAUDIO;
ctx RAW(4000) := NULL;
BEGIN
--取得audioSource字段定位符
SELECT S.audioSource INTO audioObj
FROM SongsTable S
WHERE S.songId = '00'
FOR UPDATE;
--下面的四个函数是ORDAUDIO对象的成员函数,具体功能请查看Oracle开发手册
audioObj.setSource('FILE', 'AUDDIR', 'UnderPressure.au');--设定文件
audioObj.setMimeType('audio/basic'); --设定类型
audioObj.import(ctx); --载入ctx
audioObj.setProperties(ctx); --设置属性
--将歌曲对象载入到数据库表中
UPDATE SongsTable S
SET S.audioSource = audioObj
WHERE S.songId = '00';
COMMIT;
END;
五.多媒体数据库技术难点与展望
可以说,多媒体数据的高效管理是IT技术发展的必然要求,随着多媒体信息需求的进一步加强,多媒体数据库技术将会有更大的发展,从Oracle数据库中我们可以看出,无论在数据类型,数据管理,还是开发管理工具上,现在的主流关系数据库已经具有很强的多媒体信息管理能力。但是我们不能不遗憾的看到,对一些多媒体数据所特有的操作(比如对多媒体信息的查询)能力还是很有限的。
一个问题就是多媒体数据的特殊操作实现,因为lob型数据是二进制的大对象,他不能简单的按照一般数据的操作符来进行计算。比如,要查出一个数据表中与某首歌相似的音频。那么对于这个'相似'操作来说,它得不到传统的操作符的支持,而且它将涉及很复杂的算法。可喜的是,Oracle9i Intermedia已经具有多媒体数据的查询与匹配功能,例如,可以从质地(texture),形状,颜色,颜色分量等要素进行相似图象的查询,在查询时可以设置各个要素的权值,测试的结果还是差强人意的。但是对audio,video等类型数据的查询仍然不够理想。
另外,如何描述多媒体信息,怎样根据你对多媒体信息的描述来检索,也是一个难点问题,比如这个查询任务:查询出颜色比较暗的并且有森林的风景照片,这就是根据描述性信息进行查询的例子。这将需要某种行业标准和技术实现。总之,如何实现和优化针对多媒体数据的特殊操作(如相似查询等),将是以后多媒体数据库研究和应用中的热点问题。
另外一个重要的问题就是针对多媒体数据库的性能调优,原先的调优方法如索引优化等仍然适用,但是现在遇到了新的问题:多媒体数据是庞大的,那么对多媒体信息的操作(尤其是检索)开销巨大,那么如何降低这种开销,缩短操作时间,又是一个重要课题。


猜你喜欢
- 在进行excel文件读取的时候,我自己设置了部分直接从公式获取单元格的值但是用之前的读取方法进行读取的时候,返回值为空import osim
- 如何在生产上部署Django?Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式。uwsgi介绍uW
- str字符串s = '中文' # s: <type 'str'>s是个str对象,中
- 一、用法字符串常量:import stringprint(string.ascii_lowercase)print(string.ascii
- 如下所示:import cv2import os#图片路径im_dir = '/home/suanfa/data/out/20170
- 前言大家好,我是Peter~本文记录的是Pandas两种少用的读取文件方式:读取在线文件的数据读取剪贴板的数据声明:本文案例和在线数据仅用于
- JavaScript ES6之前的还没有Class类的概念,生成实例对象的传统方法是通过构造函数。例如:function Mold(a,b)
- 也许还有朋友不太清楚DOMContentLoaded这个事件。简单的说,这个事件就是要在大多数情况下去替代window.onload事件,因
- 问题jupyter notebook读入csv数据时出现错误“SyntaxError: (unicode error) ‘unicodees
- 如何在一台服务器上安装两个或者更多个的mysql呢?下面是详细的操作步骤,一起来学习学习吧。一、环境mysql软件包:  
- 1. Mysql备份某个数据库的命令####################################################
- 一、概论超大型系统的特点为:1、处理的用户数一般都超过百万,有的还超过千万,数据库的数据量一般超过1TB;2、系统必须提供实时响应功能,系统
- 作为一门脚本语言,写脚本时执行系统命令可以说很常见了,python提供了相关的模块和方法。os模块提供了访问操作系统服务的功能,由于涉及到操
- (1) variable = a if exper else b(2)variable = (exper and [b] or [c])[0
- 1. 引言使用Python进行图像处理,非常快捷方便,往往简短几行代码就可以实现功能强大的效果。在这篇文章中,我们将使用Python来将图像
- 前言微服务中的日志采集方案ELK(EFK)已经是基本事实标准了,但是单体服务中却没有像ELK这样的成熟采集方案,这与单体性质有关,单体毕竟涉
- 本文实例讲述了python列表操作之extend和append的区别。分享给大家供大家参考。具体如下:li = ['a',
- Python装饰器用法Python的装饰器是个好东西,它能干很多事情。但对于新手,它看起来似乎没那么简单。但事实上,装饰器本身也只是个函数。
- 使用python自带的itertools模块调用其product函数传入我们想组合生成的字符数据便会源源不断的生成组合而且不会重复repea
- 在pandas中的groupby和在sql语句中的groupby有异曲同工之妙,不过也难怪,毕竟关系数据库中的存放数据的结构也是一张大表罢了