什麼是階層資料?

階層資料是在整體樹狀結構中將項目以父子關係相互連接的資料結構,可以將資料想像成家譜樹,由祖父母、父母、子女和孫子女形成了連接資料的階層結構。通常,這用於展示組織圖、內含細項任務的專案、或語言術語的分類。

階層資料範例

在階層資料中,每個「子節點」都只有一個「父節點」,但每個父節點可以有多個子節點。第一個節點位於階層結構的頂部,稱為根節點。當需要檢索資訊時,便從根節點自上而下掃描整棵樹。由於每次使用者進行查詢時都需要掃描整棵樹,使得系統變得不靈活、速度慢,因此現代化資料庫已發展為在相同的資料上方設置多個階層結構,以便能夠更快、更容易地搜尋。

然而,階層資料今天仍被廣泛使用。階層資料結構的一個常見用途是公司人力配置資訊,在組織圖架構下,CEO 是根節點位於頂部,其他人員則配置於下方架構之中。

最早的一種階層資料模型是由 IBM 在 1960 年代開發,然而它很快就被關聯式資料模型所取代,以克服此模型固有的一些重大結構問題。

為什麼資料結構很重要?

組織資料的結構至關重要,對於必須能夠輸入、處理、檢索和維護資訊的企業來說,選擇資料結構類型絕對是極重要的環節。想像一下在您的電腦上,如果沒有資料夾結構或命名規定,那麼尋找或使用任何內容的能力都將受到嚴重影響。

相反地,在企業中您會發現按部門名稱邏輯排列的資料夾,在這些部門中,資料夾可能是按財務季度或適用其業務的其他邏輯方式排列,其中各個檔案又採用描述性命名方式,通常是帶有日期或版本的特定記錄格式。所有這些都按首字母順序排列儲存,這意味著當員工需要存取某個檔案時,一層層往下搜尋就能輕鬆找到他們所需的內容。同樣,良好的資料結構可以實現良好、快速、高效的業務實踐做法。

總體而言,資料科學的一個巨大限制是,儘管世界是動態的三維立體結構,電腦卻認為世界是靜止的二維平面。就像人們知道有 200 種狗品種和 200 種蛇品種,但電腦只知道有 400 種物品。因此,以電腦可以解讀的方式建立資料結構,以便對資料進行分組、存取、處理和查閱,就變得異常重要。

認識單一的治理、管理和使用全部共用數據資產的的解決方案
認識單一的治理、管理和使用全部共用數據資產的的解決方案
使用多合一方法來管理整個企業的數據資產,從而避免孤島情況。

何時組織應使用階層資料?

目前,銀行和電信等許多組織都在其應用程式中使用階層資料,這是因為他們需要電腦展現快速且高度準確的性能。大多數電腦上的 Windows 登錄檔也是階層資料結構的一個範例,此外由於資料量龐大,複雜的製造專案也經常使用階層資料模型。

階層資料最適合在下列情況中使用:

  • 資料可以透過清晰的父子結構以「樹狀」形式儲存
  • 需要瞭解階層結構
  • 資料量要求高
  • 現有系統過於複雜,無法改為關聯式或網路模型

階層資料的替代方案

關聯式資料

這是最常見的資料模型,將資料依照彼此關係進行分組。亦即將一組變數分組成真 (true)、假 (false) 或空 (null) 類別,然後將共用某些變數和屬性的資料項與其他項目放在一起,各個群組之間具有一定關聯,這個群組內的項目與另一個群組有相似之處。與受限於一對多性質的階層資料不同,關聯式資料可以存在多對多關係。關聯式資料庫使用的是結構化查詢語言 (SQL) 這種標準查詢語言。

關聯式模型非常適合在不同執行個體之間維護資料的一致性。例如,一位客戶從 ATM 提款後,該金額更動也會反映在手機應用程式的餘額中。這使得它非常適合用來確保多個資料執行個體在眾多系統中均呈現正確的內容。

與階層結構相比,它不是將資料儲存在樹狀結構中,而是儲存在表格裡。

網路模型

與關聯式資料模型一樣,網路模型的發明也是為了解決階層資料庫模型的固有缺點。在網路資料模型中,一個孩子可以連接到多個父母,儘管他們被稱為所有者和成員。

此模型可支援多種關係,比階層模型更流暢,但也複雜得多,因此較難管理和維護。它仍然不如關聯式資料模型那麼靈活,而且並非所有關係都可以準確建模並連接所有者和成員。

階層資料結構的優點

資料很容易檢索

因為資料節點之間的連結定義得非常好,所以尋找和檢索資料變得很容易。由於父母和孩子緊密地儲存在一起,因此瀏覽和資料檢索都會非常快。

完整參照

始終保持資料的完整性,因為在父表格中所做的所有變更,都會自動在子表格中同步更改。

結構簡單

由上至下的父子關係結構很容易馬上理解,概念上非常簡單,在資料庫中有清晰的命令鏈,因此可達到極高性能。由於結構簡單,也有利於資料共享。

良好安全性

資料庫安全保護是由資料庫管理系統提供和實施,它非常安全,以至於一些結構化查詢語言開發人員會說,只有成為魔術師才有辦法輕易取出資料。

統一化資料基礎架構電子書
O'Reilly 報告:建立整合的數據基礎設施
只有三分之一的企業已發展成為數據驅動的機構。解決辦法是什麼?在這電子書尋找答案!

階層資料結構的挑戰

不靈活

此模型不靈活且僵化,添加節點或關係可能會破壞整個結構。由於父表格和子表格之間並未建立關聯,因此很難直接在子表格中添加新的輸入項,而是必須先在父表格中輸入額外的資料才行。同樣,將孩子從一個層級轉移到另一個層級也具有挑戰性。

僅適用於一對多關係

當一個父母有很多孩子時,這些關係很容易表現出來。但是,如果存在多對多關係,就變得很難表達了。階層資料不支援比父子關係更複雜的任何事物,也就是說,孩子不能連接到其他父母,也沒有能力連接來自不同父母的孩子。

全部刪除

如果刪除了父母,則所有孩子(及其下更多後代)也將自動被刪除。想像一下在您的桌面型電腦中,如果您刪除一個資料夾,則其中的所有檔案都會被刪除,階層資料庫的刪除操作就像這樣。

缺乏標準

沒有專屬的資料定義或資料操作語言。通常,系統是依靠剛性結構來強制執行各項標準,但這種做法並非總是有效。

實施很複雜

階層資料系統的實施需要同時瞭解資料儲存特性和組織結構知識,與其他系統相比,這使得實施起來更加複雜和困難。

階層資料模型的未來

雖然今天仍存在一些本質上是階層的模型,但它們正在逐漸失寵。現在已經不常在新系統中使用階層資料模型了,因為它們的剛性結構、實施困難和巨大限制,使得實施起來既不經濟又笨重。

雖然它們在存取資料方面很有效率,但其他限制使它們無法應對眾多資料類型和數量的挑戰。

做為最早的資料模型之一,現在還無法預見技術快速變遷會使它徹底過時淘汰,但這種轉變正在發生,因為階層資料並不能提供未來最需要的靈活特性。網路和生態系統正在改用更有機的方式來儲存和存取資料,以迅速取代階層結構。