你應該瞭解的流行圖資料庫查詢語言

qing_yun發表於2024-01-15

用於圖資料管理的查詢語言稱為圖查詢語言(GQL)。它們定義了一種提取和檢索圖模型資料的方法。所有資料庫都需要與其客戶端對話,查詢語言定義了它們能做什麼。

以下是流行的圖資料庫查詢語言,它們提供了一種解壓縮圖中資訊的方法。讓我們深入瞭解流行查詢語言的細節及其優缺點。

GraphQL

GraphQL 是基於 REST 架構的現代替代方案,旨在從客戶端應用程式查詢資料庫。它規定了如何在 API 後端向客戶端展示資料。它還提供了靈活性,並透過使客戶端提出精確的資料請求來改善客戶端與伺服器之間的互動。

GraphQL 的優點

  • GraphQL 最適合複雜的微服務,您可以在其 API 背後整合多個系統。它的伺服器可從現有系統中獲取資料,並將其打包為 GraphQL 響應格式。因此,對於因規模龐大而難以處理和維護的第三方應用程式介面和傳統基礎設施來說,GraphQL 大有裨益。此外,GraphQL 還能將多個微服務合併為一個 GraphQL 模式,從而處理它們之間的通訊。

  • REST 響應中的資料要麼很少,要麼有時不夠用,因此需要再次請求。GraphQL 透過在一次請求中獲取所需的資料來解決這個問題。

  • GraphQL 使文件與 API 變化保持同步。由於其 API 與程式碼緊密耦合,因此當查詢、欄位或型別發生變化時,文件也會隨之變化。

GraphQL 的缺點

  • 有時,當客戶要求一次查詢太多巢狀欄位時,GraphQL 查詢會遇到效能問題。因此,對於複雜的查詢,最好使用 REST API。

  • GraphQL 規範中不包括檔案上傳功能,因為它不理解檔案。

  • 在 GraphQL 中實現簡化快取具有挑戰性,因為即使對同一實體進行操作,每個查詢也可能是不同的。

Gremlin

Gremlin 是 Apache TinkerPop 的一種圖遍歷語言,被許多圖資料庫解決方案所採用。由於它是一種面向路徑的語言,因此可用於以下方面:

  • 從圖中檢索資料

  • 修改圖資料

  • 表達複雜的突變操作和圖遍歷 開發人員可以用 Python、Java、Javascript、Scala 和 Groovy 等多種程式語言編寫 Gremlin 查詢。

Gremlin 的優點

  • Gremlin 允許使用者在圖中進行命令式(過程式)和宣告式(描述式)遍歷。

  • Gremlin 遍歷可以用任何支援函式組合和函式巢狀的程式語言編寫。

Gremlin 的缺點

  • 它是一種低階圖遍歷語言,不易閱讀。

  • 需要進行大量模式匹配的複雜查詢可能難以編寫,而且在 Gremlin 中表現不佳。

Cypher

Cypher 是一種圖資料庫查詢語言,可以從圖中檢索資料。由於其直觀性和與其他語言的相似性,容易學習。

Cypher 是 Neo4j 的查詢語言,其獨特之處在於它在很大程度上基於模式,並提供了一種視覺化的方式來匹配關係和模式。你可以使用物件圖對映器(OGM)將圖中的關係和節點對映到領域模型中的引用和物件。

兩個有名的 OGM 是:

Neo4j-OGM - 它與 Java 驅動程式一起使用 Cypher 查詢語句,並將現有領域物件對映到 Neo4j。Neo4j-OGM 支援快速類後設資料掃描和最佳化資料載入管理等功能。

GQLAlchemy - 物件圖對映器是一個開源 Python 庫,是 Python 物件與圖資料庫物件之間的連結。它為編寫物件導向程式碼提供了開發人員友好的工作流程。您可以編寫物件導向的程式碼,GQLAlchemy 會自動將其轉換為 Cypher 查詢。

Cypher 的優點

  • Cypher 查詢語言簡潔易學。它可以幫助使用者編寫直觀、富有表現力的查詢,以便快速檢索結果。

  • 資料豐富、可靠、安全,非常適合應用程式開發。

  • 使用 ASCII-Art 語法匹配圖中的節點和關係模式,因此具有視覺化和邏輯性。

Cypher 的缺點

  • Neo4j Cypher內部不支援日期資料型別。

  • 對於不需要大量連線或聚合的簡單資料模型來說,它沒有很好的效能優勢。

  • 在高寫入負載的情況下,它不能很好地擴充套件寫入。

SPARQL

SPARQL 是“SPARQL 協議和 RDF 查詢語言”的縮寫。它是一種查詢語言,可讓使用者從資料庫中查詢可對映到 RDF(資源描述框架)的資訊。SPARQL 有四種查詢型別,即 ASK、SELECT、CONSTRUCT 和 DESCRIBE。SPARQL 查詢中的資料在內部表示為由主語、謂語和賓語組成的三元組。

SPARQL 的優點

  • SPARQL 可以跨不同資源庫聯合查詢。

  • 既能訪問 RDF 資料,也能訪問關係資料。

  • SPARQL 可以整合資料,要求資料位於相互交叉的域中。

SPARQL 的缺點

  • SPARQL 不易閱讀和理解。

  • 不允許非繫結遞迴查詢。

  • SPARQL 專為 RDF 資料而建,並非每個資料庫都符合 RDF 資料的要求。

AQL

AQL 是“ArangoDB 查詢語言”的首字母縮寫,它允許使用者檢索和修改儲存在 ArangoDB(一種完全可管理和可擴充套件的圖資料庫)中的資料。AQL 易於人類閱讀,因為它使用的是英語中的關鍵字,而且是宣告式的,這意味著查詢描述的是應該實現的結果,而不是應該如何實現。

AQL 的優點

  • AQL 支援各種函式,如 ANALYZER()、BOOST() 和 EXISTS()等,允許進行復雜的計算。

  • 可以幫助開發人員開發強大的應用程式,並將資料原生對映到資料庫。

  • 是一種靈活的語言,可幫助架構師以更少的工作量擴充套件和調整其架構,以適應不斷變化的需求。

AQL 的缺點

  • 不支援資料定義操作,如建立和刪除集合或資料庫。

  • 初始執行計劃中的執行節點不能超過四千個。

  • 不能使用超過一千個結果暫存器。

結論

希望你對流行的圖資料庫查詢語言有所瞭解。每種語言都有其優點和缺點。但是,使用哪種語言從圖中提取資料取決於可用資料和語言支援的操作。我們無法說哪種語言最好,如下所示,它們在不同領域都有各自的用例:

  • GraphQL - 最適合複雜系統和微服務。

  • Gremlin - 允許使用者進行過程性和描述性圖遍歷。

  • Cypher - 非常適合資料分析和應用程式開發。

  • SPARQL - 最適合整合來自不同交叉領域的資料。

  • AQL - 可分別幫助開發人員和架構師開發功能強大的應用程式和擴充套件架構。

作者:Memgraph

Ps:目前圖查詢語言還沒有形成標準,不少人認為該標準的短缺減緩了圖資料庫的使用,不過這種情況可能很快得到改善,2018年,ISO/IEC 聯合技術委員會提出推行圖查詢國際標準語言 ISO GQL 的提案,圖資料庫廠商也正在積極推進該標準制定,預計會在2024年釋出。

來自 “ https://memgraph.com/blog/graph-database-query-lan ”,原文連結:https://blog.itpub.net/69925873/viewspace-3003930/,如需轉載,請註明出處,否則將追究法律責任。

相關文章