APP下载

PandaDB:一种异构数据智能融合管理系统∗

2021-05-23沈志宏赵子豪王华进刘忠新周园春

软件学报 2021年3期
关键词:属性数据结构化语义

沈志宏 ,赵子豪,2,王华进,刘忠新,胡 川,2,周园春,2

1(中国科学院 计算机网络信息中心,北京 100190)

2(中国科学院大学,北京 100049)

在大数据时代,随着各类应用的推广和使用,数据产生速度越来越快、数据体量越来越大.一方面,数据采集技术的迅猛发展,使得数据的结构更多样、种类更丰富.数据表现出多元异构的特点,非结构化数据在其中占有较大比重.有研究表明,视频、音频、图片等非结构化数据占据高达90%的比例[1].另一方面,近年来,数据中台、知识图谱等数据管理分析技术得到了广泛的应用.数据中台要求结构化/非结构化数据能够在统一的环境中得到良好的治理,以便支持多种应用;知识图谱,特别是多模态知识图谱[2],要求对底层结构化/非结构化数据进行融合关联分析,并支持用户进行交互式查询.这些技术均提出了对结构化/非结构化数据进行融合管理和分析的需求.

结构化数据通常具有较为规范、统一的形式.目前,针对结构化数据的管理和分析,已具有成熟的数据模型、查询语言和管理系统.与结构化数据相比,非结构化数据的管理方式存在着诸多差异,这给高效的结构化/非结构化数据的融合管理和分析带来了多方面的挑战.

(1)分离的存储管理方式,给结构化/非结构化数据的统一管理带来挑战.相对于结构化数据,非结构化数据占有更大的空间,出于读写效率考虑,非结构化数据往往单独存在于文件系统,或者对象存储系统,这使得维护结构化/非结构化数据一致性的难度增大;

(2)差异化的信息获取方式,给结构化/非结构化数据的统一分析带来挑战.相对于结构化数据,非结构化数据内容比较复杂,为了实现高效检索和分析,往往需要预先引入模式识别、深度学习等方法实现信息抽取和数据挖掘,从而获取非结构化数据所蕴含的内在信息;

(3)不一致的检索方式,给结构化/非结构化数据的一致化即席查询带来挑战.与结构化数据具有较为成熟的SQL、类SQL 查询语言的现状不同,非结构化数据的信息检索往往缺乏统一的操作模式和查询语法,目前采用的多是逐案的个性化方案.

为实现结构化/非结构化数据的融合管理和分析,需要从模型层面出发,设计统一的表示和查询方法.传统的关系模型、属性图模型不能有效揭示和表示非结构化数据的内在信息.有学者提出将数据和Schema 表示为边标记图,以此替代非结构化数据底层类型约束的缺失[3].但该方法仅提出一种为非结构化数据添加Schema 的方法,不能实现对非结构化数据中信息的自由检索.Li 等人提出从基本属性、语义特征、底层特征和原始数据等4 个角度定义非结构化数据[4],但这种方法依赖于预定义,并不适用于非结构化数据的交互查询.近年来,有学者提出在非结构化数据流上抽取RDF 三元组的方法[5],该方法只实现了三元组的抽取,不能支持对非结构化数据内在信息的交互式查询,且并不具备数据管理系统的基本能力.

另外一种融合管理的路线是将非结构化数据在数据库中存储为二进制大对象(binary large object,简称BLOB),当应用获取数据的时候,返回一个二进制数组或者数据流.这种方法在性能和功能上都不令人满意[6].针对此问题,研究人员提出了一系列非结构化数据管理系统[7−9],这些系统综合考虑了非结构化数据体积大、结构复杂的特点,设计了合适的存储模型,一定程度上解决了非结构化数据的存储和管理问题,但其提供的查询服务仅基于文件对象本身和元数据,不能提供对非结构化数据内在信息的查询能力.

由此,本文提出了属性图扩展模型及其查询方法.属性图扩展模型在传统属性图的基础增加了对非结构化数据内在信息的表示能力,以及结构化和非结构化数据之间的互操作能力.在此基础上,本文继而提出基于智能属性图模型的异构数据智能融合管理系统PandaDB.

