三元组存储和图形数据库有什么区别?

25

有三元组存储(语义数据库)和通用图形数据库。

两者都基于通过关系将一个“项”链接到另一个“项”的类似概念。三元组存储支持RDF,并由SPARQL查询,但此类附加组件也可以(并且已经)实现在通用图形数据库上。

什么是使您更喜欢语义数据库/三元组存储而不是像neo4j这样的通用图形数据库的根本区别?

3个回答

12

三元组存储是图形数据库。RDF 是一个图形。虽然三元组存储倾向于不将信息内部存储为图形,因为这对查询回答来说是次优的,但它们仍然是图形数据库。

如果您有兴趣建立基于 W3C 标准的生态系统,那么您会更喜欢它们而不是 neo4j。这使得与其他基于 RDF 的系统的互操作变得轻而易举,并且使得选择一切并移动到不同的三元组存储变得非常轻松。


10

首先,基本上所有的数据结构都可以被投射到任何底层存储引擎中(甚至是你的文件系统和文本文件)。选择特定的数据模型和存储后端的原因在我看来有:

  • 您的开发和建模偏好
  • 您期望的模型插入、存储和查询的运行时性能。

如前所述,关系型数据库和三元组存储在JOIN或SparQL遍历的“浅层”遍历时通常在运行时很有用,并且在缓存或准备视图等方面做了许多工作。图形数据库(唯一的Neo4j)将图形结构实际放置在存储层下,并在节点记录级别上进行指针跟踪(带有一些优化)。因此,在遍历图形时,您无需触及整个图形,仅需要接触当前子图形下的存储层,从而能够遍历部分数据而不接触整个图形,这样会产生一些有趣场景的恒定性能。


6

我的两分钱。

Neo4j属于属性图类别,支持有向关系,每个关系只有两个节点:起始节点和结束节点。节点和关系可以以键值对的形式存储任意数据。然而,它们不支持三元关系,即您不能有一个边连接多于两个节点,即一种超边。但是,您可以通过创建连接节点在属性图中模拟三元关系。您可以在此处查看如何在neo4j中实现此操作

三元存储具有标准化的查询语言,以SPARQL的形式存在,但尚不存在用于查询其他图数据库的标准。RDF是从三元存储导入/导出的标准。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接