e-works数字化企业网  »  文章频道  »  基础信息化  »  存储

大规模知识图谱数据存储实战解析

2017/5/20    来源:CSDN    作者:佚名      
关键字:存储  知识图谱  
本文对知识图谱的存储进行了全面的介绍,内容包括:什么是知识图谱,知识图谱的适用场景,知识图谱数据存储的几种常见方式和最佳方案,知识图谱中的时态信息及其存储实现,结合实例说明如何利用图数据库进行数据存储。
    本文对知识图谱的存储进行了全面的介绍,内容包括:什么是知识图谱,知识图谱的适用场景,知识图谱数据存储的几种常见方式和最佳方案,知识图谱中的时态信息及其存储实现,结合实例说明如何利用图数据库进行数据存储。
 
    1. 什么是知识图谱
 
    我们的现实世界中有多种类型的事物:
 
大规模知识图谱数据存储实战解析
 
    事物之间有多种类型的链接:
 
大规模知识图谱数据存储实战解析
 
    而知识图谱即用来描述真实世界中存在的各种实体或概念,以及它们之间的关联关系。
 
    其中:
 
    每个实体或概念用一个全局唯一确定的ID来标识,称为标识符;
 
    每个属性—值对用来刻画实体的内在特性,而关系用来连接两个实体,刻画它们之间的关联。
 
    从抽象层面看,本体最抽象,其次是知识库,最后才是知识图谱,因此本体与知识图谱的区别在于以下三点:
 
    知识图谱并不是本体的替代品,它是在本体的基础上进行了丰富和扩充,这种扩充主要体现在实体(Entity)层面;
 
    本体中突出和强调的是概念以及概念之间的关联关系,而知识图谱则是在本体的基础上,增加了更加丰富的关于实体的信息;
 
    本体描述了知识图谱的数据模式(schema),即为知识图谱构建数据模式相当于为其建立本体。
 
    1.1 知识图谱的应用
 
    知识图谱已经在人工和商业智能方面有了一系列的应用,包括聊天机器人,临床决策支持等。
 
大规模知识图谱数据存储实战解析
 
    同时为了应对大数据应用的不同挑战,借助知识图谱,实现不同的业务需求。
 
    2. 知识图谱的适用场景
 
    我们看到知识图谱有了如此多的应用,不过它最适合处理还是这些数据:
 
    关系复杂的数据;
 
    类型繁多的数据;
 
    结构多变的数据。
 
    作为数据融合与链接的纽带,知识图谱整合结构化、半结构化和非结构化数据,拥有如下的消费和数据场景。
 
大规模知识图谱数据存储实战解析
 
    但知识图谱不是银弹!需要我们依据不同的问题寻找合适的方法,不要为了用知识图谱而用知识图谱。
 
    知识图谱的不适用场景如下:
 
    不适用的数据场景:
 
    通常的二进制数据
 
    日志数据
 
    流式数据
 
    不适用的消费场景:
 
    数据统计
 
    数据计算
 
    这些不适用场景都需要借助其它工具存储和处理,同时结合其它工具和方法使用,最终与知识图谱进行数据链接。
 
    3. 知识图谱的存储
 
    通过上面的内容,我们了解到知识图谱最适合处理关联密集型的数据,因此首先需要存放的是图谱中的节点和边的数据;知识图谱基于图数据库的优点,能够方便的存放这一类关系型的数据,对于大量其他类型的数据我们如何处理呢?
 
大规模知识图谱数据存储实战解析
 
    由此可知知识图谱数据的存储不等于图数据库。
 
    接下来本文重点介绍知识图谱数据存储的几种常见方式。
 
    3.1 知识图谱数据存储的几种常见方式
 
    知识图谱的存储并不依赖特定的底层结构,一般的做法是按数据和应用的需求采用不同的底层存储。你甚至可以基于现有关系数据库或NoSQL数据库进行构建。我们来列举一下几种常见做法:
 
    三元组表(S,P,O)
 
    类似RDF存储结构(下文会进行介绍),以元组为单元进行存储。语义较为明确。
 
    问题:大量自连接操作的开销巨大。
 
大规模知识图谱数据存储实战解析
 
    属性表:属性相似的主语聚为一张表
 
    类似关系型数据结构,每一条数据代表一个实体,每一列代表一个属性。
 
    问题:1.RDF灵活性(高于一阶的关系查询很复杂);2.查询时必须指定属性,无法做不确定属性的查询。
 
大规模知识图谱数据存储实战解析
 
    垂直分割:以谓语划分三元组表
 
    根据属性的不同建立数据表,数据结构较为清晰。
 
    问题:1.大量数据表;2.删除属性代价大。
 
大规模知识图谱数据存储实战解析
 
    以上这些方案都会有各自的优缺点,在实现时需要根据不同的应用场景来进行选择,并设计索引、约束等方法来解决查询效率问题。
 
    目前图结构存储有两种通用的存储方案:RDF存储和图数据库(Graph Database)。下图为两种存储在 http://db-engines.com/ 上的发展趋势:
 
大规模知识图谱数据存储实战解析
 
    可以明显地看到基于图的存储方式在整个数据库存储领域的发展飞速。
 
    3.1.1 RDF存储
 
    RDF存储亦称三元组存储(triplestore),它是专为存储三元组形式的数据而设计的专用数据库,通过六重索引(SPO、SOP、PSO、POS、OSP、OPS)的方式解决了三元组搜索的效率问题。
 
    其优点是:
 
    三元组模式查询(triple pattern)的高效执行;
 
    任意两个三元组模式的高效归并连接(merge-join)。
 
    但缺点也很明显:
 
    六重索引意味着6倍空间开销,如果是 (S, P, O, C) 四元组呢?
 
    更新维护代价大。
 
    现在越来越多的RDF数据库通过列式存储的方式来对三元组进行存储,进一步提高六重索引下的查询效率。
 
    3.1.2 图数据库
 
    图数据库的结构定义相比RDF数据库更为通用,实现了图结构中的节点,边以及属性来进行图数据的存储,典型的开源图数据库就是Neo4j。
 
    这种做法的优点是数据库本身提供完善的图查询语言、支持各种图挖掘算法,但图数据库的分布式存储实现代价高,数据更新速度慢,大节点的处理开销很高。
 
    3.2 大规模知识图谱存储最佳解决方案
 
大规模知识图谱数据存储实战解析
 
    指导思想仍旧是之前提到的“数据思维”和“No Size Fits All”,整体原则归结为以下六点:
 
    1.基础存储
 
    可按数据场景选择使用关系数据库、NoSQL数据库及内存数据库;
 
    基础存储保证可扩展、高可用。
 
    2.数据分割
 
    属性表:依据数据类型划分
 
    基本类型:整数表、浮点数表、日期类型表、…
 
    集合类型:List型表、Range型表、Map型表、…
 
    大属性单独列表:例如数量超过10M的属性单独列表。
 
    3.缓存与索引
 
    使用分布式 Redis 作为缓存,按需对数据进行缓存;
 
    对三元组表按需进行索引,最多情况下可建立九重索。
 
大规模知识图谱数据存储实战解析
 
    4.善于使用现有成熟存储
 
    使用ElasticSearch实现数据的全文检索;
 
    结构固定型的数据可使用关系数据库或NoSQL。
 

责任编辑:李欢
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
e-works
官方微信
掌上
信息化
编辑推荐
新闻推荐
博客推荐
视频推荐