三元存储库与关系型数据库的区别

46

我想知道使用三元存储(Triple Stores)相比关系数据库有哪些优势?


2
它们是非常不同的东西;你能更具体一些吗? - Dave Newton
1
这有点像询问使用螺丝刀与苹果的优势。两者都是有用的东西,但几乎不可互换。 - Mike Sherrill 'Cat Recall'
1
@MikeSherrill'CatRecall',然后解释为什么这样做是一个出色的答案的制作过程?我个人肯定不知道。欢迎我们的三重关系霸主。 - Benjohn
3
我已经提名重新开放。我认为这不是基于观点的。当然,特定技术实现的优势有一定程度的主观观点。然而,特定计算机科学领域的优势并不是简单的观点。在这里可能存在高度显著的客观事实,并且一个答案可以提供它们。 - Benjohn
4个回答

51

一家广泛使用RDF三元存储的公司的CTO观点:

模式灵活性 - 可以在RDF存储中进行等效于模式更改的操作,而且不需要任何停机时间或重新设计 - 这并非免费午餐,您需要小心软件的工作方式,但这是一件相当容易的事情。

更现代化 - RDF存储通常通过HTTP查询,非常容易将它们适配到服务架构中,无需使用hacky桥接解决方案或降低性能。此外,它们比典型的SQL数据库更好地处理国际化内容 - 例如,您可以在不同语言中具有多个值。

标准化 - 使用RDF和SPARQL实现的标准化水平比SQL高得多。可以将一个三元存储替换为另一个,尽管您必须小心不要超出标准。在存储之间移动数据很容易,因为它们都说同一种语言。

表达能力 - 在RDF中建模复杂数据比在SQL中容易得多,并且查询语言使得执行类似于LEFT JOIN(在SPARQL中称为OPTIONAL)的操作更加容易。相反,如果您的数据非常表格化,则使用SQL更容易。

溯源性 - SPARQL可以让您跟踪每个信息的来源,并且您可以存储有关它的元数据,使您能够轻松地执行复杂查询,仅考虑来自某些来源、或具有特定信任级别、或在某个日期范围内的数据等。

然而,也存在一些缺点。与典型的RDF数据库相比,SQL数据库通常更加成熟,具有更多功能。例如,事务通常更加粗糙或不存在。此外,在RDF和SQL中每单位信息存储的成本明显不同。很难概括,但如果您有大量数据,则这可能是一个重要因素 - 尽管至少在我们的情况下,鉴于其灵活性和强大性,这是一个总体上的经济利益。


3
对于Steve关于使用三元存储的优点(和缺点)的所有观点都给予肯定。尽管这不是普遍具备的特点,但我认为将推理能力作为一种优点也是合适的,因此可能算是半个优点 =) - Michael

11

两位评论者都正确,特别是因为语义网不是数据库,它比数据库更具一般性。

但我想你可能指的是三元存储而不是一般的语义网,因为三元存储与关系型数据库的比较更有意义。我注意到我不是关系数据库系统的专家,但我对三元存储有一些了解。

三元(或四元)存储基本上是用于语义网上的数据的数据库,特别是RDF。这就是三元存储和关系数据库之间相似之处的地方。两者都存储数据,都有查询语言,都可以用来构建应用程序;所以我想如果你眯起眼睛,它们非常相似。但是每个人存储的数据类型都有很大不同,因此这两种技术针对不同的用例和数据结构进行了优化,因此它们并不能相互替代。

许多人在关系型数据库的基础上叠加了一个三元视图,这样做可以工作,但也会比一个专门用于存储和检索三元组的系统慢。部分问题是SPARQL,即三元存储使用的标准查询语言,可能需要大量自连接,而关系数据库并未对此进行优化。如果您查看基准测试,比如SP2B,您可以看到甲骨文只是在其关系系统上叠加了SPARQL支持,当与更本地支持RDF的系统相比时,它运行在中间或后面的位置。

当然,如果他们在关系数据上进行SQL查询,那么甲骨文可能会击败RDF系统。但这就是重点,你选择适合你要构建的应用程序的工具。

因此,如果您考虑构建语义网应用程序或只是尝试熟悉该领域,我建议最终选择一个专门的三元存储。

我不会深入探讨推理以及它在三元存储器中的查询回答中的作用,因为那是另一个讨论的话题,但这是关系系统和进行推理的三元存储器之间的又一个重要区别。


9
一些三元组存储(如Virtuoso、Jena SDB)是基于关系数据库的,只提供RDF/SPARQL接口。稍微改一下问题的措辞,纯三元组存储是否比非纯的更高效?@steve-harris绝对知道答案;)但我打赌是。
其次,三元组存储有哪些特性是关系数据库没有的?简单的回答是支持SPARQL、RDF、OWL等(即语义Web技术栈),为了公平起见,最好以SPARQL 1.1为基础来定义SPARQL的价值(它比1.0具有更多的功能)。这提供了联合查询(很酷)、属性路径表达式和推理模式,以及标准的更新协议、图管理协议(SPARQL 1.0没有并且非常缺乏)。@steve-harris还指出,事务并不是标准的一部分(大问题),尽管许多厂商提供了非标准化的事务机制(Virtuoso支持JDBC和Hibernate兼容的连接池和管理以及Hibernate的所有事务特性)。
在我看来,最大的缺点是没有多少三元组存储支持所有的SPARQL 1.1(因为它仍然不是推荐标准),这才是真正的益处所在。
话虽如此,我一直主张用三元组存储替代关系数据库,并且我交付的平台完全运行在三元组存储上(Volkswagen在我上一份工作中就是一个例子),不再需要关系数据库。另一个优点是,对象到RDF映射比传统的ORM(也称将方形钉放入圆形洞)更加灵活,提供更多选择和灵活性。

1
据我所知,SPARQL 1.1现已成为推荐标准。 - Janus Troelsen

0

你仍然可以使用数据库,但使用RDF作为数据交换格式,这是非常灵活的。


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