Oracle数据库处理多媒体信息
Oracle数据库处理多媒体信息
正在看的ORACLE教程是:Oracle数据库处理多媒体信息。引文:
长期以来,多媒体信息在计算机中都是以文件形式存放,由操作系统管理的,但是随着计算机网络,分布式计算的发展,对多媒体信息进行高效的管理,存取,查询已经成了一种迫切需求。而关系数据库却有着强大的数据管理能力。两方面结合,多媒体数据库由此应运而生。本文将就Oracle对多媒体信息进行处理的方式,工具,特色以及一些基本原理做一个综述。
但是我们不能不遗憾的看到,现有数据库对一些多媒体数据所特有的操作能力还是很有限的。针对多媒体数据库的性能调优现在也遇到了新的问题。虽然如此,多媒体数据库仍旧产生了广阔的应用价值和前景。
当然本文不可能面面俱到,有关Oracle多媒体信息处理的具体内容,请查阅Oracle相关手册。
一.应用前景综述
随着计算机处理能力的大副提高,多媒体早已经融入到了计算机当中了,如果缺少了多媒体,缺少了各种多姿多采的图象,音频,视频,很难想象计算机如今会走入千家万户。长期以来,多媒体信息在计算机中都是以文件形式存放,由操作系统管理的,但是随着计算机网络,分布式计算的发展,这种单纯的文件式管理已经力不从心了,对多媒体信息进行高效的管理,存取,查询已经成了一种迫切需求。而关系数据库却有着强大的数据管理能力。两方面密切结合,多媒体数据库由此应运而生。可以预见,随着多媒体处理需求的加强,多媒体数据库的应用将越来越广泛。
Oracle作为一家著名的数据库厂商,在多媒体信息处理上,更是走在了前边。本文将就Oracle对多媒体信息进行处理的方式,工具,特色以及一些基本原理做一个综述。希望对读者有所启发。当然,关系数据库还有好多家,虽然开发工具,编程接口语句各异,但在数据类型、处理方式上比较相似。所以我们在此略过。
二.多媒体数据类型介绍
在关系型数据库中,多媒体信息等大型对象是由lob型字段来进行存取的。在Oracle8i中,正式引入了此标准,以适应多媒体大对象处理的需求。Oracle数据库中,lob型数据有以下几种:
--------------------------------------------
Lob类型 说明
Clob: 和Oracle7的long型相似,clob可以存储单字节型数据
Nclob: Nclob存储定宽的多字节国家字符集数据
Blob: 和Oracle7中的long raw类型相似。可以存储无结构的二进制数据。Oracle8没有对这种数据进行解释 ,只是按照原来的形式存储和检索它。
Bfile: Bfile允许对Oracle数据库以外存储的大型二进制文件进行只读形式的访问。和其它三种lob类型数据 不同的是,bfile类型数据存储在一个单独的文件中,该文件不由Oracle来维护。
特点:
1.在Oracle7中,相应的long或long raw字段有2g的限制,而lob的限制是4g 。
2.lob可以使用调用接口OCI或者由pl/sql利用dbms_lob包进行操纵。
3.lob不象long型那样每个表中最多只有一个字段的限制,其可以有多个,而又可以利用触发器的特性。
4.lob数据处理可以获得与其它数据同样的事物特性。
5.lob的存储比较特殊,它并不是跟其他数据存储在同一个数据库表中,而是可以单独存放于不同的表空间中,由一个定位符指向实际的lob数据。
[NextPage]
三.多媒体大对象存取例程举例
按照如下步骤来完成各个操作:
(1)先建立一个数据库表:
create table lobdemo(key NUMBER KEY,clob_col CLOB,blob_col BLOB,bifle_col BFILE);
这个数据库第一列存储一个码,另外三列存储lob型数据。
(2)表建好以后,往表中插入一条数据:
insert into lobdemo(key,clob_col,blob_col,bfile_col) values (10,'abcdefghijklmnopqrsatuvwxyzasdffasfsdafsdafsdfadfsadfsdfsdfdsdsffds',empty_blob(),null);
在这一条数据中,第二列我们插入一个字符串,它被格式化为clob类型数据进行存储;第二列我们使用empty_blob()函数来初始化一个定位符,以后就可以获取这个定位符进行比如select,update等操作了;第三列赋空值,它并没有获得一个定位符,这是与empty_blob()函数的区别。
(3)查询插入表中的数据
select blob_col from boldemo where key=20;
注意:这一sql语句的返回结果是一个定位符(locator),而不是实际的数据本身。
(4)修改数据库中数据
update lobdemo SET blob_col='aedevbagddgagdfdfasasdfdsa' where key=10;
从这些sql语句当中,我们看到了lob型数据处理的基本方法,发现与其他类型数据处理相似。但是sql语句中lob型数据处理的特殊性在于以下方面:
(1)bfile文件的处理:
bfile类型有着特殊性,跟clob,blob不同。实际的数据文件存储在操作系统的外面:所以有两个特点:1.没有事务性控制 2.bfile是只读的,不能用dbms_lob或oracl8 oci进行修改。让我们来看对bfile的操作步骤:
为了访问外部文件,服务器需要知道文件在操作系统中的位置。下面我们建立一个目录:
create DIRECTORY utils AS '/home/utils';
utils表示目录逻辑名,'/home/utils'是实际目录。
使用bfilename函数插入一行数据:
insert into lobdemo(key,bfile_col) values (-1,biflename('utils','file1'));
bfilename函数的第一个参数是逻辑目录名,第二个参数是文件名。注意:这一行中插入的是一个指向/home/utils/file1的lob定位符,并不是文件本身。
(2)利用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 VARCHAR2,
p_Filename IN VARCHAR2
) AS
v_FileLocator BFILE;
v_CLOBLocator CLOB;
BEGIN
--为update初始化一个定位符
SELECT clob_col
INTO v_CLOBLocator
FROM lobdemo
WHERE key=-1
FOR UPDATE;
--为读文件初始化一个BFILE定位符
v
[1]
正在看的ORACLE教程是:Oracle数据库处理多媒体信息。_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推出的对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;
[NextPage]
五.多媒体数据库技术难点与展望
可以说,多媒体数据的高效管理是IT技术发展的必然要求,随着多媒体信息需求的进一步加强,多媒体数据库技术将会有更大的发展,从Oracle数据库中我们可以看出,无论在数据类型,数据管理,还是开发管理工具上,现在的主流关系数据库已经具有很强的多媒体信息管理能力。但是我们不能不遗憾的看到,对一些多媒体数据所特有的操作(比如对多媒体信息的查询)能力还是很有限的。
一个问题就是多媒体数据的特殊操作实现,因为lob型数据是二进制的大对象,他不能简单的按照一般数据的操作符来进行计算。比如,要查出一个数据表中与某首歌相似的音频。那么对于这个'相似'操作来说,它得不到传统的操作符的支持,而且它将涉及很复杂的算法。可喜的是,Oracle9i Intermedia已经具有多媒体数据的查询与匹配功能,例如,可以从质地(texture),形状,颜色,颜色分量等要素进行相似图象的查询,在查询时可以设置各个要素的权值,测试的结果还是差强人意的。但是对audio,video等类型数据的查询仍然不够理想。
另外,如何描述多媒体信息,怎样根据你对多媒体信息的描述来检索,也是一个难点问题,比如这个查询任务:查询出颜色比较暗的并且有森林的风景照片,这就是根据描述性信息进行查询的例子。这将需要某种行业标准和技术实现。总之,如何实现和优化针对多媒体数据的特殊操作(如相似查询等),将是以后多媒体数据库研究和应用中的热点问题。
另外一个重要的问题就是针对多媒体数据库的性能调优,原先的调优方法如索引优化等仍然适用,但是现在遇到了新的问题:多媒体数据是庞大的,那么对多媒体信息的操作(尤其是检索)开销巨大,那么如何降低这种开销,缩短操作时间,又是一个重要课题。
上一页
[2]

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











