激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Oracle - Oracle數據庫處理多媒體信息

Oracle數據庫處理多媒體信息

2019-10-25 16:28Oracle教程網 Oracle

引文:長期以來,多媒體信息在計算機中都是以文件形式存放,由操作系統管理的,但是隨著計算機網絡,分布式計算的發展,對多媒體信息進行高效的管理,存取,查詢已經成了一種迫切需求。而關系 數據庫 卻有著強大的數據

引文:長期以來,多媒體信息在計算機中都是以文件形式存放,由操作系統管理的,但是隨著計算機網絡,分布式計算的發展,對多媒體信息進行高效的管理,存取,查詢已經成了一種迫切需求。而關系數據庫卻有著強大的數據管理能力。兩方面結合,多媒體數據庫由此應運而生。本文將就Oracle對多媒體信息進行處理的方式,工具,特色以及一些基本原理做一個綜述。

但是我們不能不遺憾的看到,現有數據庫對一些多媒體數據所特有的操作能力還是很有限的。針對多媒體數據庫的性能調優現在也遇到了新的問題。雖然如此,多媒體數據庫仍舊產生了廣闊的應用價值和前景。

當然本文不可能面面俱到,有關Oracle多媒體信息處理的具體內容,請查閱Oracle相關手冊。

一.應用前景綜述

隨著計算機處理能力的大副提高,多媒體早已經融入到了計算機當中了,如果缺少了多媒體,缺少了各種多姿多采的圖象,音頻,視頻,很難想象計算機如今會走入千家萬戶。長期以來,多媒體信息在計算機中都是以文件形式存放,由操作系統管理的,但是隨著計算機網絡,分布式計算的發展,這種單純的文件式管理已經力不從心了,對多媒體信息進行高效的管理,存取,查詢已經成了一種迫切需求。而關系數據庫卻有著強大的數據管理能力。兩方面密切結合,多媒體數據庫由此應運而生。可以預見,隨著多媒體處理需求的加強,多媒體數據庫的應用將越來越廣泛。

Oracle作為一家著名的數據庫廠商,在多媒體信息處理上,更是走在了前邊。本文將就Oracle對多媒體信息進行處理的方式,工具,特色以及一些基本原理做一個綜述。希望對讀者有所啟發。當然,關系數據庫還有好多家,雖然開發工具,編程接口語句各異,但在數據類型、處理方式上比較相似。所以我們在此略過。

二.多媒體數據類型介紹

在關系型數據庫中,多媒體信息等大型對象是由lob型字段來進行存取的。在Oracle8i中,正式引入了此標準,以適應多媒體大對象處理的需求。Oracle數據庫中,lob型數據有以下幾種:

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

Lob類型說明

Clob:和Oracle7的long型相似,clob可以存儲單字節型數據

Nclob:Nclob存儲定寬的多字節國家字符集數據

Blob:和Oracle7中的longraw類型相似。可以存儲無結構的二進制數據。Oracle8沒有對這種數據進行解釋,只是按照原來的形式存儲和檢索它。

Bfile:Bfile允許對Oracle數據庫以外存儲的大型二進制文件進行只讀形式的訪問。和其它三種lob類型數據不同的是,bfile類型數據存儲在一個單獨的文件中,該文件不由Oracle來維護。

特點:

1.在Oracle7中,相應的long或longraw字段有2g的限制,而lob的限制是4g。

2.lob可以使用調用接口OCI或者由pl/sql利用dbms_lob包進行操縱。

3.lob不象long型那樣每個表中最多只有一個字段的限制,其可以有多個,而又可以利用觸發器的特性。

4.lob數據處理可以獲得與其它數據同樣的事物特性。

5.lob的存儲比較特殊,它并不是跟其他數據存儲在同一個數據庫表中,而是可以單獨存放于不同的表空間中,由一個定位符指向實際的lob數據。

三.多媒體大對象存取例程舉例

按照如下步驟來完成各個操作:

(1)先建立一個數據庫表:

