• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Oracle數(shù)據(jù)庫大對象數(shù)據(jù)存取的兩種實現(xiàn)方法及時間性能比較①

      2014-09-27 14:27:10
      關(guān)鍵詞:二進(jìn)制編程對象

      袁 勇

      (遵義師范學(xué)院網(wǎng)絡(luò)管理中心,貴州 遵義 563000)

      0 引言

      當(dāng)代,大數(shù)據(jù)無處不在,和云計算、物聯(lián)網(wǎng)一樣已經(jīng)成為計算機(jī)學(xué)科中的一個熱門研究課題.隨著高清圖像、視頻的問世,大容量的存儲空間和大數(shù)據(jù)的操作越來越需要研究者去攻克.本文只是針對大對象數(shù)據(jù)在Oracle數(shù)據(jù)庫中的存取著手,利用SQL*Plus或借助JAVA編程語言,來實現(xiàn)了Oracle數(shù)據(jù)庫中大對象數(shù)據(jù)存取操作,并對兩種方法進(jìn)行存取時間性能比較,為大對象在Oracle數(shù)據(jù)庫中的存取提出一些自己的見解.

      1 Oracle中大對象數(shù)據(jù)分類

      為了解決數(shù)據(jù)庫中非結(jié)構(gòu)化數(shù)據(jù)存取問題,Oracle提出了LOB(Large Object),即大對象的概念,包含圖像、音視頻、文件等非結(jié)構(gòu)化的數(shù)據(jù).這類數(shù)據(jù)最大特點是:大小不確定,長度變化,要想在數(shù)據(jù)庫中進(jìn)行存取,就必須使用到LOB[1].

      1.1 按數(shù)據(jù)類型分類[23]

      ①字符類型:包含CLOB和NLOB;

      ②二進(jìn)制類型:BLOB,用來存儲較大,且無結(jié)構(gòu)的二進(jìn)制數(shù)據(jù);

      ③二進(jìn)制文件類型:BFILE,將數(shù)據(jù)在外部操作系統(tǒng)文件中進(jìn)行存儲;

      1.2 按存取方式分類

      ①數(shù)據(jù)在內(nèi)部表空間存儲:CLOB、NLOB以及BLOB;

      ②指向操作系統(tǒng)的目錄:BFILE,建立目錄、文件的映射關(guān)系

      2 Oracle中大對象數(shù)據(jù)存取的實現(xiàn)方法

      本章通過Oracle自帶的SQL*Plus以及用當(dāng)前廣泛使用的JAVA語言來實現(xiàn)Oracle數(shù)據(jù)庫中圖片數(shù)據(jù)的存取.首先在Oracle10g數(shù)據(jù)庫中新建測試用表[4].

      創(chuàng)建文件操作目錄,用于大對象數(shù)據(jù)的存取.

      2.1 利用PL/SQL實現(xiàn)存取

      以下為兩個PL/SQL存儲過程,分別用來向數(shù)據(jù)庫中存儲、讀取大對象數(shù)據(jù).可以根據(jù)修改具體的filename名,像數(shù)據(jù)庫中插入圖片、視頻等數(shù)據(jù).具體如下:

      2.1.1 存入大對象的存儲過程:

      2.1.2 讀取的存儲過程:

      在完成存儲過程的創(chuàng)建后,通過執(zhí)行exec pic_insert或exec pic_read存儲過程,并加上相應(yīng)的實際參數(shù)完成大對象的讀取.

      2.2 借助JAVA編程語言實現(xiàn)高效讀取

      由于使用PL/SQL存儲過程讀取的效率太低(見第三章),通常的系統(tǒng)開發(fā)都會選擇使用高級程序語言,其具有界面友好、可讀性強(qiáng)等優(yōu)勢,而JAVA語言由于其跨平臺等眾多優(yōu)點,在當(dāng)前具有較大的應(yīng)用市場,也是眾多編程愛好者首選的開發(fā)語言.在這里,通過JDBC來訪問oracle數(shù)據(jù)庫,實現(xiàn)其存取.主要實現(xiàn)代碼如下:

      2.2.1 存入大對象的JAVA函數(shù)片段:

      2.2.2 讀取大對象的JAVA函數(shù)片段:

      3 存取時間性能比較

      在性能分析過程中,以圖片(30.8KB4546KB,JPG 格式)、視頻(422MB,MP4格式)的存取為例,在執(zhí)行SQL*Plus存儲過程時,加入以下的命令獲取存儲過程執(zhí)行時的系統(tǒng)時間,比較執(zhí)行前后的執(zhí)行時間差值,從而得出存儲過程的運(yùn)行時長.

      select to_char(current_timestamp(5),'DD -MON -YYYY HH24:MI:SSxFF')from dual;

      在java連接oracle數(shù)據(jù)庫讀取大對象的函數(shù)中加入函數(shù)currentTimeMillis()來獲取執(zhí)行的系統(tǒng)時間,通過執(zhí)行前后系統(tǒng)時間差來得出讀取的時長.

      在存儲過程、JAVA混合編程下分別運(yùn)行三次,取平均數(shù)據(jù)得到耗時表如下(打斜線表格欄:表示執(zhí)行速度太長或太短,對結(jié)論不影響,而未做該項試驗.):

      表1 存取時間對比表(單位:s)

      由上表可知,在進(jìn)行大對象的存取過程中,通過混合編程寫入數(shù)據(jù)流的方式在讀取方面遠(yuǎn)優(yōu)于存儲過程,而在存入時性能低于存儲過程.

      4 總結(jié)

      本文通過BLOB大對象在oracle數(shù)據(jù)庫中的存取為背景,通過使用存儲過程的方式和用JAVA與Oracle混合編程的實現(xiàn)方式,作出系列實驗研究.得出用JAVA與Oracle混合編程的方式在讀取大對象的過程中,遠(yuǎn)優(yōu)于通過存儲過程實現(xiàn)的結(jié)論.

      [1]金杰.基于OCCI技術(shù)存取數(shù)據(jù)庫大對象的方法及實現(xiàn)[J]. 計算機(jī)系統(tǒng)應(yīng)用,2010,19(7):162-165.

      [2]余秋明.淺論大型數(shù)據(jù)對象在Oracle數(shù)據(jù)庫中的存儲方法[J].科技廣場 ,2008,10:61-63.

      [3]張文東,劉培剛.基于Java與Oracle數(shù)據(jù)庫的圖像處理技術(shù)[J].計算機(jī)系統(tǒng)應(yīng)用,2004,11:34-36.

      [4]王彬,代彥波,顏鵬博.Oracle10g簡明教程[M].北京:清華大學(xué)出版社,2006.

      猜你喜歡
      二進(jìn)制編程對象
      我家有只編程貓
      我家有只編程貓
      我家有只編程貓
      我家有只編程貓
      神秘來電
      睿士(2023年2期)2023-03-02 02:01:09
      用二進(jìn)制解一道高中數(shù)學(xué)聯(lián)賽數(shù)論題
      有趣的進(jìn)度
      二進(jìn)制在競賽題中的應(yīng)用
      攻略對象的心思好難猜
      意林(2018年3期)2018-03-02 15:17:24
      基于熵的快速掃描法的FNEA初始對象的生成方法
      金溪县| 巨鹿县| 浦城县| 荥经县| 巢湖市| 固镇县| 东乡县| 阿拉尔市| 东丽区| 浮山县| 北流市| 穆棱市| 渭南市| 惠来县| 玉溪市| 北京市| 沙坪坝区| 孟州市| 宜城市| 东海县| 宜州市| 垦利县| 牟定县| 昌图县| 加查县| 东港市| 凤翔县| 桦川县| 苍山县| 辛集市| 太康县| 娄烦县| 镇康县| 达拉特旗| 莎车县| 新巴尔虎左旗| 东城区| 万宁市| 阿合奇县| 凌源市| 康马县|