本文第1 节给出属性图扩展模型和相关概念,包括层叠属性图、智能属性图、次级属性等,并提出属性操作符和查询语法.第2 节给出PandaDB 的系统设计与具体实现.第3 节通过实验和案例验证该系统的效率及可行性.第4 节介绍与本文研究相关的工作.最后,对未来研究可能面临的挑战进行展望.

1 概念设计

传统属性图模型无法有效表示非结构化属性,本节提出属性图扩展模型,以解决非结构化属性的有效表示问题;然后介绍针对属性图扩展模型的语义操作和查询语法设计,以支持因引入非结构化属性及其内在信息所带来的新的查询特性.

1.1 属性图扩展模型

传统的属性图模型可以形式化表示为G=(V,E,P),其中,G表示全体数据,V表示数据中的实体集合,E表示实体间的关系集合,P表示数据集中实体的属性集合.

针对图片、语音、文本这样的非结构化属性,属性图模型无法有效揭示其蕴含的内在信息(如:某类顶点的photo 属性蕴含有“车牌号”信息),内在信息通常是离线且具有结构延迟的.

• 离线:将非结构化属性转化为结构化、半结构化属性的信息抽取过程,属于对数据的预处理;

• 结构延迟:非结构化属性的内在信息不具备明确定义的结构,而是根据应用的后期需要,从而选择特定的信息抽取方法,这种结构是不明确的、延迟定义的.

为增强对结构化属性、非结构化属性的统一表示能力,本文针对属性图模型进行了扩展,提出了层叠属性图模型和智能属性图模型.

定义1.具备以下特征的属性图被称为层叠属性图(cascading property graph).

1)层叠属性图Gc可以表示为GC=(V,E,PP,PN),其中,PP是基本属性(primitive property)集合,PN是内嵌式属性(nested property)集合;

2)基本属性的值为文本、数值、二进制数组等基本数据类型;

3)内嵌式属性的值为另外一个属性图.

定义2.具备以下特征的属性图被称为智能属性图(intelligent property graph).

1)智能属性图GI可以表示为GI=(V,E,PP,O),其中,O为语义操作集合;

2)存在PI⊆PP,PI为智能属性集合;

3)O=(Sϕ,Sξ),其中,Sϕ为智能属性展开操作集合,Sξ为智能属性语义计算操作集合;

4)对于智能属性pi∈PI,存在展开操作ϕ∈Sϕ,可满足pn=ϕ(pi),且pn∈PN,即,将智能属性pi展开为内嵌式属性pn;

5)对于智能属性p1∈PI和p2∈PI,存在语义计算操作ξ∈Sξ,可满足σ=ξ(p1,p2).对p1和p2两个智能属性进行语义计算,得到结果σ.

定义3.内嵌式属性具有次级属性(sub-property).

1)对于智能属性图GI=(V,E,PP,O),若存在Vi∈V且Vi具有内嵌式属性,则根据定义1,有,其中,为传统属性图

作为示例,图1 给出了一个智能属性图,图中存在一个Car 类型的顶点car1,其具有一个智能属性photo,执行展开操作后,photo 具有两个次级属性:photo→plateNumber 和photo→model.

1.2 属性操作符

基于定义2,本文定义了针对智能属性的次级属性抽取操作符和语义计算操作符.

• 次级属性抽取操作符:次级属性抽取操作符“→”用以抽取智能属性的次级属性,如针对photo 属性执行“photo→plateNumber”,即可获取到photo 中的车牌号;

• 语义计算操作符:传统属性图查询语言中的谓词(predicate),只支持对属性进行比较,如=、>、<、正则匹配等.本文针对智能属性新增~:,::,:>等拓展谓词,以表示非结构化属性之间的相似关系、相似度、包含关系等逻辑(见表1).

Fig.1 Intelligent property graph model图1 智能属性图模型

Table 1 Semantic computation operators表1 语义计算操作符

