999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

大對象數據的存取在Oracle數據庫中的設計與實現

2015-04-20 18:10:15王霞閆愛平李娜
電子技術與軟件工程 2015年6期

王霞 閆愛平 李娜

摘 要 隨著計算機應用系統的廣泛應用,應該系統的數據庫越來越大,可以存儲或應用的數據類型也越來越多。大對象數據作為普通數據類型的補充可以幫助我們解決很多現實問題。但大對象數據的存儲和讀取卻是困擾數據庫設計師的難題,通常會使用高級語言JAVA等來實現Oracle數據庫中大對象數據。本文試利用PL/SQL存儲過程來實現Oracle數據庫中LOB數據的處理,豐富Oracle LOB數據庫的技術理論。

【關鍵詞】大對象數據 Oracle LOB PL/SQL

隨著數據庫應用系統開發與設計的迅速發展,數據庫設計師從簡單的整型,備注型向更為復雜的數據類型進軍。隨著新的媒介質的產生,數據庫應用系統不單純地能處理文本、日期型數據這樣的小對象數據,更多包含聲音、圖像或視頻等的大對象數據應用而生。如何設計與存取大對象數據是困擾每個軟件設計師的難題,如何應用這些大對象數據是軟件設計師急需解決的問題。不同的數據庫產品擁有不同的大對象數據類型,如SQL Server 數據庫產品中就可以用Image來定義大圖片數據,可以用Text或Ntext來定義大文本字段,這些大對象數據通常采用長二進制流存儲,方面軟件設計師調用。同樣,Oracle數據庫產品中可以用Raw或Blob來定義大對象數據,這種大對象數據采用字符形式存儲。當今,大部分的應用系統都采用Oracle數據庫,如何高效快速的存取大對象數據,如何存儲大對象數據是軟件設計師應該解決的核心問題,本文試利用PL/SQL存儲過程來解決Oracle數據庫中LOB數據的處理。

1 大對象數據的存儲

數值型數據或其它小對象數據都是通過二維表來實現存儲,將數據集成在數據表的行中,通過數據表的操作來實現數據的存放。大對象數據因為數據量大只能將數據塊存儲在存儲設備上,通過一個16字節的指針指向數據塊,而16字節的指針則放在二維數據表中,作為一個小對象數據存儲。這個16字節的指針指向一個數據塊存儲片段的根節點,可以映射指向該數據塊存儲片段的內部指針。大對象數據的存取時,先讀二維數據表中的指針信息,通過指針鏈接讀取專門存儲大對象數據的存儲塊。

2 Oracle大對象數據類型

Oralce 數據庫是由美國甲骨文開發的一款分布式數據庫產品,也是全世界最著名的一款B/S架構下的數據庫產品之一。Oracle數據庫是一款通用性極好的數據庫,具備完整的數據庫管理功能,是一款完備的關系數據庫,遵循關系數據庫的所有約束,也是一款分布式數據庫,能實現分布式處理數據功能。目前市場上普遍采用Oracle Database 12c,該款產品引入了一個多承租方架構,可以讓用戶輕松管理數據庫云,為未來海量數據處理提供方便。

Oracle數據庫中總共包括了LONG,LONG RAW和LOB三種大對象數據類型。LONG和LONG RAW 是Oracle早期版本就帶有的數據類型,最大長度為2G,只支持順序訪問,也不可以作為對象的屬性處理。LOB是Oracle 8i版本后的數據類型,該數據類型包括內部LOB(BLOB CLOB NCLOB)和外部LOB(BFILE),所謂內部LOB就是指存放在數據中的大對象數據類型,所謂外部LOB就是指存放在操作系統中大對象數據類型。通常用BLOB來存放像圖像、音頻和視頻等這樣的二進制格式數據;用CLOB來存放像大的文本數據這樣的數據庫字符集格式字符數據;用NCLOB來存放像長文本數據這樣Unicode字符集字符數據;用BFILE來存放指向某文本文件或二進制文件的操作系統文件指針。

3 Oracle中大對象數據的存取方法

3.1 新建測試用表.

CREATE TABLE pic_lob (oratest_ id VARCHAR2 (50) NOT NULL, oratest _pic BLOB NOT NULL)。

為方便大對象數據的存取,創建一個指針文件指向大對象數據。

CREATE DIRECTORY PIC AS ‘E:\oraceltest\11; //設置操作目錄

將操作目標設置好后,將該目錄的讀寫權限放開,釋放給當前數據庫用戶。

GRAT WRITE (read) ON DIRECTORY PIC TO SCOTT。

3.2 利用PL/SQL存儲過程實現大對象數據存取

設計PL/SQL存儲過程pic_insert,用來存放像圖片,大文本段或視頻等這樣的大對象數據。

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

CREATE PROCEDURE pic_insert(tid VARCHAR2,filename VARCHAR2) AS bf hfile;

