圖形資料庫和關聯式資料庫有何區別?
圖形資料庫和關聯式資料庫皆會儲存與兩者之間具有預先定義關係的資料項目。但是,它們所代表的資料關係非常不同。關聯式資料庫會以包含橫列與直欄的資料表格式儲存資料。相關資料也儲存在表格中,且資料點會連結回原始表格。與資料關係相關的作業會變得效率低下,因為它們需要多個資料表查詢。相較之下,圖形資料庫會將資料儲存為實體和關係的網路。它使用數學圖形理論來儲存,並且會在資料關係上執行作業。圖形資料庫在關係建模方面更有效率。對於具有複雜資料互連的使用案例,可大幅提升應用程式效能。
資料模型:圖形資料庫與關聯式資料庫
圖形資料庫和關聯式資料庫都會儲存資訊,並且表示資料之間的關係。但是,關聯式模型優先處理資料實體,而圖形模型優先處理實體之間的關係。
關聯式資料庫模型
關聯式資料庫使用將資訊組織成列和欄的資料表。欄會保留資料實體的特定屬性,而列則代表個別資料記錄。
關聯式資料庫的固定結構描述需要您預先概述資料表與主索引鍵和外部索引鍵之間的關係。
範例
考慮一個社交媒體應用程式,其中包含可能彼此是朋友的客戶描述檔。您將需要兩個資料表來建模此資料。
客戶資料表可能如下所示:
ID |
名稱 |
位置 |
C1 |
Alejandro |
美國 |
C2 |
Ana |
美國 |
C3 |
Kwaku |
美國 |
C4 |
Pat |
美國 |
朋友資料表可能如下所示:
客戶 ID |
朋友 ID |
C1 |
C2 |
C1 |
C3 |
C2 |
C4 |
C2 |
C1 |
C3 |
C1 |
C3 |
C4 |
如您縮減,表示複雜的關係時會存在冗餘和重複。這會增加儲存要求並大規模降低效能。
圖形資料庫模型
另一方面,圖形資料庫使用具有屬性、邊緣和節點的圖形結構來表示資料。節點是物件,邊緣展示這些節點之間的關係,屬性則描述節點和邊緣的屬性。這種動態結構使得圖形資料庫可用於表示互連的資料。圖形資料庫在關係和資料類型方面提供更大的靈活性。
範例
上一節中社交媒體應用程式的資料現在將表示如下:
{customer_id: “C1”
name: “Alejandro”
location:”USA”
friends:”C2,C3”}
在建模關係時,資料記錄沒有更多的重複或冗餘。
主要區別:圖形資料庫與關聯式資料庫
除了不同的資料模型之外,關聯式和圖形資料庫在功能和效用方面也有諸多顯著的差異。
操作
可以使用圖形遍歷演算法來查詢圖形資料模型。這些演算法採用深度優先或廣度優先形式,這有助於快速尋找和擷取連線的資料。圖形資料庫對於複雜的互連和查詢非常有用,因為它們可以理解資料之間的關係。
相比之下,關聯式資料庫使用 SQL 來擷取和操作資料。使用 SQL,使用者可以在資料表上執行各種類型的查詢,例如 SELECT、INSERT、UPDATE 和 DELETE。關聯式資料庫擅長處理資料表之間具有定義良好關係的結構化資料。此類資料庫對於跨多個資料表執行複雜的篩選、彙總和聯結特別有效。
可擴展性
擴展關聯式資料庫時,通常會垂直擴展。垂直擴展是升級硬體 (例如 CPU、儲存體或記憶體),以增加伺服器可處理的工作負載。垂直擴展有其局限性,這可能會與成本要求一起為客戶帶來挑戰。
關聯式資料庫也可以使用碎片化來水平擴展,從中可以在多個伺服器之間分佈資料。但是,碎片化會增加資料儲存的複雜性,並可能產生一致性問題。
相比之下,圖形資料庫在水平擴展方面非常出色,並使用分區執行擴展。分區位於不同的伺服器上,這可讓許多伺服器平行處理圖形查詢。透過跨多個節點進行分佈,資料庫引擎可以有效地查詢資料,甚至可執行大規模查詢。
效能
圖形資料庫提供無索引鄰接,這可提高效能。無索引鄰接可讓系統在相關實體之間遍歷。由於圖形資料庫將關係儲存為節點之間的參考或指針,因此資料庫可以跟隨記憶體指針並在實體之間快速導覽。在這種情況下,資料庫不需要索引或映射資料表。
藉助此無索引鄰接系統,圖形資料庫可實現恆定時間的關係遍歷。恆定時間表示無論資料大小為何,都可以在相同的時間內一致地遍歷圖形資料庫中的關係。節點之間的直接連線可實現即時存取,因此您可以快速查詢和追蹤關係。這些功能使圖形資料庫非常高效。
相比之下,關聯式資料庫使用索引查找,而且必須掃描資料表以辨識實體之間的關係。可以聯結多個資料表,但此操作非常耗時,因為系統必須掃描更多資料上的更大規模索引。因此,關聯式資料庫不會提供與圖形資料庫相同的效能。
易用性
圖形資料庫以關係為中心,可讓您在使用連線資料時輕鬆處理此類資料庫。這些資料庫擅長多躍點查詢,在此類查詢中會遍歷具有多個關係的路徑。還可以使用圖形查詢語言 (如 Gemlin 或 Cypher) 直觀地表達關係。可以使用這些語言探索互連的資料,這樣可以簡化用於瀏覽巢狀和聯結資料的語法。
關聯式資料庫使用 SQL,在管理多躍點查詢時,此類語言可能會讓您感到不自然。如果查詢具有多個聯結且跨越巢狀子查詢,則很難編寫相應的 SQL 語句。如果您不夠謹慎,這很容易轉換為難以閱讀和維護的笨重查詢。
話雖如此,關聯式資料庫已發展成熟,在各種使用案例中廣受歡迎。可以使用多種工具和資源以及社群支援來最佳化系統。同樣,關聯式資料庫在以可靠且符合 ACID 標準的方式管理結構化資料時表現出色。ACID 屬性包括單元性、一致性、隔離性和耐用性,有助於確保資料的有效性。
使用時機:圖形資料庫與關聯式資料庫
圖形資料庫和關聯式資料庫均有許多有效的使用案例。兩種資料庫具有不同的資料模型和幾點核心差異,因此它們在不同領域表現出色。
圖形資料庫
圖形資料庫提供靈活的結構描述,可動態變更和調整資料。此類資料庫關注資料關係,在分析、語義搜尋或推薦引擎中非常有用。在下列情況中,圖形資料庫是更理想的選擇:
- 您正在處理具有複雜關係的資料,例如社交網路、欺詐偵測、知識圖形和搜尋引擎
- 您需要不斷演變的結構描述,因為這樣可以修改邊緣、節點和屬性,而不會干擾資料庫結構的其餘部分
- 您正在處理互連的資料,並且需要在關係之間進行三次或更多次跳躍 (「朋友的朋友」類型查詢)
圖形資料庫具備靈活性、可擴展性和動態性,並且擅長顯示資料之間的關係。
關聯式資料庫
關聯式資料庫提供結構化結構描述,提供出色的資料完整性支援。在下列情況中,關聯式資料庫是更理想的選擇:
- 您需要 ACID 合規性以及高水準的資料完整性和一致性,例如在金融交易中
- 您正在使用非常適合表格式資料模型的高度結構化資料,例如在企業資源管理中
- 您的資料包含有限的關係
差異摘要:關聯式資料庫與圖形資料庫
關聯式資料庫 |
圖形資料庫 |
|
型號 |
帶有列和欄的資料表。 |
帶有表示為 JSON 文件的資料的互連節點。 |
操作 |
SQL 操作,如建立、讀取、更新和刪除 (CRUD)。 |
操作包括 CRUD 和以數學圖論為基礎的圖形遍歷操作。 |
可擴展性 |
傳統的關聯式資料庫可以垂直擴展,但很難進行水平擴展。 |
圖形資料庫在水平擴展方面表現出色。此類資料庫可以使用分區跨多個節點分佈資料。 |
效能 |
在遍歷可能會降低效能的關係時,關聯式資料庫會面臨複雜的查詢。 |
圖形資料庫擅長表示和查詢資料之間的關係。 |
易用性 |
關聯式資料庫適用於大型資料集和結構化資料。此類資料庫很難處理多躍點查詢。 |
在處理以關係為中心的資料時,圖形資料庫便於使用。使用圖形查詢語言,可以快速查詢多個躍點的資料。 |
AWS 如何協助滿足您的關聯式和圖形資料庫要求?
Amazon Web Services (AWS) 提供適用於關聯式和圖形資料庫使用案例的解決方案。
Amazon Relational Database Service (Amazon RDS) 是受管服務的集合,方便在雲端設定、操作和擴展關聯式資料庫。Amazon RDS 支援多種資料庫引擎,如下所示:
- Amazon Relational Database Service (Amazon RDS) for SQL Server 可部署多個版本的 SQL Server (2014、2016、2017 和 2019 版)
- Amazon Relational Database Service (Amazon RDS) for MySQL 支援 MySQL Community Edition 5.7 和 8.0 版
- Amazon Relational Database Service (Amazon RDS) for MariaDB 支援 MariaDB Server 10.3、10.4、10.5 和 10.6 版
同樣,Amazon Neptune 是專門打造的高效能圖形資料庫引擎。該引擎經過最佳化,可以儲存數十億個關係,並以毫秒級的延遲查詢圖形。
Neptune 支援流行的圖形模型 — 屬性圖形和 W3C 的資源描述框架 (RDF)。它也支援 Gremlin 和 SPARQL 等查詢語言,因此您可以建置導覽高度連線資料集的查詢。
Neptune 提供多個功能:
- Neptune 具有高可用性、僅供讀取複本、point-in-time 恢復、連續備份,並可跨可用區域進行複寫。
- Neptune 非常安全,支援靜態加密。
- Neptune 全受管。因此,您不用再擔心硬體佈建、軟體修補、安裝、組態或備份等資料庫管理任務。
立即建立帳戶,開始使用 AWS 上的圖形和關聯式資料庫。