在属性图模型中,由于内在信息的不可见性,非结构化属性之间的计算操作支持有限.结合定义1~定义3 中关于非结构化属性的表述和属性操作符的特性,智能属性图模型可以实现非结构化属性内在信息的在线获取,且结构是预定义的.

• 在线:从非结构化属性中获取结构化、半结构化信息(即次级属性)的过程是按需的,无需对非结构化属性进行专门的预处理;

• 结构预定义:非结构化数据内在信息依赖于schema 层面的定义,而非依赖于信息抽取工具的实现.在底层查询机制的支持下,可以实现针对非结构化属性的直接运算.

1.3 查询语法

本文针对智能属性图模型,针对标准化Cypher 查询语言[10]进行扩展,形成CypherPlus 语言.CypherPlus 定义了BLOB 属性类型,用以表示非结构化属性的值.CypherPlus 同时引入了BLOB 字面值、次级属性抽取操作符、语义计算操作符等新特性,从而支持对非结构化属性的表示和语义操作.

(1)BlobLiteral

用于表示非结构化属性的字面值,格式如〈schema://path〉,其中,schema 可以为 FILE,HTTP(S),FTP(S),BASE64 等多种类型.如图2 所示.

Fig.2 Grammer definition of BlobLiteral图2 BlobLiteral 语法定义

(2)SubPropertyExtractor

用于表示次级属性的抽取操作,如图3 所示,其中,PropertyKeyName 为次级属性的名称;

Fig.3 Grammer definition of SubPropertyExtractor图3 SubPropertyExtractor 语法定义

语义计算操作符,包括SemanticCompare,SemanticLike,SemanticUnlike,SemanticIn,SemanticContain 等操作符.以SemanticLike 为例,它用以指示两个属性的值是否相似,语法定义如图4 所示,其中,AlgorithmName 为指定计算的算法名称,Threshold 为阈值,AlgorithmName 和Threshold 为可选项,该情况下执行引擎则采用默认的比较器和阈值.

Fig.4 Grammer definition of SemanticLike图4 SemanticLike 语法定义

例如,针对图1 的数据模型,可以查找与车牌号为HHMF442 的车相似的车,查询语句如下:

• Q1:match (c1:CAR),(c2:CAR)where c1.photo~:c2.photo and c1→plateNumber=‘HHMF442’ return c2;

• Q2:return ‘Zhihong SHEN’ ::jaro ‘SHEN Zhihong’.

查询语句Q2 用以计算两个文本的相似度.

2 系统实现

为实现结构化、非结构化数据的融合管理和关联查询分析,本文采用智能属性图模型,基于Neo4j 开源版本,设计并实现了异构数据智能融合管理系统PandaDB.本部分第2.1 节介绍PandaDB 的总体架构,第2.2 节~第2.5节分别介绍各模块的设计思路和实现细节.

2.1 总体架构

PandaDB 基于智能属性图模型组织数据,底层数据被分为图结构数据、结构化属性数据和非结构化属性数据这3 部分.其中,图结构数据指图的节点和边等描述图结构的数据;结构化属性数据指数值、字符串、日期等类型的数据;非结构化属性数据泛指除结构化数据之外的数据,如视频、音频、图片、文档等.PandaDB 以BLOB对象的形式存储非结构化数据,并将其表示为实体(节点)的属性.根据上述3 类数据的应用特点,PandaDB 设计了分布式多元存储方案.

• 分布式图数据存储:基于传统的图数据库保存图结构数据和属性数据,在每个节点上保存相同的数据副本;

试验所用材料为潍县萝卜种子,由山东省潍坊市农业科学院提供。试验于 2016年在潍坊学院生物与农业工程学院种子科学与工程实验室进行。

• 结构化属性协存:基于ElasticSearch,Solr 等外部存储实现大规模结构化属性数据的存储和索引构建;

• BLOB 存储:基于Hbase,Ceph 等存储系统实现非结构化属性数据的分布式存储.

PandaDB 总体架构如图5 所示,重要模块描述如下.

• 存储引擎:维护本地的图结构数据,调度外部属性存储,按需为查询引擎提供服务;

