当前位置: 首页 > 科技观察

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

时间:2023-03-14 00:12:28 科技观察

1.什么是知识图谱?我们的现实世界中有多种类型的事物:事物之间存在多种类型的联系:知识图谱用于描述现实世界。各种实体或概念,以及它们之间的关系。其中:每个实体或概念由一个全球唯一的ID标识,称为标识符;每个属性值对用于描述实体的内在特征,而关系用于连接两个实体并描述它们之间关联的关系。从抽象的角度来看,本体是最抽象的,其次是知识库,最后是知识图谱。因此,本体与知识图谱的区别在于以下三点:知识图谱不是本体的替代品,它是在本体的基础上进行了丰富和扩展,而这种扩展主要体现在实体(Entity)层面;本体突出和强调概念以及概念之间的关系,而知识图则基于本体,增加了更丰富的实体信息;本体描述了知识图谱的数据模式(schema),即为知识图谱构建数据模式等同于为其构建本体。1.1知识图谱的应用知识图谱在人工智能和商业智能中得到了一系列的应用,包括聊天机器人、临床决策支持等。同时,为了应对大数据应用的不同挑战,不同的业务需求可以借助知识图谱实现。2.知识图谱的适用场景我们看到了知识图谱的很多应用,但它最适合处理这些数据:具有复杂关系的数据;各种类型的数据;具有可变结构的数据。知识图谱作为数据融合和链接的纽带,融合了结构化、半结构化和非结构化数据,有以下消费和数据场景,但知识图谱不是灵丹妙药!我们需要根据不同的问题找到合适的方法,不要为了使用知识图谱而使用知识图谱。知识图谱不适用的场景如下:不适用的数据场景:常见的二进制数据日志数据流数据不适用的消费场景:数据统计计算这些不适用的场景需要用其他工具进行存储和处理,并结合其他工具和方法被使用,最后将数据与知识图谱链接起来。3.知识图谱的存储通过以上内容我们知道知识图谱最适合处理关联密集型数据,所以首先要存储的是图中节点和边的数据;知识图谱是基于图数据库的优势,可以方便地存储这类关系数据,我们如何处理大量其他类型的数据?可见知识图谱数据的存储不等于图数据库。接下来,本文重点介绍几种常见的知识图谱数据存储方式。3.1知识图谱数据存储的几种常见方式知识图谱的存储不依赖于特定的底层结构。一般的做法是根据数据和应用需求使用不同的底层存储。您甚至可以在现有的关系数据库或NoSQL数据库上构建。下面列举一些常见的做法:三元组表(S,P,O)类似于RDF存储结构(如下所述),以元组为单位进行存储。语义更清晰。问题:大量的自连接操作开销巨大。属性表:将具有相似属性的主体聚合成一个类似于关系数据结构的表,每条数据代表一个实体,每一列代表一个属性。问题:1.RDF灵活性(高于一阶的关系查询非常复杂);2、查询时必须指定属性,不能查询不确定的属性。纵向切分:用谓词划分三元组表,根据不同的属性建立数据表,数据结构比较清晰。问题:1、数据表数量多;2、删除属性成本高。上述所有解决方案各有优缺点。在实现时,需要根据不同的应用场景进行选择,设计索引、约束等方法来解决查询效率的问题。目前图结构存储一般有两种存储方案:RDF存储和图数据库。下图展示了http://db-engines.com/上存储的两种发展趋势:可以明显看出,基于图的存储方式在整个数据库存储领域发展迅速。3.1.1RDF存储RDF存储又称为三元组存储(triplestore),是一种专门为以三元组形式存储数据而设计的数据库。)解决了三重搜索的效率问题。其优点是:高效执行三重模式查询(triplepattern);任何两个三重模式的有效合并连接。但是缺点也很明显:六重索引意味着6倍的空间开销,如果是(S,P,O,C)四元组呢?更新和维护是昂贵的。现在越来越多的RDF数据库使用列式存储来存储三元组,进一步提高了六重索引下的查询效率。3.1.2图数据库图数据库的结构定义比RDF数据库更通用。它实现了图结构中的节点、边和属性来存储图数据。典型的开源图数据库是Neo4j。这种方式的好处是数据库本身提供了完整的图查询语言,支持各种图挖掘算法。但图数据库的分布式存储实现成本高,数据更新速度慢,大节点处理开销高。3.2大规模知识图谱存储最佳解决方案的指导思想仍然是前面提到的“数据思维”和“NoSizeFitsAll”。总体原则归结为以下六点:(1)基础存储可以根据数据场景选择使用关系型数据库、NoSQL数据库和内存数据库;基本存储保证可扩展性和高可用性。(2)数据切分属性表:按数据类型划分基本类型:整型表、浮点数表、日期型表、……集合型:List型表、Range型表、Map型表、。..大属性的单独列表:例如数量超过1000万个属性的单独列表。(3)缓存和索引使用分布式Redis作为缓存,按需缓存数据;按需索引三重表,大多数情况下可以建立九重索引。(4)善于利用已有的成熟存储,使用ElasticSearch实现数据的全文检索;固定结构的数据可以使用关系数据库或NoSQL。(5)对于非关系数据,尽量不要存储在图中,避免形成大节点的非关系数据,使用合适的数据存储机器进行存储,通过实体链接实现与图数据的关联。(6)不要直接在图存储中进行统计分析计算对于需要统计分析计算的数据,需要导出到合适的存储中。4.知识图谱时态信息与存储众所周知,信息是时态的,时态特征是信息的客观存在。同时,知识和数据也在不断更新,这些变化的时间点也代表着有意义的信息。时态信息的需求和技术是随着数据库技术的发展而产生和发展的。下图展示了时态数据库与其他类型数据库的发展趋势对比:可以发现,时态数据库的发展趋势远高于其他数据存储方式。知识图谱中的时间信息包括以下四个方面:事实的产生时间;事实的有效时间段;对象在特定历史时刻的状态;过去特定时间的知识图谱版本。以下视频展示了北京小桔科技有限公司(滴滴打车)使用PlantData知识图谱数据智能平台的企业创投知识图谱时间信息。结合最近热播的一部电视剧《人民的名义》,我们来了解下知识图谱中的时间信息。知识图谱中时态信息存储的实现设计原则如下:5.使用图数据库进行数据存储在选择图数据存储的指标时,需要考虑以下几个方面:数据存储支持;数据运营管理办法;支持的图形结构;实体和关系表示;查询机制。这里选择图数据库来存储知识图谱数据:应用场景:风险投资知识图谱;数据维度:创投知识图谱描述了以投资为主线的创业公司与投资机构之间的各种关系,包括:企业产品、创始人、股东、高管、行业、细分行业、新闻、投融资事件、关注度、活跃度、招聘等;应用目标:基于创投知识图谱和平台分析功能,投资机构完成创业、行业研究和跟踪,辅助投资决策;创业公司还可以分析热点投资轨迹,关注行业动向和竞争对手动向。与初创企业相关的数据包括:企业注册信息企业产品Founder/Shareholder/ExecutiveIndustry/Field投融资事件专利/招聘/诉讼/不诚实新闻/社交网络数据产品活跃数据关系数据(通过关系形成的网络):企业与创始人企业与投资人(机构)企业与产品企业与高管高管与高校关系数据存储方式:作为实体存储在知识图谱中,通过它们之间的关系形成图网络。结构数据(与主体关联,但不会扩展):企业和专利/招聘/诉讼/失信企业和新闻企业和投融资事件企业产品主动数据存储方式:作为记录数据存储到适当的存储和通过链接与图中的实体关联。属性数据:公司工商注册基本信息,公司行业创始人基本信息,产品基本信息,投资机构基本信息,高校基本信息,属性数据存储方式:存储在知识图谱作为实体的数字属性。时态数据:企业成立时间、高管任职时间、投资关系发生时间、产品发布时间,时态数据存储方式:使用基于知识图谱的时间存储中间件存储和查询处理。图式定义:企业、初创企业、投资机构、人物、高管、股东、产品图式定义:关系和属性定义、关系定义、企业与创始人关系、企业与投资人(机构)投资关系,公司与产品的所有权关系公司与高管的雇佣关系高管与大学的教育背景关系公司属性的定义人的属性产品的属性使用图数据库的产品属性一般过程:导入实体,概念(标签)导入实体属性,导入实体间关系***实践过程:批量导入,导入时使用Index提高查询效率。根据不同的数据类型和属性准备导入的文件。维护导入数据的主键。使用Constraints尽可能保证导入数据的格式正确。总结复杂应用场景下的知识图谱数据存储原理:关系型数据:使用图数据存储;关联数据:作为记录数据存储在适当的存储中,通过实体链接与地图中的实体关联;属性数据:将知识存储为实体图的数值属性;时态数据:使用基础存储上的时态处理中间件进行存储和查询。