圖資料庫

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

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

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

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

從圖資料庫中檢索數據需要SQL之外的查詢語言,SQL是為了處理關係系統中的數據而設計的,因此無法「優雅地」處理遍歷圖。截至2017年 (2017-Missing required parameter 1=month!),沒有一個像SQL那樣通用的圖查詢語言,通常都是僅限與一個產品的。不過,已經有一些標準化的工作,使得GremlinSPARQLCypher成為了多供應商查詢語言。除了具有查詢語言介面外,還可以通過應用程式介面(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服務,是亞馬遜雲端運算服務的一部分。支援流行的圖形模型屬性圖和W3CRDF,以及它們各自的查詢語言 Apache TinkerPop GremlinSPARQL
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圖查詢語言,支援屬性圖,可支援千億級規模關係數據;支援多種後端儲存(CassandraHBaseRocksDBMySQLPostgreSQLScyllaDB);支援各類索引(二級索引、範圍索引、全文索引、聯合索引,均無需依賴第三方索引庫);提供視覺化的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基金會下的分散式圖資料庫;支援各種儲存後端(CassandraHBaseBigtableBerkeleyDB);[14] 通過與大數據平台(SparkGiraphHadoop)的整合支援全域圖數據分析、報告和ETL;通過外部索引儲存支援地理、數字範圍和全文檢索ElasticSearchSolrLucene)。[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月 (2019-01)最受歡迎的圖資料庫。[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]

參考文獻[編輯]

  1. ^ Nikolaos G. Bourbakis. Artificial Intelligence and Automation. World Scientific. 1998: 381 [2018-04-20]. ISBN 9789810226374. (原始內容存檔於2023-11-09). 
  2. ^ 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. 
  3. ^ 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 
  4. ^ 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). 
  5. ^ Graph Databases Burst into the Mainstream. www.kdnuggets.com. [2018-10-23]. (原始內容存檔於2018-11-13). 
  6. ^ Amazon Neptune Engine Updates 2018-09-06. AWS. [Sep 22, 2018]. (原始內容存檔於2021-03-08). 
  7. ^ In-Memory Massively Parallel Distributed Graph Database Purpose-built for Analytics. www.Cambridgesemantics.com. [2018-02-20]. (原始內容存檔於2018-02-21). 
  8. ^ 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). 
  9. ^ Zane, Barry. Semantic Graph Databases: A worthy successor to relational databases. www.dbta.com. November 2, 2016 [February 20, 2018]. (原始內容存檔於2018-11-09). 
  10. ^ Cambridge Semantics Announces AnzoGraph Support for Amazon Neptune and Graph Databases. Database Trends and Applications. 2018-02-15 [2018-03-08]. (原始內容存檔於2018-03-09). 
  11. ^ Woodie, Alex. Beyond Titan: The Evolution of DataStax's New Graph Database. Datanami. June 21, 2016 [May 9, 2017]. (原始內容存檔於2019-09-13). 
  12. ^ HugeGraph Database user documentation. GitHub. [March 20, 2020]. (原始內容存檔於2019-12-13). 
  13. ^ JanusGraph version 0.6.1. 2022-01-18 [2022-01-18]. (原始內容存檔於2022-01-23) –透過Github. 
  14. ^ JanusGraph storage backends. [2019-03-18]. (原始內容存檔於2018-10-02). 
  15. ^ JanusGraph index storages. [2019-03-18]. (原始內容存檔於2018-10-02). 
  16. ^ What's New in SQL Server 2017. Microsoft Docs. April 19, 2017 [May 9, 2017]. (原始內容存檔於2017-08-21). 
  17. ^ Release Notes: Neo4j 3.1.1. Neo4j. [May 9, 2017]. (原始內容存檔於2018-11-16). 
  18. ^ Ranking of Graph DBMS. DB-Engines. [May 9, 2017]. (原始內容存檔於2019-03-08). 
  19. ^ Clustering Deployment Architecture Diagrams for Virtuoso. Virtuoso Open-Source Wiki. OpenLink Software. [May 9, 2017]. (原始內容存檔於2023-08-08). 
  20. ^ 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). 
  21. ^ Vanian, Jonathan. NSA-linked Sqrrl eyes cyber security and lands $7M in funding. Gigaom. 18 February 2015 [May 9, 2017]. (原始內容存檔於2019-03-09). 
  22. ^ 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).