• 外部存储:包括基于ElasticSearch 的结构化属性协存和基于HBase 的BLOB 存储两部分;

• 查询引擎:解析并执行CypherPlus 查询;

• AIPM:AI 模型服务框架,通过模型和资源管理,实现AI 模型的灵活部署、高效按需运行;同时,有效屏蔽AI 模型之间的依赖.

PandaDB 集群采用了无主架构设计,图5 中,PandaNode 是其中的节点,包含查询引擎和存储引擎两部分.属性数据和非结构化数据存储在外置分布式存储工具中,PandaNode 只保存图结构数据,通过属性存储接口与外置存储交互.

Fig.5 Architecture of PandaDB图5 PandaDB 总体架构设计

2.2 存储机制

PandaDB 将BLOB 引入了Neo4j 的类型系统,同时对Neo4j 的存储结构进行了改造.存储结构如图6 所示,除了Neo4j 保留区,BLOB 的属性字段同时记录了BLOB 的元数据,包括唯一标识blobid、长度length 和MIME类型.

Fig.6 Design of BLOB storage structure图6 BLOB 存储结构设计

为实现对外部BLOB 存储系统的调用,PandaDB 中设计了BlobValueManager 接口,定义了getById(⋅)/store(⋅)/discard(⋅)等操作方法.作为BlobValueManager 的一个实现,HBaseBlobValueManager 基于HBase 集群实现BLOB 数据的存取.在该方案中,为支持大规模BLOB 的存储,HBase 被设计成包含N列的宽表,采用blobid/N作为HBase 表的rowkey,blobid%N对应于HBase 的某一列.

为加速BLOB 的读取,BLOB 的内容读取被封装为一个InputStream,在用户通过Bolt 协议获取BLOB 内容或进行语义计算的时候,这种流式读取的机制提高了运行的性能.

多元存储带来了存储事务保证的复杂性,客户端在写入数据时,将写操作请求发送到PandaDB 的Leader 节点,然后由Leader 节点执行具体的写入操作.Leader 节点的具体操作流程如下.

(1)Leader 节点开启事务,执行Cypher 解析,翻译成具体的执行操作;

(2)向BLOB 存储引擎发送请求,执行BLOB 数据的写入操作.若执行失败,则向上回滚,标记事务失败;

(3)若BLOB 数据写入成功,则执行图结构数据和结构化属性数据的写入操作;若执行失败,则向上回滚,标记事务失败;

(4)将结构化属性数据的修改,同步到协存.若执行失败,则向上回滚,标记事务失败;

(5)执行事务提交;

(6)关闭事务,返回操作成功.

2.3 查询机制

PandaDB 查询引擎主要实现查询语句的解析、逻辑计划的生成与优化、物理计划的优化与执行.基于Neo4j,PandaDB 查询引擎主要改进如下几个部分.

(1)解析阶段:增强Cypher 语言的解析规则,支持BLOB 字面常量(BlobLiteral)、BLOB 次级属性的抽取操作符(SubPropertyExtractor)以及属性语义操作符(SemanticComparison);

(2)语法检查阶段:针对BlobLiteral,SubPropertyExtractor,SemanticComparison 执行形式检查,如发现非法的BLOB 路径、非法的语义算子和阈值等;

(3)计划优化阶段:针对BlobLiteral 的操作进行优化,针对大规模属性过滤情形,采用谓词下推策略等;

(4)计划执行阶段:充分调度属性协存模块、AIPM 模块以及BLOB 存储模块,实现高效的属性优先过滤、BLOB 获取与语义计算.图7 示出了一个典型的查询过程,该查询要求返回所有与photo0 中人脸相似,且age值大于30 的节点.

Fig.7 CypherPlus query process图7 CypherPlus 查询流程

图8 从查询语法、查询计划、执行引擎这3 个层面示出了PandaDB 查询机制的设计.解析引擎将查询语句中的符号转化为语义算子,执行引擎根据规则集选择AI 模型处理对应的数据,并将结果返回.

Fig.8 Query mechanism of intelligent property graph图8 智能属性图查询机制