createtablelobdemo(keyNUMBERKEY,clob_colCLOB,blob_colBLOB,bifle_colBFILE);

這個數據庫第一列存儲一個碼,另外三列存儲lob型數據。

(2)表建好以后,往表中插入一條數據:

insertintolobdemo(key,clob_col,blob_col,bfile_col)values(10,'abcdefghijklmnopqrsatuvwxyzasdffasfsdafsdafsdfadfsadfsdfsdfdsdsffds',empty_blob(),null);

在這一條數據中,第二列我們插入一個字符串,它被格式化為clob類型數據進行存儲;第二列我們使用empty_blob()函數來初始化一個定位符,以后就可以獲取這個定位符進行比如select,update等操作了;第三列賦空值,它并沒有獲得一個定位符,這是與empty_blob()函數的區別。

(3)查詢插入表中的數據

selectblob_colfromboldemowherekey=20;

注意:這一sql語句的返回結果是一個定位符(locator),而不是實際的數據本身。

(4)修改數據庫中數據

updatelobdemoSETblob_col='aedevbagddgagdfdfasasdfdsa'wherekey=10;

從這些sql語句當中,我們看到了lob型數據處理的基本方法,發現與其他類型數據處理相似。但是sql語句中lob型數據處理的特殊性在于以下方面:

(1)bfile文件的處理:

bfile類型有著特殊性,跟clob,blob不同。實際的數據文件存儲在操作系統的外面:所以有兩個特點:1.沒有事務性控制2.bfile是只讀的,不能用dbms_lob或oracl8oci進行修改。讓我們來看對bfile的操作步驟:

<1>為了訪問外部文件,服務器需要知道文件在操作系統中的位置。下面我們建立一個目錄:

createDIRECTORYutilsAS'/home/utils';

utils表示目錄邏輯名,'/home/utils'是實際目錄。

<2>使用bfilename函數插入一行數據:

insertintolobdemo(key,bfile_col)values(-1,biflename('utils','file1'));

bfilename函數的第一個參數是邏輯目錄名,第二個參數是文件名。注意:這一行中插入的是一個指向/home/utils/file1的lob定位符,并不是文件本身。

(2)利用dbms_lob包進行lob數據操作

sql僅可以操縱整個lob,而不能操縱數據片。dbms_lob包則放開了這個限制,它提供對lob數據中數據片的操作。這個包中包含十幾個例程,讀者可以查閱Oraclepl/sql手冊,本文只介紹三個函數:fileopen()用來打開一個操作系統文件;loadfromfile()例程用來往目標lob字段填充一個操作系統文件,這個函數很有實用價值,因為有許多lob內容在sql語句中是不可描述的,例如一個二進制音頻文件,而用這個函數可以將文件內容導入到數據庫;getlength函數計算文件的長度。請看下面一個存儲過程中這三個函數的使用:

createorreplaceprocedureFileExec(

p_DirectoryinVARCHAR2,

p_FilenameINVARCHAR2

)AS

v_FileLocatorBFILE;

v_CLOBLocatorCLOB;

BEGIN

--為update初始化一個定位符

SELECTclob_col

INTOv_CLOBLocator

FROMlobdemo

WHEREkey=-1

FORUPDATE;

--為讀文件初始化一個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));

ENDFileExec;

四.OracleInterMedia工具介紹

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)定義一個歌曲對象:

CREATETYPEsongObjectasOBJECT(

songIdVARCHAR2(20),--歌曲號

titleVARCHAR2(4000),--題目

artistVARCHAR2(4000),--作家

awardsVARCHAR2(4000),--獎項

timePeriodVARCHAR2(20),--日期時間

txtinroductionCLOB,--簡介

audioSourceORDSYS.ORDAUDIO--音頻數據,這個字段由ORDAUDIO對象來定義。

);

(2)建立一個名為songtable的表:

CREATETABLESongsTableofsongObject(UNIQUE(songId),songIdNOTNULL);

(3)插入一行數據到SongsTable表中

