圖資料庫

<image>

在電腦科學中，圖資料庫（graph database，GDB）是一個使用圖結構進行語義查詢的資料庫，它使用節點、邊和屬性來表示和存儲數據。該系統的關鍵概念是圖，它直接將存儲中的數據項，與數據節點和節點間表示關係的邊的集合相關聯。這些關係允許直接將存儲區中的數據連結在一起，並且在許多情況下，可以通過一個操作進行檢索。圖資料庫將數據之間的關係作為優先級。查詢圖資料庫中的關係很快，因為它們永久存儲在資料庫本身中。可以使用圖資料庫直觀地顯示關係，使其對於高度互連的數據非常有用。

圖資料庫是一種非關係型資料庫，以解決現有關係資料庫的局限性。圖模型明確地列出了數據節點之間的依賴關係，而關係模型和其他NoSQL資料庫模型則通過隱式連接來連結數據。圖資料庫從設計上，就是可以簡單快速地檢索難以在關係系統中建模的複雜層次結構的。圖資料庫與20世紀70年代的網路模型資料庫相似，它們都表示一般的圖，但是網路模型資料庫在較低的抽象層次上運行，並且不能輕鬆遍歷一系列邊。

圖資料庫的底層存儲機制可能各有不同。有些依賴於關係引擎並將圖數據「存儲」到表中（雖然表是一個邏輯元素，但是這種方法在圖資料庫、圖資料庫管理系統和實際存儲數據的物理設備之間施加了另一層抽象）。另一些則使用鍵值存儲或文件導向的資料庫進行存儲，使它們具有固有的NoSQL結構。大多數基於非關係存儲引擎的圖資料庫還添加了標記或屬性的概念，這些標記或屬性本質上是具有指向另一個文檔的指針的關係。這樣就可以對數據元素進行分類，以便於集中檢索。

從圖資料庫中檢索數據需要SQL之外的查詢語言，SQL是為了處理關係系統中的數據而設計的，因此無法「優雅地」處理遍歷圖。沒有一個像SQL那樣通用的圖查詢語言，通常都是僅限與一個產品的。不過，已經有一些標準化的工作，使得Gremlin、SPARQL和Cypher成為了多供應商查詢語言。除了具有查詢語言接口外，還可以通過應用程式接口（API）訪問一些圖資料庫。

圖資料庫與圖計算引擎不同。圖資料庫是轉換關係OLTP資料庫的技術。而圖計算引擎在OLAP中用於批量分析。由於主要技術公司在使用專有圖資料庫方面的成功以及開源圖資料庫的引入，圖資料庫在2000年代引起了相當大的關注。

## 圖資料庫列表

以下是值得關注的圖形資料庫列表：

名稱｜版本｜許可證｜語言｜描述

AllegroGraph｜5.1 (2015-05)｜專有, 客戶端: Eclipse公共許可證 v1｜C♯, C, Common Lisp, Java, Python｜資源描述框架（RDF）和圖資料庫

Amazon Neptune｜1.0.1.0.200237.0 (2018-09)｜專有｜未披露｜Amazon Neptune 是亞馬遜公司完全託管的圖資料庫。它被用作web服務，是亞馬遜雲計算服務的一部分。支持流行的圖形模型屬性圖和W3C的RDF，以及它們各自的查詢語言 Apache TinkerPop Gremlin和SPARQL。

AnzoGraph｜4.0 (2018-02)｜專有｜C, C++｜AnzoGraph是一個大規模並行原生圖GOLAP（圖形在線分析處理）樣式資料庫，用於支持複雜的SPARQL連接查詢和分析數萬億個關係。AnzoGraph 被設計用於交互式分析廣泛的RDF數據，這些數據在數周或數年的交易中累積，可能來自許多不同的GOLTP和其他資料庫來源。

ArangoDB｜3.3.11 (2018-06-28)｜自由 Apache 2, Proprietary,｜C++, JavaScript, .NET, Java, Python, Node.js, PHP, Scala, Go, Ruby, Elixir｜由triAGENS GmbH開發的NoSQL原生多模型資料庫系統。資料庫系統支持三個重要的數據模型（鍵/值、文檔、圖形）、一個資料庫核心和一個統一的查詢語言AQL（ArangoDB查詢語言）

DataStax Enterprise Graph｜v6.0.1 (2018-06)｜專有｜Java｜分布式、實時、可擴展的資料庫，支持Tinkerpop並與Cassandra集成

