• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 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初始對象的生成方法
    满洲里市| 河南省| 岑巩县| 虎林市| 壶关县| 温州市| 永善县| 腾冲县| 胶州市| 彝良县| 施秉县| 慈利县| 随州市| 新乡市| 宿迁市| 湖口县| 桓台县| 黄平县| 镶黄旗| 沧源| 柘荣县| 嘉峪关市| 元朗区| 博乐市| 砚山县| 灌南县| 镇巴县| 五莲县| 石家庄市| 蓝田县| 枣阳市| 四平市| 东明县| 泰和县| 迁西县| 遵化市| 白朗县| 丰都县| 讷河市| 罗城| 寻乌县|