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