圖形資料庫
在電腦科學中,圖形資料庫(英語: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).