知识图谱数据存储
知识图谱数据存储
目前,主流的的知识存储解决方案包含单一式和混合式存储两种。
其存储方式一般有两种选择,一个是通过RDF(资源描述框架)这样的规范存储格式来进行存储,比较常用的有Jena等。
还有一种方法,就是使用图数据库来进行存储,常用的如Neo4j等。
一般情况,对知识存储没有统一的标准,目前业内存储知识的方式有三种,第一种为三元组形式的RDF存储;第二种为传统关系型数据库存储;第三种为图数据库存储;而目前比较常用的为图数据存储或者关系型数据库+图数据库存储的方式。
RDF
RDF即资源描述框架,本质上是一个数据模型;它提供了一个统一的标准,用于描述资源/实体,形式上是以(实体,关系,实体)三元组的形式进行数据的存储。
RDF存储的优点是:
- RDF用图描述更加直观。
- 图模型符合RDF模型的语义层次,可以最大限度的保持RDF数据的语义信息。
- 图能够直接映射RDF模型,避免了为适应存储结构对RDF数据进行转换。
- 以图结构存储RDF数据避免了重构,以其他形式存储时,查询RDF数据的语义信息需要重构RDF图。
- 可以借鉴成熟的图算法、图数据库来设计RDF数据的存储方案与查询算法。
同样RDF的缺点也很明显:
- 设计上不够灵活,当加入新的属性或数据时,需要重构网络。
- 存储空间大。
- 由于没有相应的图查询引擎,所以查询算法时间复杂度高。
关系型数据库
传统的关系型数据库存储图数据可以很好的解决单条数据查询的问题,因为传统的数据库在存储效率和查询效率上都有很大的优势,且关系型数据库是目前最成熟也应用最广的数据库。
关系型数据库的缺点:
- 在深度关联查询时,效率很低。
- 在关系的实时查询时不能很好的支持。
图数据库
在关联深度查询(二度三度关系)和图计算引擎,数据灵活性,开发敏捷性等方面,图数据库应运而生,研究者们很好的解决了大数据存储、计算、查询问题,目前图数据库产品有很多,类似的Neo4j、OpenLink、Bigdata等,但比较常用且社区活跃的是Neo4j,这里接着重介绍一下Neo4j。
Neo4j是一个原生的图数据库引擎,它有独特的存储结构免索引邻居节点存储方法,且有相应的图遍历算法,所以它的性能并不会随着数据的增大而受到影响,Neo4j具有非常高的查询性能;图数据结构自然伸展特性及其非结构化的数据格式,让Neo4j的数据库设计可以具有很大的伸缩性和灵活性。
与其他图数据库相比而言,Neo4j是一个原生的计算引擎,它存储和使用的数据自始至终都是使用原生的图数据结构进行处理;Neo4j是一个开源的数据库,其开源的社区版吸引了众多第三方的使用和推广。