複製鏈接
請複製以下鏈接發送給好友

半結構化數據

鎖定
普通純文本相比,半結構化數據具有一定的結構性,OEM(Object exchange Model)是一種典型的半結構化數據模型。
中文名
半結構化數據
外文名
semi-structured data
特    點
具有一定的結構性
類    型
數據庫

半結構化數據概念

半結構化數據(semi-structured data)。在做一個信息系統設計時肯定會涉及到數據的存儲,一般我們都會將系統信息保存在某個指定的關係數據庫中。我們會將數據按業務分類,並設計相應的表,然後將對應的信息保存到相應的表中。比如我們做一個業務系統,要保存員工基本信息:工號、姓名、性別、出生日期等等;我們就會建立一個對應的staff表。
但不是系統中所有信息都可以這樣簡單的用一個表中的字段就能對應的。

半結構化數據地位

半結構化數據(semi-structured data)模型在數據庫系統中有着獨特的地位:
(1)它是一種適於數據庫集成的數據模型,也就是説,適於描述包含在兩個或多個數據庫(這些數據庫含有不同模式的相似數據)中的數據。
(2)它是一種標記服務的基礎模型,用於Web上共享信息。 [1] 

半結構化數據必要性

E/R、UML、關係模型、ODL,每個都是以模式開始。模式是一種放置數據的嚴格框架。這種嚴格性提供了某些優點。特別的,關係模型的成功在於它的高效實現。這種高效性來自於關係數據庫中的數據必須符合其模式並且該模式為查詢處理器所知這一事實。 [1] 
另一方面,對半結構化數據模型感興趣的動機主要是它的靈活性。特別的,半結構化數據是“無模式”的。更準確地説,其數據是自描述的。它攜帶了關於其模式的信息,並且這樣的模式可以隨時間在單一數據庫內任意改變。 [1] 
人們可能很自然地想知道無模式地創建數據庫是否存在優點,在這樣的數據庫中,可以隨意的輸入數據,並且訪問該數據時你感覺到的模式信息就是適合它的模式。實際上有一些小規模的信息系統,如Lotos Notes,它們就採用了自描述數據的方法。這種靈活性可能使查詢處理更加困難,但它給用户提供了顯著地優勢。例如,可以在半結構化模型中維護一個電影數據庫,並且能如用户所願地添加類似“我喜歡看此部電影嗎?”這樣的新屬性。這些屬性不需要所有電影都有值,或者甚至不需要多於一個電影有值。同樣的,可以添加類似“homage to”這樣的聯繫而不需要改變模式,或者甚至表示不止一對的電影間的聯繫。 [1] 

半結構化數據數據分類

結構化數據
就像上面舉的例子。這種類別的數據最好處理,只要簡單的建立一個對應的表就可以了。
非結構化數據
像圖片、聲音、視頻等等。這類信息我們通常無法直接知道他的內容,數據庫也只能將它保存在一個BLOB字段中,對以後檢索非常麻煩。一般的做法是,建立一個包含三個字段的表(編號 number、內容描述 varchar(1024)、內容 blob)。引用通過編號,檢索通過內容描述。還有很多非結構化數據的處理工具,市面上常見的內容管理器就是其中的一種。
半結構化數據
這樣的數據和上面兩種類別都不一樣,它是結構化的數據,但是結構變化很大。因為我們要了解數據的細節所以不能將數據簡單的組織成一個文件按照非結構化數據處理,由於結構變化很大也不能夠簡單的建立一個表和他對應。本文主要討論針對半結構化數據存儲常用的兩種方式。
先舉一個半結構化的數據的例子,比如存儲員工的簡歷。不像員工基本信息那樣一致每個員工的簡歷大不相同。有的員工的簡歷很簡單,比如只包括教育情況;有的員工的簡歷卻很複雜,比如包括工作情況、婚姻情況、出入境情況、户口遷移情況、黨籍情況、技術技能等等。還有可能有一些我們沒有預料的信息。通常我們要完整的保存這些信息並不是很容易的,因為我們不會希望系統中的表的結構在系統的運行期間進行變更。

半結構化數據儲存方式