b_ lob BLOB ;

BEGIN

INSERT INTO pic_ lob VALUES (tid,empty_blob()) RETUEN T_pic INTO b_ lob; //插入空的大對象數據

Bf:= bfilename ( ‘PIC, filename ); //filname為大對象數據的文件名

dbms_lob.fileopen(bf,dbms_lob.file_readonly);

dbms_lob.loadfromfile ( b_lob.bf.dbms_lob.getlength ( bf));

dbms_lob.fileclose(bf);

COMMIT;

END;

3.2.2 讀取的存儲過程

BEGIN

SELECT l_blob

FROM pic_lob

WHERE T_ID=pinm;

l_blob_len:=DBMS_LOB.GETLENGTH(l_blob); //獲取大對象數據長度

l_file:=UTL_FILE.FOPEN(‘PIC,ponm,wb,32767);

WHILE l_pos

DBMS_LOB.READ(l_blob,l_amount,l_pos,l_buffer);

UTL_FILE.PUT_RAW(l_file,l_buffer,TRUE);

l_pos:=l_pos+l_amount;

END LOOP;

UTL_FILE.FCLOSE(l_file); //關閉文件讀寫

END;

這樣兩個存儲過程exec pic_insert 和exec pic_read就創建好了,通過執行這兩個存儲過程可以實現對Oracle數據庫中的大對象數據存取。

4 結語

Oracle數據庫中的大對象數據應用是數據庫技術中最關鍵的技術,通過PL/SQL存儲過程來實現是最有效也是最簡單的方法,比較容易讓軟件設計師掌握。通過實驗,該方法性能優良,能準確處理大對象數據,同時因為該大對象數據支持分布式環境處理,適合B/S架構應用軟件的開發。

參考文獻

[1]東庭,孫學康.使用JDBC數據接口存取Oracle LOB(大對象)[J].電腦編程技巧與維護,2005(12):47-49.

[2]全杰.基于OCCI技術存取數據庫大對象的方法及實現[J].計算機系統應用,2010(07):98+113.

作者單位

石家莊鐵道大學四方學院 河北省石家莊市 051132

主站蜘蛛池模板: 亚洲视频影院| 亚洲免费福利视频| 日韩不卡免费视频| 波多野结衣在线se| 国产一级毛片网站| 亚洲综合久久成人AV| 美女免费黄网站| 国产精品专区第1页| 九九这里只有精品视频| 中文字幕永久在线看| 欧美成人精品欧美一级乱黄| 在线观看免费黄色网址| 亚洲a级毛片| 天堂成人av| 日韩欧美中文在线| 成人av手机在线观看| 国产精品无码制服丝袜| 中国一级特黄大片在线观看| 日韩av电影一区二区三区四区| 韩日无码在线不卡| 亚卅精品无码久久毛片乌克兰| 亚洲精品国偷自产在线91正片| 久久一色本道亚洲| 国产成人综合亚洲欧美在| 欧美精品啪啪| 狠狠色丁香婷婷综合| 精品国产Ⅴ无码大片在线观看81| 亚洲精品国产日韩无码AV永久免费网| 婷婷伊人五月| 日本中文字幕久久网站| 日本精品中文字幕在线不卡| 久久99久久无码毛片一区二区| 日韩AV无码免费一二三区| 亚洲精品动漫| 亚洲国产中文综合专区在| 欧美一级黄片一区2区| www.狠狠| 无套av在线| 黄色网站在线观看无码| 亚洲精品不卡午夜精品| 亚洲人人视频| 亚洲精品无码人妻无码| 国产情侣一区二区三区| 97国产精品视频自在拍| 高清久久精品亚洲日韩Av| 国产午夜不卡| 欧美成一级| 少妇人妻无码首页| 国产精品林美惠子在线播放| 夜夜爽免费视频| 在线视频亚洲欧美| 女高中生自慰污污网站| 国产欧美日韩精品综合在线| 亚洲视频色图| 亚洲区第一页| 精品福利一区二区免费视频| 91精品国产麻豆国产自产在线 | 538国产视频| 亚洲V日韩V无码一区二区| 九九九精品成人免费视频7| 国产丝袜91| 99re精彩视频| 性69交片免费看| 色综合久久88色综合天天提莫| 国产黑人在线| 亚洲无码高清一区| 日本在线亚洲| 2020国产免费久久精品99| 亚洲美女久久| 台湾AV国片精品女同性| 一本久道热中字伊人| 99热国产这里只有精品9九| 亚洲一区免费看| 在线观看欧美国产| 无码精品一区二区久久久| a在线观看免费| 亚洲日韩每日更新| 国产成+人+综合+亚洲欧美| 免费一级毛片完整版在线看| 99久久精品免费视频| 亚洲一区二区三区麻豆| 性色一区|