大规模知识图谱的存储方案

大规模知识图谱的存储方案

传统的知识图谱存储方式:

一、关系型数据库

关系型数据库有以下三种存储模式:

  1. 三元组表:

三元组表(S,P,O)类似RDF存储结构(下文会进行介绍),以元组为单元进行存储。问题:大量自连接操作的开销巨大

2. 属性表:属性相似的主语聚为一张表类似关系型数据结构,每一条数据代表一个实体,每一列代表一个属性

问题:1、高于一阶的关系查询很复杂 2、 查询时必须指定属性,无法做不确定属性的查询


3. 垂直分割:以谓语划分三元组表根据属性的不同建立数据表,数据结构较为清晰。

问题:1、大量数据表2、删除属性代价大

综上所述,关系型数据库在存储知识时,需要先确定所有的概念类型和关系,即先要定要定义好本体层次的东西才可以方便建模。如果有些新知识不在事先定义的范畴内,当我们已经填充了不少数据后,对于这些新知识,要么需要修改表的结构,要么舍弃,这个修改(不仅仅是添加)会非常麻烦。而且关系型数据库对于知识推理及多跳查询的实现会显得非常复杂

二、图数据库

图数据库的优点在于其天然的能表示知识图谱结构,图中的节点表示知识图谱的对象,图中的边表示知识图谱的对象关系;这种做法的优点是数据库本身提供完善的图查询语言、支持各种图挖掘算法。在查询速度上要优于关系型数据库,特别是多跳查询的性能较好。但是其缺点是图数据库的更新比较复杂,图数据库的分布式存储实现代价高,数据更新速度慢,大节点的处理开销很高。所以一般使用以图数据库为主,结合其他系统的方式来存储知识图谱。

常见图数据库有neo4j, virtuoso, tita。在选择图数据存储的指标上,需要考虑以下几个方面:

  • 数据存储支持
  • 数据操作和管理方式
  • 支持的图结构
  • 实体和关系表示
  • 查询机制

图数据库排行榜:

三、 RDF存储

RDF(Resource Description Framework),即资源描述框架,是W3C制定的,用于描述实体/资源的标准数据模型。RDF存储亦称三元组存储(triplestore),它是专为存储三元组形式的数据而设计的专用数据库,通过六重索引(SPO、SOP、PSO、POS、OSP、OPS)的方式解决了三元组搜索的效率问题。

RDF最大的优点在于其语义表达能力强,特别是对OWL本体描述的应用最为广泛。使用RDF最主要的好处在于实现互通性与标准化,特别是对于企业来说。同时其缺点也很明显,六重索引意味着6倍空间开销,而且更新维护代价大

目前已经出现了很多RDF存储管理系统,按照存储介质不同可以分为:基于内存、基于文件系统和基于数据库的存储方法,其中以数据库的存储方式为主流。如下图所示,给出了一种将OWL本体存储在关系型数据库中的实例:

RDF存储数据库排行:

大规模知识图谱存储的基本原则:

指导思想:

  • 依据数据特点进行数据存储结构的选择与设计
  • 没有一种通用的存储方案能够解决所有问题

一、 基础存储

1. 根据数据场景选择使用关系数据库、图数据库及内存数据库;

2. 基础存储保证可扩展、高可用

二、 数据分割

1. 属性表:根据关系型数据库的存储模式,可以依据数据类型划分所有的属性,建立不同的表

2. 基本类型:根据数据的基本类型进行划分,例如整数表、浮点数表、日期类型表

三、 缓存与索引

  1. 按需对数据进行缓存,通常使用分布式 Redis 作为缓存
  2. 对三元组表按需进行索引,如果使用RDF格式最多可建立九重索引

四、 善于使用现有成熟存储

1. 使用ElasticSearch实现数据的全文检索;

2. 结构固定型的数据可使用关系数据库或NoSQL

五、 对于非关系型的数据尽量不入图存储,避免形成大节点

1. 非关系型的数据,使用适合的数据存储机器进行存储,通过实体链接的方式实现与图谱数据的关联。

2. 保持图形部分数据的精简

六、 不直接在图存储中进行统计分析计算

1. 对于需要进行统计分析计算的数据,需要导出到合适的存储中进行

2. 在应用中进行扩充迭代


知识图谱存储的基本方案

基于以上文献的调研及探究,最终制定了以下的存储方案

一、 本体存储在关系型数据库中

本体作为概念层级的知识,属于“非关系型数据”,应当与实体分开存储,若不考虑RDF序列化,则可以直接存储在关系型数据库中。

设计理念:

  1. 不同的本体应当属于不同概念层级,本体之间存在父类、子类的关系,当不采用OWL描述本体时,应建立一个层级列表来显示其“上下位”关系

2. 每一种本体包含的属性也不尽相同,当本体属性较少时,可以将所有本体存放在同一个表中,但是属性较多时,应当考虑分解模式,便于级联更新

二、 关系列表存放在关系型数据库中

关系总表:将所有关系建立一个总表,其中包含每个关系的主体和客体类型

参考OWL本体描述的思路,每一个关系有它的定义域和值域。这张表还可以增加一列即关系属性。有了这张表可以和上述的本体表以及实体表进行联结,实现推理和补全

三、 实体信息存储在关系型数据库中

实体表:为每一种实体建立一张表

不同类型的实体具有不同的属性,所以应当放在不同的表中

四、三元组信息存放在图数据库中

  1. 对于复杂查询而言,图数据库的效率要高于关系型数据库
  2. 图数据库基于路径查询,本身可以通过规则来完成知识推理
  3. 在具体应用时可以直接从图数据库中提取一定大小的子图存储在SQL或NoSQL数据库中,并使用Redis进行缓存

数据库的性能与优化

  1. 创建:对于概念层的知识写入库之前应当尽可能的保证其完备性及正确性;三元组信息在写入库之前应当先进行指代消解
  2. 完善:基于属性的实体对齐可以在写入型数据库后完成;基于规则的知识推理可以在图数据库中完成;
  3. 查询:为关系型数据库创建索引,图数据库可以根据标签来进行索引两数据库通过实体进行链接
  4. 更新与维护:离线更新
  5. 数据缓存:将图数据库含有大节点子图进行提取,存储在Redis中

参考文献

【1】《大规模知识图谱的存储》jianshu.com/p/5c5b99ea1

【2】《基于关系数据库的大规模本体的存储研究》wenku.baidu.com/view/ad

【3】《大规模的RDF数据存储技术综述》

【4】《大规模知识图谱数据存储实战解析》stor.51cto.com/art/2018

发布于 2019-09-24 13:52