我想知道使用三元存储(Triple Stores)相比关系数据库有哪些优势?
我想知道使用三元存储(Triple Stores)相比关系数据库有哪些优势?
一家广泛使用RDF三元存储的公司的CTO观点:
模式灵活性 - 可以在RDF存储中进行等效于模式更改的操作,而且不需要任何停机时间或重新设计 - 这并非免费午餐,您需要小心软件的工作方式,但这是一件相当容易的事情。
更现代化 - RDF存储通常通过HTTP查询,非常容易将它们适配到服务架构中,无需使用hacky桥接解决方案或降低性能。此外,它们比典型的SQL数据库更好地处理国际化内容 - 例如,您可以在不同语言中具有多个值。
标准化 - 使用RDF和SPARQL实现的标准化水平比SQL高得多。可以将一个三元存储替换为另一个,尽管您必须小心不要超出标准。在存储之间移动数据很容易,因为它们都说同一种语言。
表达能力 - 在RDF中建模复杂数据比在SQL中容易得多,并且查询语言使得执行类似于LEFT JOIN(在SPARQL中称为OPTIONAL)的操作更加容易。相反,如果您的数据非常表格化,则使用SQL更容易。
溯源性 - SPARQL可以让您跟踪每个信息的来源,并且您可以存储有关它的元数据,使您能够轻松地执行复杂查询,仅考虑来自某些来源、或具有特定信任级别、或在某个日期范围内的数据等。
然而,也存在一些缺点。与典型的RDF数据库相比,SQL数据库通常更加成熟,具有更多功能。例如,事务通常更加粗糙或不存在。此外,在RDF和SQL中每单位信息存储的成本明显不同。很难概括,但如果您有大量数据,则这可能是一个重要因素 - 尽管至少在我们的情况下,鉴于其灵活性和强大性,这是一个总体上的经济利益。
两位评论者都正确,特别是因为语义网不是数据库,它比数据库更具一般性。
但我想你可能指的是三元存储而不是一般的语义网,因为三元存储与关系型数据库的比较更有意义。我注意到我不是关系数据库系统的专家,但我对三元存储有一些了解。
三元(或四元)存储基本上是用于语义网上的数据的数据库,特别是RDF。这就是三元存储和关系数据库之间相似之处的地方。两者都存储数据,都有查询语言,都可以用来构建应用程序;所以我想如果你眯起眼睛,它们非常相似。但是每个人存储的数据类型都有很大不同,因此这两种技术针对不同的用例和数据结构进行了优化,因此它们并不能相互替代。
许多人在关系型数据库的基础上叠加了一个三元视图,这样做可以工作,但也会比一个专门用于存储和检索三元组的系统慢。部分问题是SPARQL,即三元存储使用的标准查询语言,可能需要大量自连接,而关系数据库并未对此进行优化。如果您查看基准测试,比如SP2B,您可以看到甲骨文只是在其关系系统上叠加了SPARQL支持,当与更本地支持RDF的系统相比时,它运行在中间或后面的位置。
当然,如果他们在关系数据上进行SQL查询,那么甲骨文可能会击败RDF系统。但这就是重点,你选择适合你要构建的应用程序的工具。
因此,如果您考虑构建语义网应用程序或只是尝试熟悉该领域,我建议最终选择一个专门的三元存储。
我不会深入探讨推理以及它在三元存储器中的查询回答中的作用,因为那是另一个讨论的话题,但这是关系系统和进行推理的三元存储器之间的又一个重要区别。
你仍然可以使用数据库,但使用RDF作为数据交换格式,这是非常灵活的。