半結構化數據有哪些?它的存儲方式是怎麼樣的?

數影星球 發佈 2022-09-16T18:28:29.327406+00:00

半結構化數據,是介於結構化和非結構化之間的數據。它是結構化的數據,但是結構變化很大。因為若要了解數據的細節,不僅僅是將數據簡單的組織成一個文件,按照非結構化數據,而由於結構變化很大,也不能夠簡單的建立一個表和它對應,以結構化數據來處理。

半結構化數據,是介於結構化和非結構化之間的數據。它是結構化的數據,但是結構變化很大。因為若要了解數據的細節,不僅僅是將數據簡單的組織成一個文件,按照非結構化數據,而由於結構變化很大,也不能夠簡單的建立一個表和它對應,以結構化數據來處理。


據了解,和普通純文本相比,半結構化數據具有一定的結構性,如OEM(Object exchange Model)是一種典型的半結構化數據模型。此外,半結構化數據的典型場景包括:郵件系統、WEB集群、教學資源庫、數據挖掘系統、檔案系統等等,這些應用對於數據存儲、數據備份、數據共享以及數據歸檔等基本存儲需求。



日常工作生活中,我們最常接觸到的半結構化數據就是個人簡歷了。個人簡歷不像個人基本信息那樣一致,每個人的簡歷大不相同。有的人的簡歷很簡單,比如只包括教育情況;有的人的簡歷卻很複雜,比如包括工作情況、婚姻情況、出入境情況、戶口遷移情況、黨籍情況、技術技能等等;甚至可能還有一些我們沒有預料的信息。


而我們要完整的保存這些信息並不是很容易的,因為我們不會希望系統中的表的結構在系統的運行期間進行變更。因此,在做一個信息系統設計時肯定會涉及到數據的存儲,一般我們都會將系統信息保存在某個指定的關係資料庫中。我們會將數據按業務分類,並設計相應的表,然後將對應的信息保存到相應的表中。比如我們做一個業務系統,要保存員工基本信息:工號、姓名、性別、出生日期等等;我們就會建立一個對應的staff表。



半結構化數據中結構模式附著或相融於數據本身,數據自身就描述了其相應結構模式。具體來說,半結構化數據具有下述特徵:數據結構自描述性,結構與數據相交融,在研究和應用中不需要區分「元數據」和「一般數據」(兩者合二為一);數據結構描述的複雜性,結構難以納入現有的各種描述框架,實際應用中不易進行清晰的理解與把握;數據結構描述的動態性。數據變化通常會導致結構模式變化,整體上具有動態的結構模式。


也因此,半結構化數據有以下5種:日誌文件;XML 文檔;JSON 文檔;Email;HTML文檔:


日誌文件是用於記錄系統操作事件的記錄文件或文件集合,作業系統有作業系統日誌文件,資料庫系統有資料庫系統日誌文件;


XML文檔是一種用於標記電子文件使其具有結構性的標記語言;



JSON文檔是一種輕量級的數據交換格式的文檔,易於人閱讀和編寫,同時也易於機器解析和生成,JSON採用完全獨立於語言的文本格式,但是也使用了類似於 C 語言家族的習慣(包括 C,C++, C#, Java, JavaScript, Perl, Python 等);


電子郵件可以是文字、圖像、聲音等多種形式,同時,用戶可以得到大量免費的新聞、專題郵件,並輕鬆實現輕鬆的信息搜索;


HTML文檔是自描述的,數據的結構和內容混在一起,沒有明顯的區分,因此,HTML文檔就屬於半結構化數據。



半結構化數據的存儲方式一般是化解為結構化數據。這種方法通常是對現有的信息進行粗略的統計整理,總結出信息所有的類別同時考慮系統真正關心的信息。對每一類別建立一個子表。比如上面提到個人簡歷我們可以建立教育情況子表、工作情況子表、黨籍情況子表等等,並在主表中加入一個備註欄位,將其它系統不關心的信息和一開始沒有考慮到的信息保存在備註中。


這種方式的優點是查詢統計比較方便。缺點則是不能適應數據的擴展,不能對擴展的信息進行檢索,對項目設計階段沒有考慮到的同時又是系統關心的信息的存儲不能很好的處理。



此外,半結構化數據的存儲方式還有:用XML格式來組織並保存到CLOB欄位中;用JSON格式來組織並保存到CLOB欄位中。


XML很適合存儲半結構化的數據,只需要將不同類別的信息保存在XML的不同的節點中就可以了。其優點是能夠靈活的進行擴展,信息進行擴展時只要更改對應的DTD或者XSD;缺點是查詢效率比較低,要藉助XPATH來完成查詢統計。


JSON非常適合存儲半結構化的數據,只需要將不同類別的信息保存在JSON的不同的節點中就可以了。其優點是能夠靈活的進行擴展,信息進行擴展時只要在應用程式來控制JSON對應的Schema;缺點是查詢效率比較低,要通過資料庫本身提供的JSON處理方法來完成查詢統計。



最後,需要注意的是,半結構化數據是先有數據,再有結構。

關鍵字: