三元组存储库是否使用或需要索引?

3

一些NoSQL数据库使用索引。三元存储器也是如此吗?如果是,如何创建或管理它们?

我曾经使用过Virtuoso和Blazegraph,我认为这严格依赖于数据库架构。关于索引没有任何标准化吗?


1
据我所知,目前没有任何数据库的索引标准。大多数RDF数据库通常使用基于主语s、谓语p和宾语o的一些索引,实际上这些是任何RDF三元组s p o的主要部分。而且,大多数三元组存储器使用这些索引的多种排列方式,例如spoposops等。 - UninformedUser
谢谢@AKSW。据你所知,RDF数据库没有包括具有特定主题或谓词索引的可能性吗?这是我的疑问。 - Alessio
2
一个SPO索引通常会被排序,这意味着可以查找S??、SP?和SPO,因此它可以产生具有给定主题的所有三元组。 - AndyS
@Alessio 不确定你的意思,但我的意思是通常有标准索引用于RDF三元组的排列。如果SPARQL查询三元组模式只包含主题,则将使用“SPO”索引。如果给出了主题和谓词,则再次使用“SPO”索引。依此类推... - UninformedUser
1个回答

1
用户定义的索引并不符合三元组存储的精神。由于所有信息都在最原子化的级别上进行管理,因此进入信息的每个可能路径都应具有相同的概念成本。
与关系模型相比,关系模型需要明确决定规范化程度和隐含的访问性能权衡,并通过用户定义的索引进行补偿。
这并不意味着三元组存储中没有索引。相反,所有非平凡实现都使用它们,无论是spo/pos/ops形式还是基于Lucene的某些东西。

这里有一些关于Jena中使用的数据结构的良好描述(包括索引策略的简要描述)可供参考。https://jena.apache.org/documentation/tdb/architecture.html - Emmanuel Oga

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