对于半结构化数据的讲解,这可能是最通俗易懂的一篇文章了
一. 概述
相對于結構化數據(即行數據,存儲在數據庫里,可以用二維表結構來邏輯表達實現的數據)而言,不方便用數據庫二維邏輯表來表現的數據即稱為非結構化數據,包括所有格式的辦公文檔、文本、圖片、XML、HTML、各類報表、圖像和音頻/視頻信息等等。
非結構化數據庫是指其字段長度可變,并且每個字段的記錄又可以由可重復或不可重復的子字段構成的數據庫,用它不僅可以處理結構化數據(如數字、符號等信息)而且更適合處理非結構化數據(全文文本、圖象、聲音、影視、超媒體等信息)。
非結構化WEB數據庫主要是針對非結構化數據而產生的,與以往流行的關系數據庫相比,其最大區別在于它突破了關系數據庫結構定義不易改變和數據定長的限制,支持重復字段、子字段以及變長字段并實現了對變長數據和重復字段進行處理和數據項的變長存儲管理,在處理連續信息(包括全文信息)和非結構化信息(包括各種多媒體信息)中有著傳統關系型數據庫所無法比擬的優勢。
結構化數據(即行數據,存儲在數據庫里,可以用二維表結構來邏輯表達實現的數據)
非結構化數據,包括所有格式的辦公文檔、文本、圖片、XML、HTML、各類報表、圖像和音頻/視頻信息等等
所謂半結構化數據,就是介于完全結構化數據(如關系型數據庫、面向對象數據庫中的數據)和完全無結構的數據(如聲音、圖像文件等)之間的數據,HTML文檔就屬于半結構化數據。它一般是自描述的,數據的結構和內容混在一起,沒有明顯的區分。
數據模型
結構化數據:二維表(關系型)
半結構化數據:樹、圖
非結構化數據:無
其他
結構化數據:先有結構、再有數據
半結構化數據:先有數據,再有結構
隨著網絡技術的發展,特別是Internet和Intranet技術的飛快發展,使得非結構化數據的數量日趨增大。這時,主要用于管理結構化數據的關系數據庫的局限性暴露地越來越明顯。因而,數據庫技術相應地進入了“后關系數據庫時代”,發展進入基于網絡應用的非結構化數據庫時代。
?
二. 數據分類
在做一個信息系統設計時肯定會涉及到數據的存儲,一般我們都會將系統信息保存在某個指定的關系數據庫中。我們會將數據按業務分類,并設計相應的表,然后將對應的信息保存到相應的表中。比如我們做一個業務系統,要保存員工基本信息:工號、姓名、性別、出生日期等等;我們就會建立一個對應的staff表。
但不是系統中所有信息都可以這樣簡單的用一個表中的字段就能對應的。
結構化數據
就像上面舉的例子。這種類別的數據最好處理,只要簡單的建立一個對應的表就可以了。
非結構化數據
像圖片、聲音、視頻等等。這類信息我們通常無法直接知道他的內容,數據庫也只能將它保存在一個BLOB字段中,對以后檢索非常麻煩。一般的做法是,建立一個包含三個字段的表(編號 number、內容描述 varchar(1024)、內容 blob)。引用通過編號,檢索通過內容描述。現在還有很多非結構化數據的處理工具,市面上常見的內容管理器就是其中的一種。
半結構化數據
這樣的數據和上面兩種類別都不一樣,它是結構化的數據,但是結構變化很大。因為我們要了解數據的細節所以不能將數據簡單的組織成一個文件按照非結構化數據處理,由于結構變化很大也不能夠簡單的建立一個表和他對應。本文主要討論針對半結構化數據存儲常用的兩種方式。
先舉一個半結構化的數據的例子,比如存儲員工的簡歷。不像員工基本信息那樣一致每個員工的簡歷大不相同。有的員工的簡歷很簡單,比如只包括教育情況;有的員工的簡歷卻很復雜,比如包括工作情況、婚姻情況、出入境情況、戶口遷移情況、黨籍情況、技術技能等等。還有可能有一些我們沒有預料的信息。通常我們要完整的保存這些信息并不是很容易的,因為我們不會希望系統中的表的結構在系統的運行期間進行變更。
?
三. 半結構化數據的儲存方式
1. 化解為結構化數據
這種方法通常是對現有的簡歷中的信息進行粗略的統計整理,總結出簡歷中信息所有的類別同時考慮系統真正關心的信息。對每一類別建立一個子表,比如上例中我們可以建立教育情況子表、工作情況子表、黨籍情況子表等等,并在主表中加入一個備注字段,將其它系統不關心的信息和已開始沒有考慮到的信息保存在備注中。
優點:查詢統計比較方便。
缺點:不能適應數據的擴展,不能對擴展的信息進行檢索,對項目設計階段沒有考慮到的同時又是系統關心的信息的存儲不能很好的處理。
2. 用XML格式來組織并保存到CLOB字段中
XML可能是最適合存儲半結構化的數據了。將不同類別的信息保存在XML的不同的節點中就可以了。
優點:能夠靈活的進行擴展,信息進行擴展式只要更改對應的DTD或者XSD就可以了。
缺點:查詢效率比較低,要借助XPATH來完成查詢統計,隨著數據庫對XML的支持的提升性能問題有望能夠很好的解決。
總結
以上是生活随笔為你收集整理的对于半结构化数据的讲解,这可能是最通俗易懂的一篇文章了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【解题报告】Leecode 384.
- 下一篇: 这或许是讲解Knuth(Shuffle)