InnoDB의 전체 텍스트 검색 기능은 매우 강력하여 데이터베이스 쿼리 효율성과 대량의 텍스트 데이터를 처리 할 수있는 능력을 크게 향상시킬 수 있습니다. 1) InnoDB는 기본 및 고급 검색 쿼리를 지원하는 역 색인화를 통해 전체 텍스트 검색을 구현합니다. 2) 매치 및 키워드를 사용하여 검색, 부울 모드 및 문구 검색을 지원합니다. 3) 최적화 방법에는 워드 세분화 기술 사용, 인덱스의 주기적 재건 및 캐시 크기 조정, 성능과 정확도를 향상시키는 것이 포함됩니다.

이 기사는 MySQL의 Alter Table 문을 사용하여 열 추가/드롭 테이블/열 변경 및 열 데이터 유형 변경을 포함하여 테이블을 수정하는 것에 대해 설명합니다.

예, MySQL은 Windows 7에 설치 될 수 있으며 Microsoft는 Windows 7 지원을 중단했지만 MySQL은 여전히 호환됩니다. 그러나 설치 프로세스 중에 다음 지점이 표시되어야합니다. Windows 용 MySQL 설치 프로그램을 다운로드하십시오. MySQL의 적절한 버전 (커뮤니티 또는 기업)을 선택하십시오. 설치 프로세스 중에 적절한 설치 디렉토리 및 문자를 선택하십시오. 루트 사용자 비밀번호를 설정하고 올바르게 유지하십시오. 테스트를 위해 데이터베이스에 연결하십시오. Windows 7의 호환성 및 보안 문제에 주목하고 지원되는 운영 체제로 업그레이드하는 것이 좋습니다.

전체 테이블 스캔은 MySQL에서 인덱스를 사용하는 것보다 빠를 수 있습니다. 특정 사례는 다음과 같습니다. 1) 데이터 볼륨은 작습니다. 2) 쿼리가 많은 양의 데이터를 반환 할 때; 3) 인덱스 열이 매우 선택적이지 않은 경우; 4) 복잡한 쿼리시. 쿼리 계획을 분석하고 인덱스 최적화, 과도한 인덱스를 피하고 정기적으로 테이블을 유지 관리하면 실제 응용 프로그램에서 최상의 선택을 할 수 있습니다.

기사는 인증서 생성 및 확인을 포함하여 MySQL에 대한 SSL/TLS 암호화 구성에 대해 설명합니다. 주요 문제는 자체 서명 인증서의 보안 영향을 사용하는 것입니다. [문자 수 : 159]

기사는 MySQL Workbench 및 Phpmyadmin과 같은 인기있는 MySQL GUI 도구에 대해 논의하여 초보자 및 고급 사용자를위한 기능과 적합성을 비교합니다. [159 자].

클러스터 인덱스와 비 클러스터 인덱스의 차이점은 1. 클러스터 된 인덱스는 인덱스 구조에 데이터 행을 저장하며, 이는 기본 키 및 범위별로 쿼리에 적합합니다. 2. 클러스터되지 않은 인덱스는 인덱스 키 값과 포인터를 데이터 행으로 저장하며 비 예산 키 열 쿼리에 적합합니다.

기사는 MySQL에서 파티셔닝, 샤딩, 인덱싱 및 쿼리 최적화를 포함하여 대규모 데이터 세트를 처리하기위한 전략에 대해 설명합니다.
