李福存 姜躍文 楚懷遠


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