Oracle數(shù)據(jù)庫(kù)處理多媒體信息
正在看的ORACLE教程是:Oracle數(shù)據(jù)庫(kù)處理多媒體信息。引文:
長(zhǎng)期以來(lái),多媒體信息在計(jì)算機(jī)中都是以文件形式存放,由操作系統(tǒng)管理的,但是隨著計(jì)算機(jī)網(wǎng)絡(luò),分布式計(jì)算的發(fā)展,對(duì)多媒體信息進(jìn)行高效的管理,存取,查詢已經(jīng)成了一種迫切需求。而關(guān)系數(shù)據(jù)庫(kù)卻有著強(qiáng)大的數(shù)據(jù)管理能力。兩方面結(jié)合,多媒體數(shù)據(jù)庫(kù)由此應(yīng)運(yùn)而生。本文將就Oracle對(duì)多媒體信息進(jìn)行處理的方式,工具,特色以及一些基本原理做一個(gè)綜述。
但是我們不能不遺憾的看到,現(xiàn)有數(shù)據(jù)庫(kù)對(duì)一些多媒體數(shù)據(jù)所特有的操作能力還是很有限的。針對(duì)多媒體數(shù)據(jù)庫(kù)的性能調(diào)優(yōu)現(xiàn)在也遇到了新的問(wèn)題。雖然如此,多媒體數(shù)據(jù)庫(kù)仍舊產(chǎn)生了廣闊的應(yīng)用價(jià)值和前景。
當(dāng)然本文不可能面面俱到,有關(guān)Oracle多媒體信息處理的具體內(nèi)容,請(qǐng)查閱Oracle相關(guān)手冊(cè)。
一.應(yīng)用前景綜述
隨著計(jì)算機(jī)處理能力的大副提高,多媒體早已經(jīng)融入到了計(jì)算機(jī)當(dāng)中了,如果缺少了多媒體,缺少了各種多姿多采的圖象,音頻,視頻,很難想象計(jì)算機(jī)如今會(huì)走入千家萬(wàn)戶。長(zhǎng)期以來(lái),多媒體信息在計(jì)算機(jī)中都是以文件形式存放,由操作系統(tǒng)管理的,但是隨著計(jì)算機(jī)網(wǎng)絡(luò),分布式計(jì)算的發(fā)展,這種單純的文件式管理已經(jīng)力不從心了,對(duì)多媒體信息進(jìn)行高效的管理,存取,查詢已經(jīng)成了一種迫切需求。而關(guān)系數(shù)據(jù)庫(kù)卻有著強(qiáng)大的數(shù)據(jù)管理能力。兩方面密切結(jié)合,多媒體數(shù)據(jù)庫(kù)由此應(yīng)運(yùn)而生。可以預(yù)見(jiàn),隨著多媒體處理需求的加強(qiáng),多媒體數(shù)據(jù)庫(kù)的應(yīng)用將越來(lái)越廣泛。
Oracle作為一家著名的數(shù)據(jù)庫(kù)廠商,在多媒體信息處理上,更是走在了前邊。本文將就Oracle對(duì)多媒體信息進(jìn)行處理的方式,工具,特色以及一些基本原理做一個(gè)綜述。希望對(duì)讀者有所啟發(fā)。當(dāng)然,關(guān)系數(shù)據(jù)庫(kù)還有好多家,雖然開(kāi)發(fā)工具,編程接口語(yǔ)句各異,但在數(shù)據(jù)類型、處理方式上比較相似。所以我們?cè)诖寺赃^(guò)。
二.多媒體數(shù)據(jù)類型介紹
在關(guān)系型數(shù)據(jù)庫(kù)中,多媒體信息等大型對(duì)象是由lob型字段來(lái)進(jìn)行存取的。在Oracle8i中,正式引入了此標(biāo)準(zhǔn),以適應(yīng)多媒體大對(duì)象處理的需求。Oracle數(shù)據(jù)庫(kù)中,lob型數(shù)據(jù)有以下幾種:
--------------------------------------------
Lob類型 說(shuō)明
Clob: 和Oracle7的long型相似,clob可以存儲(chǔ)單字節(jié)型數(shù)據(jù)
Nclob: Nclob存儲(chǔ)定寬的多字節(jié)國(guó)家字符集數(shù)據(jù)
Blob: 和Oracle7中的long raw類型相似。可以存儲(chǔ)無(wú)結(jié)構(gòu)的二進(jìn)制數(shù)據(jù)。Oracle8沒(méi)有對(duì)這種數(shù)據(jù)進(jìn)行解釋 ,只是按照原來(lái)的形式存儲(chǔ)和檢索它。
Bfile: Bfile允許對(duì)Oracle數(shù)據(jù)庫(kù)以外存儲(chǔ)的大型二進(jìn)制文件進(jìn)行只讀形式的訪問(wèn)。和其它三種lob類型數(shù)據(jù) 不同的是,bfile類型數(shù)據(jù)存儲(chǔ)在一個(gè)單獨(dú)的文件中,該文件不由Oracle來(lái)維護(hù)。
特點(diǎn):
1.在Oracle7中,相應(yīng)的long或long raw字段有2g的限制,而lob的限制是4g 。
2.lob可以使用調(diào)用接口OCI或者由pl/sql利用dbms_lob包進(jìn)行操縱。
3.lob不象long型那樣每個(gè)表中最多只有一個(gè)字段的限制,其可以有多個(gè),而又可以利用觸發(fā)器的特性。
4.lob數(shù)據(jù)處理可以獲得與其它數(shù)據(jù)同樣的事物特性。
5.lob的存儲(chǔ)比較特殊,它并不是跟其他數(shù)據(jù)存儲(chǔ)在同一個(gè)數(shù)據(jù)庫(kù)表中,而是可以單獨(dú)存放于不同的表空間中,由一個(gè)定位符指向?qū)嶋H的lob數(shù)據(jù)。
[NextPage] 三.多媒體大對(duì)象存取例程舉例
按照如下步驟來(lái)完成各個(gè)操作:
(1)先建立一個(gè)數(shù)據(jù)庫(kù)表:
create table lobdemo(key NUMBER KEY,clob_col CLOB,blob_col BLOB,bifle_col BFILE);
這個(gè)數(shù)據(jù)庫(kù)第一列存儲(chǔ)一個(gè)碼,另外三列存儲(chǔ)lob型數(shù)據(jù)。
(2)表建好以后,往表中插入一條數(shù)據(jù):
insert into lobdemo(key,clob_col,blob_col,bfile_col) values (10,'abcdefghijklmnopqrsatuvwxyzasdffasfsdafsdafsdfadfsadfsdfsdfdsdsffds',empty_blob(),null);
在這一條數(shù)據(jù)中,第二列我們插入一個(gè)字符串,它被格式化為clob類型數(shù)據(jù)進(jìn)行存儲(chǔ);第二列我們使用empty_blob()函數(shù)來(lái)初始化一個(gè)定位符,以后就可以獲取這個(gè)定位符進(jìn)行比如select,update等操作了;第三列賦空值,它并沒(méi)有獲得一個(gè)定位符,這是與empty_blob()函數(shù)的區(qū)別。
(3)查詢插入表中的數(shù)據(jù)
select blob_col from boldemo where key=20;
注意:這一sql語(yǔ)句的返回結(jié)果是一個(gè)定位符(locator),而不是實(shí)際的數(shù)據(jù)本身。
(4)修改數(shù)據(jù)庫(kù)中數(shù)據(jù)
update lobdemo SET blob_col='aedevbagddgagdfdfasasdfdsa' where key=10;
從這些sql語(yǔ)句當(dāng)中,我們看到了lob型數(shù)據(jù)處理的基本方法,發(fā)現(xiàn)與其他類型數(shù)據(jù)處理相似。但是sql語(yǔ)句中l(wèi)ob型數(shù)據(jù)處理的特殊性在于以下方面:
(1)bfile文件的處理:
bfile類型有著特殊性,跟clob,blob不同。實(shí)際的數(shù)據(jù)文件存儲(chǔ)在操作系統(tǒng)的外面:所以有兩個(gè)特點(diǎn):1.沒(méi)有事務(wù)性控制 2.bfile是只讀的,不能用dbms_lob或oracl8 oci進(jìn)行修改。讓我們來(lái)看對(duì)bfile的操作步驟:
<1> 為了訪問(wèn)外部文件,服務(wù)器需要知道文件在操作系統(tǒng)中的位置。下面我們建立一個(gè)目錄:
create DIRECTORY utils AS '/home/utils';
utils表示目錄邏輯名,'/home/utils'是實(shí)際目錄。
<2>使用bfilename函數(shù)插入一行數(shù)據(jù):
insert into lobdemo(key,bfile_col) values (-1,biflename('utils','file1'));
bfilename函數(shù)的第一個(gè)參數(shù)是邏輯目錄名,第二個(gè)參數(shù)是文件名。注意:這一行中插入的是一個(gè)指向/home/utils/file1的lob定位符,并不是文件本身。
(2)利用dbms_lob包進(jìn)行l(wèi)ob數(shù)據(jù)操作
sql僅可以操縱整個(gè)lob,而不能操縱數(shù)據(jù)片。dbms_lob包則放開(kāi)了這個(gè)限制,它提供對(duì)lob數(shù)據(jù)中數(shù)據(jù)片的操作。這個(gè)包中包含十幾個(gè)例程,讀者可以查閱Oracle pl/sql手冊(cè),本文只介紹三個(gè)函數(shù):fileopen()用來(lái)打開(kāi)一個(gè)操作系統(tǒng)文件;loadfromfile()例程用來(lái)往目標(biāo)lob字段填充一個(gè)操作系統(tǒng)文件,這個(gè)函數(shù)很有實(shí)用價(jià)值,因?yàn)橛性S多l(xiāng)ob內(nèi)容在sql語(yǔ)句中是不可描述的,例如一個(gè)二進(jìn)制音頻文件,而用這個(gè)函數(shù)可以將文件內(nèi)容導(dǎo)入到數(shù)據(jù)庫(kù);getlength函數(shù)計(jì)算文件的長(zhǎng)度。請(qǐng)看下面一個(gè)存儲(chǔ)過(guò)程中這三個(gè)函數(shù)的使用:
create or replace procedure FileExec(
p_Directory in VARCHAR2,
p_Filename IN VARCHAR2
) AS
v_FileLocator BFILE;
v_CLOBLocator CLOB;
BEGIN
--為update初始化一個(gè)定位符
SELECT clob_col
INTO v_CLOBLocator
FROM lobdemo
WHERE key=-1
FOR UPDATE;
--為讀文件初始化一個(gè)BFILE定位符
v
[1]
正在看的ORACLE教程是:Oracle數(shù)據(jù)庫(kù)處理多媒體信息。_FileLocator:=BFILEOPEN(p_Derectory,p_Filename);--用dbms_lob包的fileopen打開(kāi)一個(gè)操作系統(tǒng)文件
DBMS_LOB.FILEOPEN(v_FileLocator,DBMS_LOB.FILE_READONLY);
--將整個(gè)操作系統(tǒng)文件裝入lob中
DBMS_LOB.LOADFROMFILE(v_CLOBLocator,v_FileLocator,DBMS_LOB.GETLENGTH(v_FileLocator));
END FileExec;
四.Oracle InterMedia工具介紹
interMedia是Oracle推出的對(duì)Oracle8i多媒體功能進(jìn)行擴(kuò)充的一個(gè)集成部件,它使得Oracle能夠更方便的管理圖象、音頻、視頻、文本等信息。使得Oracle在internet,電子商務(wù)等領(lǐng)域多媒體數(shù)據(jù)的管理上可靠性與可用性增強(qiáng)。它包括image, audio, video三部份。interMedia使用對(duì)象類型,類似于JAVA或C++,來(lái)描述image, audio, video類型數(shù)據(jù),Oracle在這三類對(duì)象類型中定義了許多方法來(lái)操作這些數(shù)據(jù),如對(duì)于 image類型數(shù)據(jù)來(lái)說(shuō),你可以很方便地進(jìn)行圖形格式轉(zhuǎn)換,壓縮,拷貝,截取圖形的任何一部份等,而這些是普通LOB類型數(shù)據(jù)所無(wú)法比擬的,普通sql語(yǔ)句也無(wú)法完成這些操作。
Internet的發(fā)展更突出了interMedia在WEB應(yīng)用中的價(jià)值,現(xiàn)有的WEB應(yīng)用絕大多數(shù)將image,audio,video等多媒體信息存在文件系統(tǒng)中,其優(yōu)點(diǎn)是操作簡(jiǎn)單,速度快,缺點(diǎn)是管理復(fù)雜,尤其是管理大量image時(shí)就受到目錄數(shù)等的限制。如果將image保存在數(shù)據(jù)庫(kù)中,由數(shù)據(jù)庫(kù)來(lái)統(tǒng)一維護(hù),統(tǒng)一備份,這樣就可以簡(jiǎn)化管理。
Intermedia中定義了幾個(gè)多媒體對(duì)象類型,例如ORDAUDIO就是其中一個(gè),它提供一些audio對(duì)象類型數(shù)據(jù)的操縱函數(shù)。下面我們來(lái)看一個(gè)例子,在這個(gè)例子中我們定義一個(gè)歌曲對(duì)象,建立一個(gè)歌曲對(duì)象的表,并對(duì)該表進(jìn)行插入與查詢操作。
(1)定義一個(gè)歌曲對(duì)象:
CREATE TYPE songObject as OBJECT (
songId VARCHAR2(20), --歌曲號(hào)
title VARCHAR2(4000), --題目
artist VARCHAR2(4000), --作家
awards VARCHAR2(4000), --獎(jiǎng)項(xiàng)
timePeriod VARCHAR2(20), --日期時(shí)間
txtinroduction CLOB, --簡(jiǎn)介
audioSource ORDSYS.ORDAUDIO --音頻數(shù)據(jù),這個(gè)字段由ORDAUDIO對(duì)象來(lái)定義。
);
(2)建立一個(gè)名為songtable的表:
CREATE TABLE SongsTable of songObject (UNIQUE (songId), songId NOT NULL);
(3)插入一行數(shù)據(jù)到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()函數(shù)只是初始化一個(gè)lob數(shù)據(jù)定位符,而沒(méi)有存儲(chǔ)實(shí)際的數(shù)據(jù)。
(4)向SongsTable表中載入一行數(shù)據(jù):
DECLARE
audioObj ORDSYS.ORDAUDIO;
ctx RAW(4000) := NULL;
BEGIN
--取得audioSource字段定位符
SELECT S.audioSource INTO audioObj
FROM SongsTable S
WHERE S.songId = '00'
FOR UPDATE;
--下面的四個(gè)函數(shù)是ORDAUDIO對(duì)象的成員函數(shù),具體功能請(qǐng)查看Oracle開(kāi)發(fā)手冊(cè)
audioObj.setSource('FILE', 'AUDDIR', 'UnderPressure.au');--設(shè)定文件
audioObj.setMimeType('audio/basic'); --設(shè)定類型
audioObj.import(ctx); --載入ctx
audioObj.setProperties(ctx); --設(shè)置屬性
--將歌曲對(duì)象載入到數(shù)據(jù)庫(kù)表中
UPDATE SongsTable S
SET S.audioSource = audioObj
WHERE S.songId = '00';
COMMIT;
END;
[NextPage] 五.多媒體數(shù)據(jù)庫(kù)技術(shù)難點(diǎn)與展望
可以說(shuō),多媒體數(shù)據(jù)的高效管理是IT技術(shù)發(fā)展的必然要求,隨著多媒體信息需求的進(jìn)一步加強(qiáng),多媒體數(shù)據(jù)庫(kù)技術(shù)將會(huì)有更大的發(fā)展,從Oracle數(shù)據(jù)庫(kù)中我們可以看出,無(wú)論在數(shù)據(jù)類型,數(shù)據(jù)管理,還是開(kāi)發(fā)管理工具上,現(xiàn)在的主流關(guān)系數(shù)據(jù)庫(kù)已經(jīng)具有很強(qiáng)的多媒體信息管理能力。但是我們不能不遺憾的看到,對(duì)一些多媒體數(shù)據(jù)所特有的操作(比如對(duì)多媒體信息的查詢)能力還是很有限的。
一個(gè)問(wèn)題就是多媒體數(shù)據(jù)的特殊操作實(shí)現(xiàn),因?yàn)閘ob型數(shù)據(jù)是二進(jìn)制的大對(duì)象,他不能簡(jiǎn)單的按照一般數(shù)據(jù)的操作符來(lái)進(jìn)行計(jì)算。比如,要查出一個(gè)數(shù)據(jù)表中與某首歌相似的音頻。那么對(duì)于這個(gè)'相似'操作來(lái)說(shuō),它得不到傳統(tǒng)的操作符的支持,而且它將涉及很復(fù)雜的算法。可喜的是,Oracle9i Intermedia已經(jīng)具有多媒體數(shù)據(jù)的查詢與匹配功能,例如,可以從質(zhì)地(texture),形狀,顏色,顏色分量等要素進(jìn)行相似圖象的查詢,在查詢時(shí)可以設(shè)置各個(gè)要素的權(quán)值,測(cè)試的結(jié)果還是差強(qiáng)人意的。但是對(duì)audio,video等類型數(shù)據(jù)的查詢?nèi)匀徊粔蚶硐搿?
另外,如何描述多媒體信息,怎樣根據(jù)你對(duì)多媒體信息的描述來(lái)檢索,也是一個(gè)難點(diǎn)問(wèn)題,比如這個(gè)查詢?nèi)蝿?wù):查詢出顏色比較暗的并且有森林的風(fēng)景照片,這就是根據(jù)描述性信息進(jìn)行查詢的例子。這將需要某種行業(yè)標(biāo)準(zhǔn)和技術(shù)實(shí)現(xiàn)。總之,如何實(shí)現(xiàn)和優(yōu)化針對(duì)多媒體數(shù)據(jù)的特殊操作(如相似查詢等),將是以后多媒體數(shù)據(jù)庫(kù)研究和應(yīng)用中的熱點(diǎn)問(wèn)題。
另外一個(gè)重要的問(wèn)題就是針對(duì)多媒體數(shù)據(jù)庫(kù)的性能調(diào)優(yōu),原先的調(diào)優(yōu)方法如索引優(yōu)化等仍然適用,但是現(xiàn)在遇到了新的問(wèn)題:多媒體數(shù)據(jù)是龐大的,那么對(duì)多媒體信息的操作(尤其是檢索)開(kāi)銷巨大,那么如何降低這種開(kāi)銷,縮短操作時(shí)間,又是一個(gè)重要課題。
上一頁(yè)
[2]
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com