佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > Oracle數(shù)據(jù)庫處理多媒體信息

Oracle數(shù)據(jù)庫處理多媒體信息

熱門標簽:服務外包 網(wǎng)站排名優(yōu)化 AI電銷 地方門戶網(wǎng)站 Linux服務器 鐵路電話系統(tǒng) 呼叫中心市場需求 百度競價排名
正在看的ORACLE教程是:Oracle數(shù)據(jù)庫處理多媒體信息。

引文:

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

  但是我們不能不遺憾的看到,現(xiàn)有數(shù)據(jù)庫對一些多媒體數(shù)據(jù)所特有的操作能力還是很有限的。針對多媒體數(shù)據(jù)庫的性能調(diào)優(yōu)現(xiàn)在也遇到了新的問題。雖然如此,多媒體數(shù)據(jù)庫仍舊產(chǎn)生了廣闊的應用價值和前景。
當然本文不可能面面俱到,有關Oracle多媒體信息處理的具體內(nèi)容,請查閱Oracle相關手冊。

  一.應用前景綜述

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

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

  二.多媒體數(shù)據(jù)類型介紹

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

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

  Lob類型 說明

  Clob: 和Oracle7的long型相似,clob可以存儲單字節(jié)型數(shù)據(jù)

  Nclob: Nclob存儲定寬的多字節(jié)國家字符集數(shù)據(jù)

  Blob: 和Oracle7中的long raw類型相似。可以存儲無結(jié)構(gòu)的二進制數(shù)據(jù)。Oracle8沒有對這種數(shù)據(jù)進行解釋 ,只是按照原來的形式存儲和檢索它。

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

  特點:

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

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

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

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

  5.lob的存儲比較特殊,它并不是跟其他數(shù)據(jù)存儲在同一個數(shù)據(jù)庫表中,而是可以單獨存放于不同的表空間中,由一個定位符指向?qū)嶋H的lob數(shù)據(jù)。

[NextPage]

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

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

 ?。?)先建立一個數(shù)據(jù)庫表:

    create table lobdemo(key NUMBER KEY,clob_col CLOB,blob_col BLOB,bifle_col BFILE);

  這個數(shù)據(jù)庫第一列存儲一個碼,另外三列存儲lob型數(shù)據(jù)。

 ?。?)表建好以后,往表中插入一條數(shù)據(jù):

    insert into lobdemo(key,clob_col,blob_col,bfile_col) values (10,'abcdefghijklmnopqrsatuvwxyzasdffasfsdafsdafsdfadfsadfsdfsdfdsdsffds',empty_blob(),null);

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

 ?。?)查詢插入表中的數(shù)據(jù)

    select blob_col from boldemo where key=20;

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

 ?。?)修改數(shù)據(jù)庫中數(shù)據(jù)

    update lobdemo SET blob_col='aedevbagddgagdfdfasasdfdsa' where key=10;

  從這些sql語句當中,我們看到了lob型數(shù)據(jù)處理的基本方法,發(fā)現(xiàn)與其他類型數(shù)據(jù)處理相似。但是sql語句中l(wèi)ob型數(shù)據(jù)處理的特殊性在于以下方面:

  (1)bfile文件的處理:

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

  1> 為了訪問外部文件,服務器需要知道文件在操作系統(tǒng)中的位置。下面我們建立一個目錄:
create DIRECTORY utils AS '/home/utils';
utils表示目錄邏輯名,'/home/utils'是實際目錄。

  2>使用bfilename函數(shù)插入一行數(shù)據(jù):

   insert into lobdemo(key,bfile_col) values (-1,biflename('utils','file1'));

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

 ?。?)利用dbms_lob包進行l(wèi)ob數(shù)據(jù)操作

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

  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] [2] 下一頁

