23

有三元存储(语义数据库),也有通用图数据库。

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

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

4

3 回答 3

11

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

如果您对基于 W3C 标准的生态系统感兴趣,您会更喜欢它们而不是 neo4j。使与其他基于 RDF 的系统的互操作变得微不足道,并且它使拿起所有东西并转移到不同的三重存储非常轻松。

于 2013-08-28T19:12:33.590 回答
10

首先,基本上所有数据结构都可以或多或少地被投射到任何底层存储引擎(甚至你的文件系统和文本文件)中。选择某种数据模型和存储后端的原因是恕我直言:

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

如前所述,RDBMS 和 TripleStore 在运行时往往在 JOIN 或 SparQL 遍历的“浅”遍历中很有用,并且在缓存或准备好的视图等中做很多工作。图数据库(唯一的 Neo4j)实际上将图结构归结为存储层并在节点记录级别上进行指针追踪(进行了许多优化)。因此,在遍历图时,您无需触及存储层以外的当前子图,从而能够在不触及整个图的情况下遍历部分数据,从而在许多有趣的场景中保持稳定的性能.

于 2013-09-02T21:31:44.677 回答
6

我的 2 美分。

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

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

于 2013-08-28T13:17:54.643 回答