图数据库

使用图结构进行语义查询,并使用节点、边和属性来表示和存储数据的一种数据库

计算机科学中,图数据库(英語: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).