HugeGraph｜ v0.10.4 （2019-11-08）｜Apache 2｜Java, Gremlin, Python｜ 百度開源的分布式圖資料庫。支持標準的Apache Tinkerpop Gremlin圖查詢語言，支持屬性圖，可支持千億級規模關係數據；支持多種後端存儲（Cassandra，HBase，RocksDB，MySQL，PostgreSQL，ScyllaDB）；支持各類索引（二級索引、範圍索引、全文索引、聯合索引，均無需依賴第三方索引庫）；提供可視化的Web界面，可用於圖建模、數據導入、圖分析；提供導入工具支持從多種數據源中導入數據到圖中，支持的數據源包括：CSV、HDFS、關係型資料庫（MySQL、Oracle、SQL Server、PostgreSQL）；支持REST接口，並提供10+種通用的圖演算法；支持與Hadoop、Spark GraphX等大數據系統集成。

InfiniteGraph｜3.0 (2013-01)｜專有, commercial｜Java｜分布式，支持雲

JanusGraph｜0.6.1 (2022-01-18)｜Apache 2｜Java｜開源、可擴展、在Linux基金會下的分布式圖資料庫；支持各種存儲後端（Cassandra，HBase，Bigtable，BerkeleyDB）；通過與大數據平台（Spark、Giraph、Hadoop）的集成支持全局圖數據分析、報告和ETL；通過外部索引存儲支持地理、數字範圍和全文檢索（ElasticSearch、Solr、Lucene）。

MarkLogic｜8.0.4 (2015)｜專有, 免費軟體開發者版｜Java｜存儲文檔（JSON和XML）和語義圖數據（RDF三元組）的多模型NoSQL資料庫；還具有內置的搜尋引擎和企業功能，如ACID交易。

Microsoft SQL Server 2017｜RC1｜專有｜SQL/T-SQL, R, Python｜提供圖資料庫功能以模擬多對多關係，圖關係已集成到Transact-SQL中，並使用SQL Server作為基礎資料庫管理系統。

Neo4j｜3.3.5 (2018-04)｜GPLv3 社區版，商業 & AGPLv3 企業和高級版｜Java, .NET, JavaScript, Python, Ruby｜開源，支持ACID，具有用於企業部署的高可用性集群，並附帶基於Web的管理工具，包括完整事務支持和可視節點連結圖瀏覽器；可以使用其內置的REST Web API接口從大多數程式語言訪問，以及使用官方驅動程序的專有Bolt協議；最受歡迎的圖資料庫。

Nebula Graph｜2.0.0 pre （2020-08）｜Apache 2｜C++, nGQL｜ 開源的分布式圖資料庫。屬性圖建模，可支持萬億級別的關聯關係，並支持 RocksDB 後端存儲

OpenLink Virtuoso｜8.2 (2018-10)｜開源版本 GPLv2, 企業版本 proprietary｜C, C++｜安全且高性能的多模型（混合）關係資料庫管理系統（RDBMS），支持SQL和SPARQL，用於對建模為SQL表和/或RDF圖的數據進行聲明（數據定義和數據操作）操作。還支持從多種文檔類型（包括CSV，XML和JSON）索引RDF-Turtle，RDF-N-Triples，RDF-XML，JSON-LD以及映射和生成關係（SQL表或RDF圖）。可以部署為本地或嵌入式實例（在NEPOMUK語義桌面中使用），單實例網路伺服器或無共享彈性集群多實例網路伺服器

Oracle Spatial and Graph; Oracle資料庫的一部分｜12.1.0.2 (2014)｜專有｜Java, PL/SQL｜1）RDF語義圖：Oracle資料庫中全面的W3C RDF圖管理，具有本機推理和三級標籤安全性；2）網路數據模型屬性圖：用於具有持久存儲的物理/邏輯網路和用於記憶體中圖形分析的Java API

OrientDB｜2.2.24 (2017-07)｜社區版 Apache 2, 企業版 商業｜Java｜第二代分布式圖形資料庫，具有靈活性（即它同時是圖資料庫和文檔資料庫）；在開源Apache 2許可下獲得許可；擁有完整的ACID支持；它有一個多主複製和分片；支持無結構模式、全模式和混合模式；有一個基於使用者和角色的安全性分析系統；支持類似於SQL的查詢語言；有HTTP REST + JSON API。

SAP HANA｜SPS12 Revision 120｜專有｜C, C++, Java, JavaScript & SQL｜記憶體中的ACID事務；支持屬性圖

Sparksee｜5.2.0 (2015)｜專有, 商業, 免費軟體 用於評估、研究和開發｜C++｜來自Sparsity Technologies的高性能可擴展資料庫管理系統；主要特徵是檢索和探索大型網路的查詢性能；具有Java，C ++，C＃，Python和Objective-C的綁定; 版本5是第一個圖移動資料庫

Sqrrl Enterprise｜2.0 (2015-02)｜專有｜Java｜分布式實時圖形資料庫，具有單元級安全性和大規模可擴展性

Teradata Aster｜7 (2016)｜專有｜Java, SQL, Python, C++, R｜大規模並行資料庫，包含支持原生SQL、MapReduce和Graph數據存儲和操作的專利引擎; 提供一組分析函數庫和數據可視化功能