化解為結構化數據
這種方法通常是對現有的簡歷中的信息進行粗略的統計整理,總結出簡歷中信息所有的類別同時考慮系統真正關心的信息。對每一類別建立一個子表,比如上例中我們可以建立教育情況子表、工作情況子表、黨籍情況子表等等,並在主表中加入一個備註字段,將其它系統不關心的信息和一開始沒有考慮到的信息保存在備註中。
優點:查詢統計比較方便。
缺點:不能適應數據的擴展,不能對擴展的信息進行檢索,對項目設計階段沒有考慮到的同時又是系統關心的信息的存儲不能很好的處理。
用XML格式來組織並保存到CLOB字段中
XML可能是最適合存儲半結構化的數據了。將不同類別的信息保存在XML的不同的節點中就可以了。
優點:能夠靈活的進行擴展,信息進行擴展式只要更改對應的DTD或者XSD就可以了。
缺點:查詢效率比較低,要藉助XPATH來完成查詢統計,隨着數據庫對XML的支持的提升性能問題有望能夠很好的解決。

半結構化數據特徵

半結構化數據中結構模式附着或相融與數據本身,數據自身就描述了其相應結構模式。具體來説,半結構化數據具有下述特徵:
(1)數據結構自描述性。結構與數據相交融,在研究和應用中不需要區分“元數據”和“一般數據”(兩者合二為一)。
(2)數據結構描述的複雜性。結構難以納入現有的各種描述框架,實際應用中不易進行清晰的理解與把握。
(3)數據結構描述的動態性。數據變化通常會導致結構模式變化,整體上具有動態得結構模式。 [2] 
常規的數據模型例如E-R模型、關係模型和對象模型恰恰與上述特點相反,因此可以成為結構化數據模型。而相對於結構化數據,半結構化數據的構成更為複雜和不確定,從而也具有更高的靈活性,能夠適應更為廣泛的應用需求。 [2] 

半結構化數據表示

半結構化數據的數據庫是節點的集合,每個節點都是一個葉子節點或者一個內部節點。葉子節點與數據相關,數據的類型可以是任意原子類型,如數字和字符串。每個內部節點至少有一條外向的弧。每條弧都有一個標籤,該標籤指明弧開始處的節點與弧末端的節點之間的關係。一個名為根的內部節點沒有進入的弧,它代表整個數據庫。每個節點都從根可達,儘管這個圖結構未必是一棵樹。 [1] 
半結構化數據通常是由一個由節點集合和弧段集合組成的具根有向圖結構。有向圖中節點集合元素分為三類:
(1)葉結點。此類節點沒有由其出發的弧段,其語義表示與實際數據相關,相應數據取值類型可以是任意原子類型(數值型或字符串型)。
(2)內部節點。此類節點既有由其出發又有由其終止的弧段。
(3)根節點。此節點唯一,其特徵是隻作為一個或多個弧段的始點,其語義是整個數據文件。 [2] 

半結構化數據模型

半結構化數據模型允許那些相同類型的數據項有不同的屬性集的數據規格説明。這和早先提到的數據模型形成了對比:那些數據模型中某種特定類型的所有數據必須有相同的屬性集。 [3] 
對象交換模型是一個半結構化數據模型。對象由一個三元組表示,包括標記、類型和對象的值。在對象交換模型中,對象具有唯一的標識。由於模型中對象的標識可以看做關係模型中的屬性名,對象的類型可以看做關係模型中的屬性類型,所以對象交換模型基本上是自描述的。對象交換模型中的標記儘可能地詳盡,因為標記除了能夠表達對象的含義外,還可以用來確定特定的對象。 [4] 
參考資料
  • 1.    (美)JEFFREYD.ULLMAN,JENNIFERWIDOM編著.數據庫系統基礎教程 .北京:由機械工業出版社,2009:289-295
  • 2.    葉小平,湯庸,湯娜,潘明編著.數據庫系統教程 第2版.北京:清華大學出版社,2012:314-317
  • 3.    (美)西爾伯沙茨(Silberschatz,A.),(美)克爾斯(Korth,H.F.),(美)蘇達山(Sudarshan,H.)著 楊冬青等譯.數據庫系統概念 第5版.北京:機械工業出版社,2006:12-12
  • 4.    [美]羅摩克希納 [美]格爾克著.數據庫管理系統(第2版).北京:清華大學出版社,2002:497-498