圖數據庫
在計算機科學中,圖數據庫(英語:graph database,GDB[1])是一個使用圖結構進行語義查詢的數據庫,它使用節點、邊和屬性來表示和存儲數據。該系統的關鍵概念是圖,它直接將存儲中的數據項,與數據節點和節點間表示關係的邊的集合相關聯。這些關係允許直接將存儲區中的數據鏈接在一起,並且在許多情況下,可以通過一個操作進行檢索。圖數據庫將數據之間的關係作為優先級。查詢圖數據庫中的關係很快,因為它們永久存儲在數據庫本身中。可以使用圖數據庫直觀地顯示關係,使其對於高度互連的數據非常有用。[2]
圖數據庫是一種非關係型數據庫,以解決現有關係數據庫的局限性。圖模型明確地列出了數據節點之間的依賴關係,而關係模型和其他NoSQL數據庫模型則通過隱式連接來鏈接數據。圖數據庫從設計上,就是可以簡單快速地檢索難以在關係系統中建模的複雜層次結構的。圖數據庫與20世紀70年代的網絡模型數據庫相似,它們都表示一般的圖,但是網絡模型數據庫在較低的抽象層次[3]上運行,並且不能輕鬆遍歷一系列邊。[4]
圖數據庫的底層存儲機制可能各有不同。有些依賴於關係引擎並將圖數據「存儲」到表中(雖然表是一個邏輯元素,但是這種方法在圖數據庫、圖數據庫管理系統和實際存儲數據的物理設備之間施加了另一層抽象)。另一些則使用鍵值存儲或文件導向的數據庫進行存儲,使它們具有固有的NoSQL結構。大多數基於非關係存儲引擎的圖數據庫還添加了標記或屬性的概念,這些標記或屬性本質上是具有指向另一個文檔的指針的關係。這樣就可以對數據元素進行分類,以便於集中檢索。
從圖數據庫中檢索數據需要SQL之外的查詢語言,SQL是為了處理關係系統中的數據而設計的,因此無法「優雅地」處理遍歷圖。截至2017年[update],沒有一個像SQL那樣通用的圖查詢語言,通常都是僅限與一個產品的。不過,已經有一些標準化的工作,使得Gremlin、SPARQL和Cypher成為了多供應商查詢語言。除了具有查詢語言接口外,還可以通過應用程序接口(API)訪問一些圖數據庫。
圖數據庫與圖計算引擎不同。圖數據庫是轉換關係OLTP數據庫的技術。而圖計算引擎在OLAP中用於批量分析。由於主要技術公司在使用專有圖數據庫方面的成功以及開源圖數據庫的引入,[5] 圖數據庫在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)[6] | 專有 | 未披露 | Amazon Neptune 是亞馬遜公司完全託管的圖數據庫。它被用作web服務,是亞馬遜雲計算服務的一部分。支持流行的圖形模型屬性圖和W3C的RDF,以及它們各自的查詢語言 Apache TinkerPop Gremlin和SPARQL。 |
AnzoGraph | 4.0 (2018-02) | 專有 | C, C++ | AnzoGraph是一個大規模並行原生圖GOLAP(圖形在線分析處理)樣式數據庫,用於支持複雜的SPARQL連接查詢和分析數萬億個關係。AnzoGraph 被設計用於交互式分析廣泛的RDF數據,這些數據在數周或數年的交易中累積,可能來自許多不同的GOLTP和其他數據庫來源。[7][8][9][10] |
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集成[11] |
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等大數據系統集成。[12] |
InfiniteGraph | 3.0 (2013-01) | 專有, commercial | Java | 分布式,支持雲 |
JanusGraph | 0.6.1 (2022-01-18)[13] | Apache 2 | Java | 開源、可擴展、在Linux基金會下的分布式圖數據庫;支持各種存儲後端(Cassandra,HBase,Bigtable,BerkeleyDB);[14] 通過與大數據平台(Spark、Giraph、Hadoop)的集成支持全局圖數據分析、報告和ETL;通過外部索引存儲支持地理、數字範圍和全文檢索(ElasticSearch、Solr、Lucene)。[15] |
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作為基礎數據庫管理系統。[16] |
Neo4j | 3.3.5 (2018-04)[17] | GPLv3 社區版,商業 & AGPLv3 企業和高級版 | Java, .NET, JavaScript, Python, Ruby | 開源,支持ACID,具有用於企業部署的高可用性集群,並附帶基於Web的管理工具,包括完整事務支持和可視節點鏈接圖瀏覽器;可以使用其內置的REST Web API接口從大多數編程語言訪問,以及使用官方驅動程序的專有Bolt協議;截至2019年1月[update]最受歡迎的圖數據庫。[18] |
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語義桌面中使用),單實例網絡服務器或無共享彈性集群多實例網絡服務器[19] |
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事務;支持屬性圖[20] |
Sparksee | 5.2.0 (2015) | 專有, 商業, 免費軟件 用於評估、研究和開發 | C++ | 來自Sparsity Technologies的高性能可擴展數據庫管理系統;主要特徵是檢索和探索大型網絡的查詢性能;具有Java,C ++,C#,Python和Objective-C的綁定; 版本5是第一個圖移動數據庫 |
Sqrrl Enterprise | 2.0 (2015-02) | 專有 | [Java]] | 分布式實時圖形數據庫,具有單元級安全性和大規模可擴展性[21] |
Teradata Aster | 7 (2016) | 專有 | Java, SQL, Python, C++, R | 大規模並行數據庫,包含支持原生SQL、MapReduce和Graph數據存儲和操作的專利引擎; 提供一組分析函數庫和數據可視化功能[22] |
參考文獻
- ^ Nikolaos G. Bourbakis. Artificial Intelligence and Automation. World Scientific. 1998: 381 [2018-04-20]. ISBN 9789810226374. (原始內容存檔於2023-11-09).
- ^ Yoon, Byoung-Ha; Kim, Seon-Kyu; Kim, Seon-Young. Use of Graph Database for the Integration of Heterogeneous Biological Data. Genomics & Informatics. March 2017, 15 (1): 19–27. ISSN 1598-866X. PMC 5389944 . PMID 28416946. doi:10.5808/GI.2017.15.1.19.
- ^ Angles, Renzo; Gutierrez, Claudio. Survey of graph database models (PDF). ACM Computing Surveys. 1 Feb 2008, 40 (1): 1–39 [28 May 2016]. CiteSeerX 10.1.1.110.1072 . doi:10.1145/1322432.1322433. (原始內容 (PDF)存檔於2017-08-15).
network models [...] lack a good abstraction level: it is difficult to separate the db-model from the actual implementation
- ^ Silberschatz, Avi. Database System Concepts, Sixth Edition (PDF). McGraw-Hill. 28 January 2010: D-29 [2019-03-08]. ISBN 978-0-07-352332-3. (原始內容 (PDF)存檔於2018-08-26).
- ^ Graph Databases Burst into the Mainstream. www.kdnuggets.com. [2018-10-23]. (原始內容存檔於2018-11-13).
- ^ Amazon Neptune Engine Updates 2018-09-06. AWS. [Sep 22, 2018]. (原始內容存檔於2021-03-08).
- ^ In-Memory Massively Parallel Distributed Graph Database Purpose-built for Analytics. www.Cambridgesemantics.com. [2018-02-20]. (原始內容存檔於2018-02-21).
- ^ Rueter, John. Cambridge Semantics Announces AnzoGraph Graph-Based Analytics Support for Amazon Neptune and Graph Databases. Businesswire. February 15, 2018 [February 20, 2018]. (原始內容存檔於2018-11-16).
- ^ Zane, Barry. Semantic Graph Databases: A worthy successor to relational databases. www.dbta.com. November 2, 2016 [February 20, 2018]. (原始內容存檔於2018-11-09).
- ^ Cambridge Semantics Announces AnzoGraph Support for Amazon Neptune and Graph Databases. Database Trends and Applications. 2018-02-15 [2018-03-08]. (原始內容存檔於2018-03-09).
- ^ Woodie, Alex. Beyond Titan: The Evolution of DataStax's New Graph Database. Datanami. June 21, 2016 [May 9, 2017]. (原始內容存檔於2019-09-13).
- ^ HugeGraph Database user documentation. GitHub. [March 20, 2020]. (原始內容存檔於2019-12-13).
- ^ JanusGraph version 0.6.1. 2022-01-18 [2022-01-18]. (原始內容存檔於2022-01-23) –透過Github.
- ^ JanusGraph storage backends. [2019-03-18]. (原始內容存檔於2018-10-02).
- ^ JanusGraph index storages. [2019-03-18]. (原始內容存檔於2018-10-02).
- ^ What's New in SQL Server 2017. Microsoft Docs. April 19, 2017 [May 9, 2017]. (原始內容存檔於2017-08-21).
- ^ Release Notes: Neo4j 3.1.1. Neo4j. [May 9, 2017]. (原始內容存檔於2018-11-16).
- ^ Ranking of Graph DBMS. DB-Engines. [May 9, 2017]. (原始內容存檔於2019-03-08).
- ^ Clustering Deployment Architecture Diagrams for Virtuoso. Virtuoso Open-Source Wiki. OpenLink Software. [May 9, 2017]. (原始內容存檔於2023-08-08).
- ^ Rudolf, Michael; Paradies, Marcus; Bornhövd, Christof; Lehner, Wolfgang. The Graph Story of the SAP HANA Database (PDF). Lecture Notes in Informatics. [2019-03-18]. (原始內容存檔 (PDF)於2017-04-05).
- ^ Vanian, Jonathan. NSA-linked Sqrrl eyes cyber security and lands $7M in funding. Gigaom. 18 February 2015 [May 9, 2017]. (原始內容存檔於2019-03-09).
- ^ Woodie, Alex. The Art of Analytics, Or What the Green-Haired People Can Teach Us. Datanami. October 23, 2015 [May 9, 2017]. (原始內容存檔於2019-09-15).