李福存 姜躍文 楚懷遠
摘 要
隨著企業(yè)信息化應用程度的提升,企業(yè)會產(chǎn)生大量的信息化數(shù)據(jù),這些數(shù)據(jù)既有傳統(tǒng)的結構化數(shù)據(jù),更有眾多新型的非結構數(shù)據(jù),諸如圖像、音頻、視頻、辦公文檔等。利用主流數(shù)據(jù)管理系統(tǒng)Oracle所提供的新方法,可有效構建非結構化數(shù)據(jù)的存儲模型,從而使得非結構化數(shù)據(jù)的存儲更高效,檢索更快捷。
【關鍵詞】非結構化 數(shù)據(jù)存儲 Oralce SecureFile
1 前言
隨著信息技術的廣泛普及和充分應用,企業(yè)在日常業(yè)務活動中會產(chǎn)生各種各樣的信息化數(shù)據(jù)。這些數(shù)據(jù)既有傳統(tǒng)的結構化數(shù)據(jù),更有大量的非結構化數(shù)據(jù),諸如音頻、視頻、圖像、辦公文檔等。據(jù)IDC統(tǒng)計,在企業(yè)產(chǎn)生的全部數(shù)據(jù)中,約有80%都是非結構化數(shù)據(jù),且每年按60%的指數(shù)增長。在未來15年中,互聯(lián)網(wǎng)和多媒體應用的數(shù)字非結構化數(shù)據(jù)量將超過6.023x1023 (阿伏加德羅常數(shù)),因此非結構化數(shù)據(jù)的高效存儲和快速檢索成為非結構化數(shù)據(jù)存儲方案所面臨的關鍵挑戰(zhàn)。
2 數(shù)據(jù)存儲結構與數(shù)據(jù)存儲方法
傳統(tǒng)的結構化數(shù)據(jù)可以用二維表結構來邏輯表達,因此可以用關系型數(shù)據(jù)庫來管理,而非結構化數(shù)據(jù)無法用二維表結構來表達,因此需要采用新的方法來存儲和管理。在大數(shù)據(jù)時代,主流的商業(yè)數(shù)據(jù)庫軟件如Oracle在對傳統(tǒng)的結構化數(shù)據(jù)提供更先進的管理技術的同時,也對非結構化數(shù)據(jù)提供了有效的管理方法,能整合有關聯(lián)性和結構化的數(shù)據(jù)及非結構化數(shù)據(jù),從而給用戶提供無縫的使用體驗。
2.1 非結構化數(shù)據(jù)分類
非結構化的數(shù)據(jù)可以分成幾種不同的類型,比較常見的就是多媒體或富媒體文件,如數(shù)字化影像、音頻文件、視頻文件。其分類如下:
2.1.1 照片
用二維方式來表示所有內容,如照片、素描、繪畫、圖標。
2.1.2 基于字符的文檔
由一個或多個明確定義的字符集中的字符所組成的集合,如Word文檔、電子郵件、PDF文件等。
2.1.3 音頻
基于時間的聲音的集合,如WAV文件、MP3文件等。
2.1.4 視頻
基于時間的圖片和基于時間的聲音的集合,如MP4文件等。
2.2 Oracle的存儲結構
Oracle是當前在商業(yè)社會中最廣泛使用的大型數(shù)據(jù)庫,適合于企業(yè)管理和企業(yè)數(shù)據(jù)交換,特別是對于具有大規(guī)模數(shù)據(jù)庫的組織。Oracle數(shù)據(jù)庫對數(shù)據(jù)的存儲分成邏輯結構和物理結構兩部分,邏輯結構存儲在數(shù)據(jù)表中,而物理結構存儲在數(shù)據(jù)文件中(見圖1)。
在上述邏輯存儲結構中,段是對象的空間邏輯分配,一個段包含一個或幾個子段,這些子段是連續(xù)的數(shù)據(jù)塊,數(shù)據(jù)塊是數(shù)據(jù)庫使用的最小數(shù)據(jù)單元。數(shù)據(jù)文件是操作系統(tǒng)中的物理文件,其存儲數(shù)據(jù)庫中所有邏輯結構的數(shù)據(jù),其中不同的數(shù)據(jù)文件可以采用不同的數(shù)據(jù)塊大小。
2.3 Oracle的非結構化數(shù)據(jù)存儲方法
在Oracle數(shù)據(jù)庫管理系統(tǒng)中,對不同類型的大對象數(shù)據(jù)使用不同的存儲方式:內部大對象存儲在數(shù)據(jù)庫內部;外部大對象存儲在文件系統(tǒng)中,并且只在數(shù)據(jù)庫中存儲指向這個文件的指針。本文將重點討論第一種類型。
2.3.1 大對象數(shù)據(jù)類型
大對象數(shù)據(jù)類型(LOB)是由數(shù)據(jù)庫系統(tǒng)提供的一組數(shù)據(jù)類型,用于存儲大的數(shù)據(jù),例如圖片、文檔和聲音。LOB數(shù)據(jù)是可以由數(shù)據(jù)庫應用程序有效使用和操作的形式存儲。 LOB有4種類型的數(shù)據(jù):
(1)BLOB(二進制大對象),通常用于存儲多媒體文件,如音頻或視頻。
(2)CLOB(字符大對象),通常用于非常大的文件字符串,字符集是固定寬度格式的字符。
(3)NCLOB(國家字符大對象),幾乎和CLOB一樣,存儲非常大的字符串,但字符集格式不必是固定寬度。
(4)BFILES,是一個存儲在數(shù)據(jù)庫之外(在操作系統(tǒng)中)的二進制文件,但數(shù)據(jù)庫仍然可以訪問。所有存儲在操作系統(tǒng)中的文件都可以存儲在BFILE 中(例如*.DOCX文件可以存儲在一個BFILE中),然后以CLOB形式被加載到要打開的表中。
2.3.2 SecureFile和Basicfile
Oracle數(shù)據(jù)庫提供了兩種管理非結構化數(shù)據(jù)的方法——Basicfile和SecureFile方法。
簡單地說,Basicfile就是LOB,可用上面提到的LOB特征來理解Basicfile。
SecureFile是Oracle提供的一個新的存儲類型(名叫SecureFile LOB),它為處理非結構化內容提供了新的方法,同時還能擁有Oracle數(shù)據(jù)庫服務器的所有特性和優(yōu)點,如:
(1)數(shù)據(jù)壓縮。通過SecureFile智能壓縮,SecureFile LOB能夠立即檢測到文件可以被壓縮以節(jié)省空間。
(2)重復數(shù)據(jù)刪除。Oracle SecureFile允許oracle數(shù)據(jù)庫分析和檢測列或分區(qū)中的多個LOB文件,這可以節(jié)省空間。
(3)數(shù)據(jù)加密。使用Oracle高級安全選項,SecureFile可以為LOB提供安全功能。
(4)性能增強。Oracle在使用SecureFile LOB存儲類型時引入了額外的性能特性。
SecureFile是一個高性能存儲功能,它能在同等文件系統(tǒng)配置的情況下,以相同或更快的速度存儲和檢索LOB。
3 測試
3.1 測試方法
我們選用最常見的World文檔作為樣本,分別用Basicfile和SecureFile方法對其進行讀寫測試。測試方法見圖2。
圖2為測試方法模型,用來比較非結構化數(shù)據(jù)文件采用Basicfile和SecureFile兩種不同方式到數(shù)據(jù)庫中的加載、寫入性能和空間利用情況。
3.2 測試樣本和測試環(huán)境
本次研究所有非結構化數(shù)據(jù)為MS WORD文檔,大小為700Kb。
測試環(huán)境為:處理器Intel? Core i5-5300U 2.30GHz,內存8GB,64位Windows,數(shù)據(jù)庫Oracle 12.1.0.2.0。
3.3 測試步驟
第一步,建立訪問MS Word文件所需要的目錄。
create directory sec_file as ' C:\ORACLETEMP';
第二步,建立并運行用Oracle 提供的操作大對象的DBMS_LOB包來加載Word文檔并寫入到數(shù)據(jù)庫的存儲過程。
采用Basicfile方式存儲非結構化數(shù)據(jù)的建表參數(shù)和語句結構如下:
CREATE TABLE TESTCV1
(…,
…,
CV BLOB)
STORE AS BASICFILE TABLESPACE (TS1);
采用SecureFile方式存儲非結構化數(shù)據(jù)的建表參數(shù)和語句結構如下:
CREATE TABLE TESTCV2
(…,
…,
CV BLOB)
STORE AS SECUREFILE (TABLESPACE (TS2) DEDUPLICATE COMPRESS HIGH)
采用上面的不同參數(shù)分別建立兩張表,并分別采用Basicfile和SecureFile方式來定義存儲LOB類型。編寫兩段相似的代碼,采用dbms_lob包來分別插入Word文檔到上述兩張表的LOB字段中,并記錄加載時間;采用dbms_lob包來分別讀取兩張表的LOB字段并記錄讀取時間。
第三步,建立并運行使用DBMS_SPACE包編寫的空間檢查的存儲過程,用DBMS_SPACE包來檢查上述兩張表的使用空間,比較Basicfile和SecureFile兩種不同方式對空間使用的影響。
3.4 測試結果
按照上面的測試過程,采用Basicfile和SecureFile方法分別對測試對象進行讀寫測試,其時間和空間消耗數(shù)據(jù)如表所示。
讀寫耗時結果見表1。
空間使用結果表2。
通過上面測試可以發(fā)現(xiàn),同樣的文件采用Basicfile和SecureFile存儲時,由于SecureFile具有壓縮和去重的功能,讀寫性能和空間利用率比Basicfile有非常顯著提高。在效率方面,SecureFile的寫效率是Basicfile的5.87倍,讀效率是SecureFile的8.87倍。在空間使用方面,SecureFile的空間需求僅為SecureFile需求的0.1%。
我們采用不同大小的Word文檔做測試,其結果都相似。
4 結論
上述對非結構化數(shù)據(jù)在Oralce數(shù)據(jù)庫中的讀寫效率和空間使用率的測試結果顯示,新的SecureFile方法顯示出顯著優(yōu)于BasicFile方法的性能。
Oracle SecureFile方法是將結構化數(shù)據(jù)和非結構化數(shù)據(jù)進行統(tǒng)一管理的存儲解決方案。采用Oracle SecureFile構建的應用程序可以顯著降低存儲空間需求和并大幅提升讀寫性能,是擁有大量非結構化數(shù)據(jù)的企業(yè)可信賴的一種非結構化數(shù)據(jù)存儲解決方案。
參考文獻
[1]S.M.Niloy Mukherjee,Amit Ganesh,Vinayagam Djegaradjane,“Oracle SecureFile:Prepare for the Digital Deluge,”O(jiān)racle Corp.
[2]C.S.Spahiu,“A Multimedia database server:Implementation and functions,”Int.J.Comput.Sci.Appl.,vol.7,no.3,pp.140–155,2010.
[3]Oracle,“Unstructured Data Management with Oracle Database 12 c,”White Pap.,no.September,2014.
作者簡介
李福存,江蘇金恒信息科技有限公司,信息化總監(jiān),Oracle數(shù)據(jù)庫大師(OCM),南京鋼鐵股份有限公司首席專家,澳大利亞臥龍崗大學高級信息技術碩士。
姜躍文,江蘇金恒信息科技有限公司,高級工程師,資深Oracle數(shù)據(jù)庫專家。
楚懷遠,西安電子科技大學,電子信息工程專業(yè)四年級學生。
作者單位
1.江蘇金恒信息科技有限公司 江蘇省南京市 210035
2.西安電子科技大學 陜西省西安市 710000