三元存储和图形数据库有啥区别?
Posted
技术标签:
【中文标题】三元存储和图形数据库有啥区别?【英文标题】:What is the difference between triplestores and graph databases?三元存储和图形数据库有什么区别? 【发布时间】:2013-08-31 05:13:09 【问题描述】:有三元存储(语义数据库),也有通用图数据库。
两者都基于通过关系将一个“项目”链接到另一个的类似概念。 Triplestore 支持 RDF 并由 SPARQL 查询,但此类附加组件也可以(并且正在)在通用图形数据库之上实现。
让您更喜欢语义数据库/三重存储而不是像 neo4j 这样的通用图形数据库的根本区别是什么?
【问题讨论】:
【参考方案1】:三元存储是图数据库。 RDF 是一个图。诚然,三重存储往往不会在内部将信息存储为图表。这对于查询回答来说是次优的,但它们仍然是图形数据库。
如果您对基于 W3C 标准的生态系统感兴趣,您会更喜欢 Neo4j。使与其他基于 RDF 的系统的互操作变得微不足道,并且使拿起所有东西并转移到不同的三重存储非常轻松。
【讨论】:
【参考方案2】:首先,所有数据结构都可以或多或少地被投射到任何底层存储引擎(甚至是您的文件系统和文本文件)中。选择某种数据模型和存储后端的原因是恕我直言:
您的开发和建模偏好 插入、存储和查询模型的预期运行时性能。如前所述,RDBMS 和 TripleStore 在运行时往往在 JOIN 或 SparQL 遍历的“浅”遍历中很有用,并且在缓存或准备好的视图等方面做了大量工作。图数据库(唯一的 Neo4j)实际上将图结构向下到存储层并在节点记录级别上进行指针追踪(进行了一些优化)。因此,在遍历图时,您无需触及存储层以外的当前子图,从而能够在不触及整个图的情况下遍历部分数据,从而在许多有趣的场景中保持稳定的性能.
【讨论】:
【参考方案3】:我的 2 美分。
Neo4j 属于 Property Graph 类别。它们支持有向关系,每个关系只有两个节点;起始节点和结束节点。节点和关系可以以键值对的形式存储任意数据。然而,它们不能支持三元关系。即你不能有一条边连接两个以上的节点,即a kind of hyperdege。但是,您可以通过创建连接节点来模拟属性图中的三元关系。 You can see how to implement this in neo4j here.
Triplestores 具有 SPARQL 形式的标准化查询语言,但尚无用于查询其他图形数据库的标准。 RDF 是从三元存储导入/导出的标准。
【讨论】:
以上是关于三元存储和图形数据库有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章