知识大全 Oracle数据库处理多媒体信息

Posted 多媒体

篇首语:古人学问无遗力,少壮工夫老始成。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle数据库处理多媒体信息相关的知识,希望对你有一定的参考价值。

Oracle数据库处理多媒体信息  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   引文     长期以来 多媒体信息在计算机中都是以文件形式存放 由操作系统管理的 但是随着计算机网络 分布式计算的发展 对多媒体信息进行高效的管理 存取 查询已经成了一种迫切需求 而关系数据库却有着强大的数据管理能力 两方面结合 多媒体数据库由此应运而生 本文将就Oracle对多媒体信息进行处理的方式 工具 特色以及一些基本原理做一个综述     但是我们不能不遗憾的看到 现有数据库对一些多媒体数据所特有的操作能力还是很有限的 针对多媒体数据库的性能调优现在也遇到了新的问题 虽然如此 多媒体数据库仍旧产生了广阔的应用价值和前景     当然本文不可能面面俱到 有关Oracle多媒体信息处理的具体内容 请查阅Oracle相关手册      一 应用前景综述    随着计算机处理能力的大副提高 多媒体早已经融入到了计算机当中了 如果缺少了多媒体 缺少了各种多姿多采的图象 音频 视频 很难想象计算机如今会走入千家万户 长期以来 多媒体信息在计算机中都是以文件形式存放 由操作系统管理的 但是随着计算机网络 分布式计算的发展     Oracle作为一家著名的数据库厂商 在多媒体信息处理上 更是走在了前边 本文将就Oracle对多媒体信息进行处理的方式 工具 特色以及一些基本原理做一个综述 希望对读者有所启发 当然 关系数据库还有好多家 虽然开发工具 编程接口语句各异 但在数据类型 处理方式上比较相似 所以我们在此略过      二 多媒体数据类型介绍    在关系型数据库中 多媒体信息等大型对象是由lob型字段来进行存取的 在Oracle i中 正式引入了此标准 以适应多媒体大对象处理的需求 Oracle数据库中 lob型数据有以下几种          Lob类型 说明    Clob 和Oracle 的long型相似 clob可以存储单字节型数据    Nclob Nclob存储定宽的多字节国家字符集数据    Blob 和Oracle 中的long raw类型相似 可以存储无结构的二进制数据 Oracle 没有对这种数据进行解释 只是按照原来的形式存储和检索它     Bfile Bfile允许对Oracle数据库以外存储的大型二进制文件进行只读形式的访问 和其它三种lob类型数据 不同的是 bfile类型数据存储在一个单独的文件中 该文件不由Oracle来维护     特点      在Oracle 中 相应的long或long raw字段有 g的限制 而lob的限制是 g      lob可以使用调用接口OCI或者由pl/sql利用dbms_lob包进行操纵      lob不象long型那样每个表中最多只有一个字段的限制 其可以有多个 而又可以利用触发器的特性      lob数据处理可以获得与其它数据同样的事物特性      lob的存储比较特殊 它并不是跟其他数据存储在同一个数据库表中 而是可以单独存放于不同的表空间中 由一个定位符指向实际的lob数据      三 多媒体大对象存取例程举例    按照如下步骤来完成各个操作     ( )先建立一个数据库表     create table lobdemo(key NUMBER KEY clob_col CLOB blob_col BLOB bifle_col BFILE);    这个数据库第一列存储一个码 另外三列存储lob型数据     ( )表建好以后 往表中插入一条数据     insert into  lobdemo(key clob_col blob_col bfile_col) values ( abcdefghijklmnopqrsatuvwxyzasdffasfsdS empty_blob() null);    在这一条数据中 第二列我们插入一个字符串 它被格式化为clob类型数据进行存储 第二列我们使用empty_blob()函数来初始化一个定位符 以后就可以获取这个定位符进行比如select update等操作了 第三列赋空值 它并没有获得一个定位符 这是与empty_blob()函数的区别     ( )查询插入表中的数据    select blob_col from boldemo where key= ;    注意 这一sql语句的返回结果是一个定位符(locator) 而不是实际的数据本身     ( )修改数据库中数据    update lobdemo SET blob_col= aedevbagddgagdfdfasasdfdsa where key= ;    从这些sql语句当中 我们看到了lob型数据处理的基本方法 发现与其他类型数据处理相似 但是sql语句中lob型数据处理的特殊性在于以下方面     ( )bfile文件的处理     bfile类型有着特殊性 跟clob blob不同 实际的数据文件存储在操作系统的外面 所以有两个特点 没有事务性控制 bfile是只读的 不能用dbms_lob或oracl oci进行修改 让我们来看对bfile的操作步骤     < > 为了访问外部文件 服务器需要知道文件在操作系统中的位置 下面我们建立一个目录   create DIRECTORY utils AS /home/utils ;  utils表示目录逻辑名 /home/utils 是实际目录     < >使用bfilename函数插入一行数据     insert into lobdemo(key bfile_col) values ( biflename( utils file ));    bfilename函数的第一个参数是逻辑目录名 第二个参数是文件名 注意 这一行中插入的是一个指向/home/utils/file 的lob定位符 并不是文件本身     ( )利用dbms_lob包进行lob数据操作    sql仅可以操纵整个lob 而不能操纵数据片 dbms_lob包则放开了这个限制 它提供对lob数据中数据片的操作 这个包中包含十几个例程 读者可以查阅Oracle pl/sql手册 本文只介绍三个函数 fileopen()用来打开一个操作系统文件 loadfromfile()例程用来往目标lob字段填充一个操作系统文件 这个函数很有实用价值 因为有许多lob内容在sql语句中是不可描述的 例如一个二进制音频文件 而用这个函数可以将文件内容导入到数据库 getlength函数计算文件的长度 请看下面一个存储过程中这三个函数的使用     create or replace procedure FileExec(  p_Directory in VARCHAR   p_Filename IN VARCHAR   ) AS  v_FileLocator BFILE;  v_CLOBLocator CLOB;  BEGIN   为update初始化一个定位符  SELECT clob_col  INTO v_CLOBLocator  FROM lobdemo  WHERE key=   FOR UPDATE;     为读文件初始化一个BFILE定位符    v_FileLocator:=BFILEOPEN(p_Derectory p_Filename);     用dbms_lob包的fileopen打开一个操作系统文件    DBMS_LOB FILEOPEN(v_FileLocator DBMS_LOB FILE_READONLY);     将整个操作系统文件装入lob中    DBMS_LOB LOADFROMFILE(v_CLOBLocator v_FileLocator DBMS_LOB GETLENGTH(v_FileLocator));    END FileExec;     四 Oracle InterMedia工具介绍    interMedia是Oracle推出的对Oracle i多媒体功能进行扩充的一个集成部件 它使得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对象类型数据的操纵函数 下面我们来看一个例子 在这个例子中我们定义一个歌曲对象 建立一个歌曲对象的表 并对该表进行插入与查询操作     ( )定义一个歌曲对象     CREATE TYPE songObject as OBJECT (  songId VARCHAR ( ) 歌曲号  title VARCHAR ( ) 题目  artist VARCHAR ( ) 作家  awards VARCHAR ( ) 奖项  timePeriod VARCHAR ( ) 日期时间  txtinroduction CLOB 简介  audioSource ORDSYS ORDAUDIO 音频数据 这个字段由ORDAUDIO对象来定义   );    ( )建立一个名为songtable的表     CREATE TABLE SongsTable of songObject (UNIQUE (songId) songId NOT NULL);    ( )插入一行数据到SongsTable表中    INSERT INTO SongsTable VALUES (    Under Pressure    Queen    no awards         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数据定位符 而没有存储实际的数据     ( )向SongsTable表中载入一行数据     DECLARE  audioObj ORDSYS ORDAUDIO;  ctx RAW( ) := NULL;  BEGIN     取得audioSource字段定位符    SELECT S audioSource INTO audioObj    FROM SongsTable S  WHERE S songId =   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 = ;    MIT;    END;     五 多媒体数据库技术难点与展望    可以说 多媒体数据的高效管理是IT技术发展的必然要求 随着多媒体信息需求的进一步加强 多媒体数据库技术将会有更大的发展 从Oracle数据库中我们可以看出 无论在数据类型 数据管理 还是开发管理工具上 现在的主流关系数据库已经具有很强的多媒体信息管理能力 但是我们不能不遗憾的看到 对一些多媒体数据所特有的操作(比如对多媒体信息的查询)能力还是很有限的     一个问题就是多媒体数据的特殊操作实现 因为lob型数据是二进制的大对象 他不能简单的按照一般数据的操作符来进行计算 比如 要查出一个数据表中与某首歌相似的音频 那么对于这个 相似 操作来说 它得不到传统的操作符的支持 而且它将涉及很复杂的算法 可喜的是 Oracle i Intermedia已经具有多媒体数据的查询与匹配功能 例如 可以从质地(texture) 形状 颜色 颜色分量等要素进行相似图象的查询 在查询时可以设置各个要素的权值 测试的结果还是差强人意的 但是对audio video等类型数据的查询仍然不够理想     另外 如何描述多媒体信息 怎样根据你对多媒体信息的描述来检索 也是一个难点问题 比如这个查询任务 查询出颜色比较暗的并且有森林的风景照片 这就是根据描述性信息进行查询的例子 这将需要某种行业标准和技术实现 总之 如何实现和优化针对多媒体数据的特殊操作(如相似查询等) 将是以后多媒体数据库研究和应用中的热点问题     另外一个重要的问题就是针对多媒体数据库的性能调优 原先的调优方法如索引优化等仍然适用 但是现在遇到了新的问题 多媒体数据是庞大的 那么对多媒体信息的操作(尤其是检索)开销巨大 那么如何降低这种开销 缩短操作时间 又是一个重要课题 cha138/Article/program/Oracle/201311/18935

相关参考

知识大全 如何在Oracle数据库中屏蔽英文提示信息

如何在Oracle数据库中屏蔽英文提示信息  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在应用程序

知识大全 如何利用oracle外部表查看报警信息

  首先了解什么是外部表与其它表的区别建立一个简单的外部表(主要看操作过程)最后我们用外部表查看Oracle报警日志  一了解oracle外部表  外部表定义结构被存放在数据字典而表数据被放在OS文件

知识大全 对Oracle数据库进行容灾

对Oracle数据库进行容灾  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!随着全球信息化时代的到来

知识大全 Oracle数据库中违反唯一约束的处理

Oracle数据库中违反唯一约束的处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  根据NUL

知识大全 Oracle 数据库中的 Empty String 处理

Oracle数据库中的EmptyString处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Oracle数据库中如何对时间格式进行处理

Oracle数据库中如何对时间格式进行处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  整合模

知识大全 oracle系统紧急故障处理

  Oracle物理结构故障的处理方法    Oracle物理结构故障是指构成数据库的各个物理文件损坏而导致的各种数据库故障这些故障可能是由于硬件故障造成的也可能是人为误操作而引起所以我们首先要判断问

知识大全 ORACLE大数据表Update处理

ORACLE大数据表Update处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ORACLE

电气工程综合布线系统设计应符合什么要求?

  1、应成为建筑物信息通信网络的基础传输通道,能支持语音、数据、图像和多媒体等各种业务信息的传输。  2、应根据建筑物的业务性质、使用功能、环境安全条件和其他使用的需求,进行合理的系统布局和管线设计

电气工程综合布线系统设计应符合什么要求?

  1、应成为建筑物信息通信网络的基础传输通道,能支持语音、数据、图像和多媒体等各种业务信息的传输。  2、应根据建筑物的业务性质、使用功能、环境安全条件和其他使用的需求,进行合理的系统布局和管线设计