为加速非结构化数据的查询,PandaDB 实现了语义索引功能.非结构化数据中的信息被认为是一种语义信息,如图片中的人脸、图片中汽车的车牌号、录音中所包含的文字信息等.AI 模型从非结构化数据中抽取信息的过程可以看作是数据从高维空间到低维空间的映射,在低维空间映射的结果可以作为数据在该场景下的语义索引.

如在人脸比对查询的过程中,需要比较不同图片中人脸的相似度,通常的做法是利用人脸识别模型抽取人脸特征,比较两个特征的相似度.在PandaDB 中,以向量形式表示的人脸特征被视为该非结构化在当前查询场景下的语义索引.系统处理涉及人脸比对的查询时,优先检查是否有对应的语义索引,若该查询对应的语义索引存在,则不向AIPM 发起处理请求,直接比较语义索引得到结果.

语义索引可以减少查询引擎对AI 服务的请求次数,从而避免了重复的数据传输,有利于提高系统效率.

2.4 属性数据协存

PandaDB 引入属性数据协存机制,用于实现结构化属性数据的全文索引,提高节点属性的过滤查询效率.目前,PandaDB 支持ElasticSearch 作为协存引擎.

图9 示出PandaDB 协存模块的写入流程,协存机制的关键设计如下.

(1)属性数据在ElasticSearch 中的存储结构:每个Neo4j 图数据库对应协存引擎(ElasticSearch)中一个独立的索引,每个节点的属性数据和标签数据均组织成ElasticSearch 中的一个文档,其中,节点在Neo4j数据库中的ID 作为文档的ID,节点属性名作为文档的属性标签,节点属性值作为文档的属性数据,节点的标签数据表示为特殊设置的属性标签.数值、字符串、坐标、日期、时间等结构化属性数据类型分别转换为ElasticSearch 中的对应数据类型;

(2)属性写入及更新:为了维持Neo4j 数据库中的本地数据和ElasticSearch 中数据的一致性,PandaDB 对Neo4j 中事务操作执行模块(operations)中的节点更新部分进行了扩展,设计了ExternalPropertyStore用于存储在Neo4j 事务中执行的所有操作.当Neo4j 数据库执行插入节点、添加标签、设置属性、删除节点等操作的同时,也将对应的操作数据缓存到ExternalPropertyStore 中,当Neo4j 数据库执行事务提交操作的同时,将缓存的操作数据同步到ElasticSearch 中;

(3)属性过滤:为了基于协存实现节点属性过滤,PandaDB 对Neo4j 的Cypher 查询执行计划进行了改造,将节点属性过滤谓词下推到协存管理模块.根据谓词过滤条件生成ElasticSearch 的检索请求,最后将命中的文档(节点)列表返回给查询引擎做进一步筛选.为了避免大量查询结果增大网络传输延迟,PandaDB 采用了异步分批的方式传递的查询结果.

Fig.9 Write progress of property co-store module in PandaDB图9 PandaDB 协存模块的写入流程

2.5 AI算法集成与调度

AI 算法集成与调度主要包括本地算法驱动管理和AI 算法服务框架.

(1)本地算法驱动管理

为了对不同的抽取器(SubPropertyExtractor)和语义比较器(SemanticCompartor)进行统一管理,PandaDB 制定了驱动管理规则库.图10 是对规则库中部分内容的展示,其中,DogOrCatClassifier 用以抽取宠物类型,适用于blob/image 类型的属性;CosineStringSimilarity 用以计算两个文本串的余弦相似度,仅适用于两个string 类型的属性.

Fig.10 Extractor and semantic comparator matching rule set图10 抽取器和语义比较器匹配规则库

(2)AI 算法服务框架