正在看的ORACLE教程是:Oracle數(shù)據(jù)庫處理多媒體信息。_FileLocator:=BFILEOPEN(p_Derectory,p_Filename);

  --用dbms_lob包的fileopen打開一個操作系統(tǒng)文件

   DBMS_LOB.FILEOPEN(v_FileLocator,DBMS_LOB.FILE_READONLY);

  --將整個操作系統(tǒng)文件裝入lob中

   DBMS_LOB.LOADFROMFILE(v_CLOBLocator,v_FileLocator,DBMS_LOB.GETLENGTH(v_FileLocator));

   END FileExec;

  四.Oracle InterMedia工具介紹

  interMedia是Oracle推出的對Oracle8i多媒體功能進行擴充的一個集成部件,它使得Oracle能夠更方便的管理圖象、音頻、視頻、文本等信息。使得Oracle在internet,電子商務等領域多媒體數(shù)據(jù)的管理上可靠性與可用性增強。它包括image, audio, video三部份。interMedia使用對象類型,類似于JAVA或C++,來描述image, audio, video類型數(shù)據(jù),Oracle在這三類對象類型中定義了許多方法來操作這些數(shù)據(jù),如對于 image類型數(shù)據(jù)來說,你可以很方便地進行圖形格式轉(zhuǎn)換,壓縮,拷貝,截取圖形的任何一部份等,而這些是普通LOB類型數(shù)據(jù)所無法比擬的,普通sql語句也無法完成這些操作。

  Internet的發(fā)展更突出了interMedia在WEB應用中的價值,現(xiàn)有的WEB應用絕大多數(shù)將image,audio,video等多媒體信息存在文件系統(tǒng)中,其優(yōu)點是操作簡單,速度快,缺點是管理復雜,尤其是管理大量image時就受到目錄數(shù)等的限制。如果將image保存在數(shù)據(jù)庫中,由數(shù)據(jù)庫來統(tǒng)一維護,統(tǒng)一備份,這樣就可以簡化管理。

  Intermedia中定義了幾個多媒體對象類型,例如ORDAUDIO就是其中一個,它提供一些audio對象類型數(shù)據(jù)的操縱函數(shù)。下面我們來看一個例子,在這個例子中我們定義一個歌曲對象,建立一個歌曲對象的表,并對該表進行插入與查詢操作。

 ?。?)定義一個歌曲對象:

  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 --音頻數(shù)據(jù),這個字段由ORDAUDIO對象來定義。
  );

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

   CREATE TABLE SongsTable of songObject (UNIQUE (songId), songId NOT NULL);

 ?。?)插入一行數(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ù)只是初始化一個lob數(shù)據(jù)定位符,而沒有存儲實際的數(shù)據(jù)。

 ?。?)向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;

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

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

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

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

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

    --將歌曲對象載入到數(shù)據(jù)庫表中

    UPDATE SongsTable S 
     SET S.audioSource = audioObj 
     WHERE S.songId = '00';

     COMMIT;

    END;

[NextPage]

 五.多媒體數(shù)據(jù)庫技術(shù)難點與展望

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

  一個問題就是多媒體數(shù)據(jù)的特殊操作實現(xiàn),因為lob型數(shù)據(jù)是二進制的大對象,他不能簡單的按照一般數(shù)據(jù)的操作符來進行計算。比如,要查出一個數(shù)據(jù)表中與某首歌相似的音頻。那么對于這個'相似'操作來說,它得不到傳統(tǒng)的操作符的支持,而且它將涉及很復雜的算法??上驳氖?,Oracle9i Intermedia已經(jīng)具有多媒體數(shù)據(jù)的查詢與匹配功能,例如,可以從質(zhì)地(texture),形狀,顏色,顏色分量等要素進行相似圖象的查詢,在查詢時可以設置各個要素的權(quán)值,測試的結(jié)果還是差強人意的。但是對audio,video等類型數(shù)據(jù)的查詢?nèi)匀徊粔蚶硐搿?

  另外,如何描述多媒體信息,怎樣根據(jù)你對多媒體信息的描述來檢索,也是一個難點問題,比如這個查詢?nèi)蝿眨翰樵兂鲱伾容^暗的并且有森林的風景照片,這就是根據(jù)描述性信息進行查詢的例子。這將需要某種行業(yè)標準和技術(shù)實現(xiàn)。總之,如何實現(xiàn)和優(yōu)化針對多媒體數(shù)據(jù)的特殊操作(如相似查詢等),將是以后多媒體數(shù)據(jù)庫研究和應用中的熱點問題。

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

上一頁     

上一頁  [1] [2] 

您可能感興趣的文章:
  • Oracle11.2.0.1如何升級到11.2.0.3 Oracle同版本升級
  • VMware中l(wèi)inux環(huán)境下oracle安裝圖文教程(二)ORACLE 10.2.05版本的升級補丁安裝
  • oracle 日期函數(shù)集合(集中版本)
  • Oracle Faq(Oracle的版本)
  • Oracle 查詢表信息獲取表字段及字段注釋
  • Oracle cloud control 12c的啟動、關閉及獲取安裝信息的方法
  • oracle獲取當前用戶表、字段等詳細信息SQL
  • Oracle 11g自動診斷信息庫(Automatic Diagnostic Repository,ADR)概述
  • Oracle中獲取會話信息的兩個函數(shù)分享
  • Oracle客戶端版本及位數(shù)(Windows系統(tǒng))查看方法

標簽:蘭州 黃山 崇左 銅川 湘潭 湖南 仙桃 衡水

巨人網(wǎng)絡通訊聲明:本文標題《Oracle數(shù)據(jù)庫處理多媒體信息》,本文關鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    满洲里市| 沂南县| 资阳市| 清水县| 西贡区| 宝兴县| 开封县| 叶城县| 东乡县| 高雄市| 博兴县| 乌苏市| 阜南县| 霍山县| 乡城县| 永宁县| 临颍县| 六枝特区| 家居| 新绛县| 台安县| 建昌县| 平潭县| 井冈山市| 洪湖市| 田林县| 巴林右旗| 翁牛特旗| 滦平县| 乌鲁木齐市| 遂川县| 土默特右旗| 手游| 池州市| 蓝田县| 洛川县| 汉中市| 阜康市| 循化| 峨山| 涿州市|