結構化數據
結構化數據指的可以在一個記錄文件里面以固定格式存在的數據,它依賴於提前建立好的數據標准規范(有時候也稱元數據),例如:需要多少個屬性,每個屬性什么類型,每個屬性的取值范圍等等,類似下圖所示,提前定義好了一個二維矩陣的元數據,包含有列名稱、列的類型、列的約束等:
可見,雖然結構化數據的存儲和排列是很有規律的,這對查詢和修改等操作很有幫助。但是,它的擴展性不好(比如,業務需要增加一個字段,此時就需要將已存儲入庫的所有數據全部更新一遍,效率極低)。
非結構化數據
非結構化數據是指信息無法預先定義其格式規范的數據模型。非結構化數據一般指文字型數據但同時數據中又存在很多諸如時間、數字等的信息。相對於傳統的在數據庫中或者標記好的文件,由於他們的非特征性和歧義性會更難理解。包括所有格式的辦公文Word、PPT、文本、圖片、各類報表、圖像和音頻/視頻信息等等。
對非結構化的數據,我們一般以二進制的形式直接整體進行存儲。
半結構化數據
半結構化數據就是介於完全結構化數據(如關系型數據庫、面向對象數據庫中的數據)和完全非結構的數據(如聲音、圖像文件等)之間的數據,它並無明確的數據模型結構,但包含相關標記定義可用來分隔語義元素以及對記錄和字段進行分層。因此,它也被稱為自描述的結構。
半結構化數據,屬於同一類的實體可以有不同的屬性,即使他們被組合在一起,且這些屬性的順序也並不重要。例如,日志文件、HTML文件、XML文檔、JSON文檔、Email等。
現以常見的XML文件舉例如下(屬性的順序可以調整,且屬性的個數是可以不一樣):
可見,半結構化的數據格式可以自由地表達、更新很多有用的信息。所以,半結構化數據的擴展性是很好的。