PandaDB 中的信息抽取能力通过AI 服务方式实现,AIPM 为PandaDB 提供AI 服务,它可以屏蔽不同AI模型之间的依赖冲突问题,降低人工智能模型的部署和维护难度,便于PandaDB 按需扩展AI 算子.图11 给出了AIPM 与系统之间的交互逻辑.系统以HTTP 请求的方式向AIPM 发出查询请求,请求的路径与AI 算法具有对应关系,AIPM 接受到查询请求,调用对应的AI 算法处理数据,以JSON 字符串的形式返回结果.为了增强AI 算子的可扩展性,AIPM 设计了统一的集成接口,并要求算子提供对这些接口的支持.图12 是AI 模型管理框架的示意图.

Fig.11 Interaction of PandaDB and AIPM图11 AIPM 与PandaDB 交互框架

Fig.12 AI model management framework图12 AI 模型管理框架

3 系统效果评估

为验证模型设计及PandaDB 实现的有效性,本文针对属性协存、分布式方案、非结构化数据信息查询进行了测试;同时,通过应用案例验证PandaDB 对结构化和非结构化数据的融合管理能力.

3.1 属性协存性能测试

本测试验证基于ElasticSearch 属性协存方案的性能,对Neo4j 和引入协存方案后的PandaDB 的查询性能进行对比,测试环境见表2.

Table 2 Information about test environment表2 测试环境信息

实验中使用的Cypher 查询语句见表3.实验中对每条查询语句分别进行多次测试并取执行时间的平均值(如表4、图13 所示).为避免冷启动带来的性能影响,测试前对系统进行了预热.

从测试结果可看出:由于采用了ElasticSearch 作为节点属性的协存和索引,在上述查询语句执行测试中,PandaDB 占据明显优势;尤其在节点多属性过滤查询和模糊匹配查询中,性能平均提升2 倍~6 倍.

3.2 分布式性能测试

为验证分布式架构带来的查询响应能力的提升,本文在物理机集群上(物理机配置见表2)部署了PandaDB和Neo4j 单机版,对并发查询请求的吞吐率进行评估.因Neo4j 社区版仅支持单机,故其中PandaDB 部署在3 台物理机,Neo4j 部署在一台物理机.

本文选择了图计算分析中的常见查询作为测试用例,如计算节点出度和入度.将超时阈值设定为300s,在满足90%查询不超时的前提下,Neo4j 的吞吐量为每秒15 次查询,PandaDB 的吞吐量为每秒40 次查询.PandaDB的吞吐量接近Neo4j 的3 倍.

Table 3 Query statement in propery co-store test表3 协存方案验证测试的查询语句

Table 4 Test result for property co-store表4 协存方案验证测试结果

Fig.13 Comparison of query time in co-store图13 协存方案查询响应时间对比

3.3 非结构化数据查询加速测试

为实现对非结构化数据查询的加速,PandaDB 采用了构建语义索引的方式,减少数据传输和调用AI 服务的次数.本小节基于人脸检测场景,使用LFW 数据集[11]构建对比实验,通过对比各种方案下的查询耗时,验证语义索引方案的加速效果.

本实验的任务目标为:从样本集中找到与目标人脸图片相似度最高的人脸图片.本实验共分4 组对比,各组实验内容及实验条件细节如下.

• NOOP:无优化,PandaDB 向AIPM 发出图片相似度对比请求,逐个将图片以BLOB 流的形式发送给AIPM;AIPM 接收请求后抽取特征,将比对结果返回给PandaDB;

• DLOC:数据本地化方案,PandaDB 与AIPM 部署在同一台服务器上,减少BLOB 传输的网络开销;

• AIIDX:AI 服务缓存方案,PandaDB 向AIPM 请求数据,AIPM 利用本地缓存的特征数据响应请求.模仿数据流水线工具的实现;

• SEMIDX:语义索引方案,PandaDB 中构建非结构化数据的语义索引(人脸特征向量),执行查询时,直接调用本地索引数据比较.

表5 给出了在不同样本数下,各方案执行同一个查询的耗时.SEMIDX 方案相比于其他方案减少了数据传输和重复的数据抽取,故理论上该方案在4 个方案中速度最快.

从表5 中可以看出:在样本数相同的条件下,SEMIDX 方案具有最短的查询时间.在样本数超过2 000 的检索性能对比中,加速比超过1 万倍.