INSERTINTOSongsTableVALUES('00',

'UnderPressure',

'Queen',

'noawards',

'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

audioObjORDSYS.ORDAUDIO;

ctxRAW(4000):=NULL;

BEGIN

--取得audioSource字段定位符

SELECTS.audioSourceINTOaudioObj

FROMSongsTableS

WHERES.songId='00'

FORUPDATE;

--下面的四個函數是ORDAUDIO對象的成員函數,具體功能請查看Oracle開發手冊

audioObj.setSource('FILE','AUDDIR','UnderPressure.au');--設定文件

audioObj.setMimeType('audio/basic');--設定類型

audioObj.import(ctx);--載入ctx

audioObj.setProperties(ctx);--設置屬性

--將歌曲對象載入到數據庫表中

UPDATESongsTableS

SETS.audioSource=audioObj

WHERES.songId='00';

COMMIT;

END;

五.多媒體數據庫技術難點與展望

可以說,多媒體數據的高效管理是IT技術發展的必然要求,隨著多媒體信息需求的進一步加強,多媒體數據庫技術將會有更大的發展,從Oracle數據庫中我們可以看出,無論在數據類型,數據管理,還是開發管理工具上,現在的主流關系數據庫已經具有很強的多媒體信息管理能力。但是我們不能不遺憾的看到,對一些多媒體數據所特有的操作(比如對多媒體信息的查詢)能力還是很有限的。

一個問題就是多媒體數據的特殊操作實現,因為lob型數據是二進制的大對象,他不能簡單的按照一般數據的操作符來進行計算。比如,要查出一個數據表中與某首歌相似的音頻。那么對于這個'相似'操作來說,它得不到傳統的操作符的支持,而且它將涉及很復雜的算法。可喜的是,Oracle9iIntermedia已經具有多媒體數據的查詢與匹配功能,例如,可以從質地(texture),形狀,顏色,顏色分量等要素進行相似圖象的查詢,在查詢時可以設置各個要素的權值,測試的結果還是差強人意的。但是對audio,video等類型數據的查詢仍然不夠理想。

另外,如何描述多媒體信息,怎樣根據你對多媒體信息的描述來檢索,也是一個難點問題,比如這個查詢任務:查詢出顏色比較暗的并且有森林的風景照片,這就是根據描述性信息進行查詢的例子。這將需要某種行業標準和技術實現。總之,如何實現和優化針對多媒體數據的特殊操作(如相似查詢等),將是以后多媒體數據庫研究和應用中的熱點問題。

另外一個重要的問題就是針對多媒體數據庫的性能調優,原先的調優方法如索引優化等仍然適用,但是現在遇到了新的問題:多媒體數據是龐大的,那么對多媒體信息的操作(尤其是檢索)開銷巨大,那么如何降低這種開銷,縮短操作時間,又是一個重要課題。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 操碰视频在线观看 | 在线中文字幕不卡 | 中文在线日韩 | 欧美成人福利 | 香蕉视频1024 | 一级毛片播放 | 999av视频 | 成人毛片免费 | 久久国产成人精品国产成人亚洲 | 欧日韩在线视频 | 国产精品久久久久av | 五月婷六月丁香狠狠躁狠狠爱 | 国产chinesehd精品91 | 免费亚洲视频在线观看 | 鲁久久 | 欧美黄色免费视频 | 欧美视频网 | 神马久久精品综合 | 亚洲国产精品久久久久婷婷老年 | 亚洲网视频| 91一级毛片 | 欧美一级黄视频 | a黄色网| 久久久久91视频 | 欧美另类视频在线 | 久久久www成人免费精品 | 免费黄色日韩电影 | 黄色毛片前黄 | 黑人日比视频 | 久久99精品国产99久久6男男 | av手机在线电影 | 久久久久久久国产视频 | 中国精品久久 | 大学生a级毛片免费视频 | 日本黄网 | 波多电影| 91短视频在线播放 | 99ri在线 | 国产精品久久久久久久久久免 | 久久影片 | 国产午夜精品久久久久 |