相對于結(jié)構(gòu)化數(shù)據(jù)而言,非結(jié)構(gòu)化數(shù)據(jù)指不方便用數(shù)據(jù)庫二維邏輯表來表現(xiàn)的數(shù)據(jù)。高校非結(jié)構(gòu)化檔案數(shù)據(jù)包括由各類業(yè)務(wù)系統(tǒng)產(chǎn)生的檔案數(shù)據(jù),隨著高校非結(jié)構(gòu)化檔案數(shù)據(jù)不斷膨脹,高校對數(shù)字檔案館的信息處理能力和信息資源建設(shè)能力提出了更高要求。目前應(yīng)用的各種管理非結(jié)構(gòu)化數(shù)據(jù)的技術(shù)存在諸多弊端,如,處理不同文件時,服務(wù)器的寫入路徑需要變換,由此給數(shù)據(jù)管理帶來很多不便,還容易造成文件丟失。下面,筆者介紹幾種非結(jié)構(gòu)化檔案數(shù)據(jù)數(shù)據(jù)庫管理技術(shù)及其應(yīng)用,并比較其適用性,以供高校選擇。
XML即可擴(kuò)展標(biāo)記語言(Extensible Markup Language),它作為純文本文件,不受操作系統(tǒng)、軟件平臺的限制,可交換性良好;它是一種自描述語言,可以用來對非結(jié)構(gòu)化檔案數(shù)據(jù)進(jìn)行描述。關(guān)系數(shù)據(jù)庫經(jīng)過二十幾年的發(fā)展,因具備良好的事務(wù)處理能力、可進(jìn)行JOIN等復(fù)雜查詢、擁有近乎標(biāo)準(zhǔn)的模型和良好的穩(wěn)定性,被廣泛應(yīng)用于各個數(shù)據(jù)庫系統(tǒng)中。但關(guān)系數(shù)據(jù)庫本身無法直接處理非結(jié)構(gòu)化數(shù)據(jù),需要將非結(jié)構(gòu)化數(shù)據(jù)資源統(tǒng)一轉(zhuǎn)換成XML文檔,通過映射策略將XML數(shù)據(jù)項(xiàng)加載到關(guān)系數(shù)據(jù)庫,利用關(guān)系數(shù)據(jù)庫的強(qiáng)大處理能力實(shí)現(xiàn)資源的存儲、檢索和共享。
非關(guān)系數(shù)據(jù)庫(Not Only SQL,簡稱NoSQL)對集群有良好的支持性,可以用來解決對數(shù)據(jù)庫的高并發(fā)讀寫、海量大數(shù)據(jù)的高效存取問題。NoSQL可以直接對半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行存儲與管理,其中MongoDB作為NoSQL家族中的代表產(chǎn)品之一,能夠?qū)崿F(xiàn)關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,在管理非結(jié)構(gòu)化檔案數(shù)據(jù)方面具有很大優(yōu)勢。MongoDB可以支持任意格式和任意大小的文件,數(shù)據(jù)被存儲在MongDB中會被自動分割成許多塊,每塊包括本塊的元數(shù)據(jù)和具體數(shù)據(jù)兩部分,分塊后的數(shù)據(jù)由Mongos路由服務(wù)器根據(jù)負(fù)載狀況分配存儲到某一特點(diǎn)的shard上。NoSQL與關(guān)系數(shù)據(jù)庫為互補(bǔ)關(guān)系,在應(yīng)用中要發(fā)揮NoSQL長于存儲和檢索的功能,將占用空間比較大的非結(jié)構(gòu)化檔案數(shù)據(jù)及其元數(shù)據(jù)存到NoSQL中,將占用空間不大的元數(shù)據(jù)信息復(fù)制導(dǎo)入到關(guān)系數(shù)據(jù)庫中進(jìn)行管理,以保持?jǐn)?shù)據(jù)之間的聯(lián)系。
關(guān)系數(shù)據(jù)庫一般只對主鍵(key,用于區(qū)分每行記錄的唯一性字段)進(jìn)行檢索,檢索非主鍵內(nèi)容時速度較慢??蓪⒎墙Y(jié)構(gòu)化數(shù)據(jù)記錄作為key/value進(jìn)行存儲,key作為主鍵,其余數(shù)據(jù)作為一個整體Value,把key和Value的每一個屬性組成二維子表。為了存儲方便,將不定長的字段值的存儲轉(zhuǎn)化為定長的子塊進(jìn)行存儲,并對每一個字段值分配定長空間進(jìn)行存儲。
XML轉(zhuǎn)換成關(guān)系數(shù)據(jù)庫存儲技術(shù),適用整合非結(jié)構(gòu)化的異構(gòu)數(shù)據(jù),能夠?qū)崿F(xiàn)關(guān)系數(shù)據(jù)庫對非結(jié)構(gòu)化檔案數(shù)據(jù)的管理,而關(guān)系型數(shù)據(jù)庫尤其善于處理“關(guān)系”的特性,便于挖掘電子檔案之間的關(guān)聯(lián)性。但使用這一方法抽取轉(zhuǎn)換海量數(shù)據(jù)需耗費(fèi)大量時間,且存在出錯的概率;關(guān)系數(shù)據(jù)庫難以應(yīng)付集群操作,這一特點(diǎn)也使得當(dāng)數(shù)據(jù)量分散在集群的各臺服務(wù)器上時,數(shù)據(jù)庫處理數(shù)據(jù)力不從心。此外,關(guān)系數(shù)據(jù)庫要求字段結(jié)構(gòu)和長度固定,在處理存儲數(shù)據(jù)大小不一致的非結(jié)構(gòu)化檔案數(shù)據(jù)時,會產(chǎn)生空間浪費(fèi)。規(guī)模較小、產(chǎn)生的數(shù)據(jù)量相對有限的高校,可考慮采用這一技術(shù)。
NoSQL是web2.0時代針對關(guān)系型數(shù)據(jù)庫處理大數(shù)據(jù)時的瓶頸問題而產(chǎn)生的,NoSQL以良好的存儲擴(kuò)展性和存儲優(yōu)化能力、高效的數(shù)據(jù)檢索能力、結(jié)合關(guān)系型數(shù)據(jù)庫良好的數(shù)據(jù)關(guān)聯(lián)性挖掘能力,是處理“海量”非結(jié)構(gòu)化數(shù)據(jù)的理想方法。但這一技術(shù)也存在不少弊端,以MongDB為例,MongDB不能執(zhí)行多表間的關(guān)聯(lián)復(fù)雜查詢,也不能挖掘電子檔案的關(guān)聯(lián)性,且不具備事務(wù)處理能力,當(dāng)多用戶對同一個數(shù)據(jù)進(jìn)行讀寫并發(fā)操作時,可能會出現(xiàn)數(shù)據(jù)不一致的情況。產(chǎn)生數(shù)據(jù)量龐大、資金充裕、技術(shù)力量強(qiáng)的高校可以采用這種技術(shù)。
將非結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換為二維關(guān)系存儲于關(guān)系型數(shù)據(jù)庫,是提升關(guān)系型數(shù)據(jù)庫數(shù)據(jù)存儲能力和檢索效率的改良手段,其突出優(yōu)點(diǎn)是完全建立在成熟的關(guān)系數(shù)據(jù)庫技術(shù)的基礎(chǔ)上,穩(wěn)定性好。但這一技術(shù)擴(kuò)展性較差、開發(fā)成本比較高,存儲海量非結(jié)構(gòu)化檔案數(shù)據(jù)時需要配置比較高端的服務(wù)器;拆分成二維表后,查詢語句不適合表達(dá)數(shù)據(jù)間過于復(fù)雜的“關(guān)系”,尤其在表達(dá)過于復(fù)雜的嵌套關(guān)系時比較困難,在檢索關(guān)聯(lián)性數(shù)據(jù)的智能性時會受到一定影響。這一技術(shù)一般只限于資金充裕的高校采用。
總之,以上列出的非結(jié)構(gòu)化檔案數(shù)據(jù)的數(shù)據(jù)庫管理技術(shù)各有優(yōu)缺點(diǎn),高校應(yīng)結(jié)合實(shí)際情況進(jìn)行選擇,以做好大數(shù)據(jù)環(huán)境下的檔案工作。