Table 5 Comparison of query time under different methods表5 不同方法的查询耗时对比

3.4 案例:学术图谱实体消歧与可视化

学术图谱泛指以学术内容为主体的领域知识图谱,典型应用如AMiner[12]和AceKG[13].本文基于KDD2020的参会人员信息[14]构建了一个小型的学术图谱,其中包含论文、作者、机构等3 类节点,根据论文创作关系和学者与机构间的隶属关系,将作者照片、论文的PDF 全文等非结构化数据作为属性直接保存在PandaDB 中.

图14 是 KDD2020 数据的可视化展示(基于开源项目 InteractiveGraph:https://github.com/grapheco/InteractiveGraph),其中,头像属性存储在PandaDB,且在PandaDB 的基础上提供了“以图找图”的功能,即实现了基于头像的快速匹配.

Fig.14 Visualization of KDD2020图14 KDD2020 数据的可视化展示

学术图谱原始数据中通常会出现学者重名、不同机构的简称或缩写相同等情况,因此,图谱创建过程中通常面临实体消歧问题.目前,大多数实体消歧方法都以聚类为基础,文献[15−17]使用表层特征值计算实体间相似度,但这种方法不能充分利用上下文特征.因为基于表层特征的方法面临信息不足的问题,有学者尝试引入外部信息,如WikiPedia 中的信息,将这些知识资源作为实体的扩展特征,辅助提升聚类准确性,代表工作如文献[18,19].文献[20,21]使用图计算的方法,充分利用网络数据的结构信息,但并不具有很好的普适性.近年来,随着深度学习技术的巨大进步,有学者利用embedding 技术[22]和神经网络技术[23],这类方法相比于传统方法具有更好的效果,但准确性方面仍不能满足人们的预期.本案例基于PandaDB,提出了一种融合结构化属性和非结构化属性的消歧方法.如图15 所示,某学术图谱中有两个姓名分别为Park Bill 和Tom Green 的人物节点以及一个名为Data Vis 的论文节点,需要判断T.Green 和Tom Green 是否为同一实体,从而判断Park Bill 和Tom Green 之间是否存在合作关系.由于论文中存在的属性数据不足,消歧很有困难.基于PandaDB 对非结构化信息抽取及语义比较能力,可以充分利用Tom Green 的照片以及论文作者照片列表,从而达到消歧目的.图15 下半部分给出了完成该操作的CypherPlus 语句,其中,<:操作符表示包含关系,只需要找到对应的节点,判断n.photo<:p.screenshot成立与否,即可计算出二者之间是否存在合作关系.

Fig.15 Diagram of entity disambiguation based on PandaDB图15 基于PandaDB 实现实体消歧示意图

4 相关工作

为实现数据应用中的多元异构数据的统一管理和分析,一种方法是通过ETL 工具,采用某种统一的形式处理异构数据.但这种方法成本较高,而且数据和分析需求的变化会使原本的ETL 流程失效[24].异构数据管理可以支持对多模型数据的存储和统一查询.学术界在上世纪80 年代就提出了联邦数据库的解决概念,Multibase[25]是其中的代表系统.这类系统的特点是定义全局schema 和基于映射的查询语言,用户基于全局schema 查询,系统将查询映射到分区schema.另一类以Spark SQL[26]为代表的系统提供统一的API,允许用户以关系模型使用数据,在提升效率和简化查询方面有较好的效果.BigIntegator[27],Forward[28],D4M[29]等系统整合了NoSQL,其中,Forward 以基于json 的数据模型组织数据,D4M 使用关联阵列(associative-array)数据模型,这种较为灵活的模型使系统可以在异构数据上执行查询.

在数据管理领域,属性图模型[30]是一种常用的管理图数据的数据模型,属性图中的节点和关系都可以被赋予标签和关联任意键值对形式的属性[31].属性图增加了节点和边的信息,同时又没有改变图的整体结构.目前,属性图模型被图数据库业界广泛采用[32,33],包括著名的图数据库Neo4j[34],Titan[35]等.Neo4j 是目前应用较为广泛的一款开源图数据库,其具有从原生图数据存储到可视化插件、再到图数据分析插件的丰富生态.JanusGraph[36]是在Titan 基础上开发的一种基于属性图的分布式图数据库.JanusGraph 采用存储层和查询引擎分离的设计,可以使用Cassandra 或HBase 作为存储层.JanusGraph 通过使用第三方分布式索引库ElasticSearch,Solr 和Lucene 实现检索功能.其他的图数据库还包括:Amazon 的Neptune[37];微软的Azure CosmosDB[38],TigerGraph[39],OrientDB[40]等.

人工智能技术已经广泛地应用到图像识别、语音识别、机器翻译等领域中.为了实现对语音、图片等多种信息的理解,多模态机器学习的研究尝试在机器学习的角度整合模型对非结构化数据的理解能力[41,42].人工智能与数据库的交叉研究一直是学术界研究的热点内容.人工智能与数据库的融合,存在AI4DB(AI for database)和DB4AI(database for AI)两个方向[43].AI4DB 旨在通过AI 技术提高DB 的效率和能力,如自动化数据库参数调优[44,45]、基数估计[46]、索引推荐[47]、查询优化[48,49]等.DB4AI 是以数据库为AI 算法提供数据服务,供算法进行训练和学习.例如:借助数据库的统一SQL 接口,为用户提供自定义的函数协助构建模型;通过数据库张量计算协助模型训练;通过持久化AI 模型以重复使用.

随着大数据时代的来临,海量数据的存储与计算使得单机服务已经无法满足需求,越来越多的任务需要分布式系统支持.保证分布式系统的可靠性和一致性至关重要.解决这个问题的一个著名算法是由Lamport 提出的Paxos 算法[50,51].此后,为了适应不同的工程环境,研究人员在Paxos 的基础上提出了很多新的算法[52].比较著名的有Multi-Paxos[51,53]、Liskov 等人提出的VR(viewstamped replication)算法[54,55]、雅虎公司设计的ZAB(Zookeeper’s atomic broadcast)算法[56]、Ongaro 等人提出的Raft 算法[57]等.

5 总结与展望

本文从结构化/非结构化数据的融合管理和即席查询需求角度出发,分析了目前多元异构数据融合管理方面统一表示和交互式查询等难点.在此基础上,提出了具备对异构数据实现统一表示能力的属性图扩展模型,并提出了针对在线查询和计算的属性操作符与查询语法.在第2 节,本文提出了基于智能属性图模型的分布式数据融合管理系统PandaDB,该系统实现了结构化/非结构化数据的高效存储管理,并提供了灵活的AI 算子扩展机制,具备对多元异构数据内在信息的即席查询能力.测试实验和案例证明,PandaDB 在大规模属性过滤查询和高并发查询响应上具备较好的性能表现.同时,PandaDB 可应用在学术图谱实体消歧与可视化等多元异构数据融合管理的场景.

目前,PandaDB 还存在着一些不足.一方面,AIPM 模块与系统相对独立部署,这种模式降低了系统的耦合性,有利于扩展和维护,但面对大规模的非结构化数据信息查询请求时,模块间信息传输的开销较大.未来应研究更为合理的AI 功能集成机制,结合多元异构数据即席查询的场景特性设计任务调度方法,提升系统性能;另一方面,从智能属性中抽取内嵌式属性的操作,目前还缺乏有效的缓存和预测机制,造成即席抽取的过程延时较大.PandaDB 将进一步结合应用,进一步提升系统的性能和稳定性,从而提升多元异构数据融合管理的能力.

猜你喜欢

属性数据结构化语义
促进知识结构化的主题式复习初探
改进的非结构化对等网络动态搜索算法
结构化面试方法在研究生复试中的应用
左顾右盼 瞻前顾后 融会贯通——基于数学结构化的深度学习
语言与语义
城镇地籍数据库建设过程中存在的问题和注意事项
基于GIS的房产测绘管理信息系统架构研究
无源多传感器综合数据关联算法研究
属性数据分析教学改革初探
批评话语分析中态度意向的邻近化语义构建