首页 理论教育图数据库数据导入-2017年软件工程论文最新研究成果

图数据库数据导入-2017年软件工程论文最新研究成果

【摘要】:本系统中使用的数据包括科技文献数据。使用这种方式导入数据可以保持数据与之后操作处理的一致性,每次在导入数据时,系统都会自动检查当前数据是否已导入,如果已导入则不会重复导入。并且可以缓存保存的对象,这样后面使用时就不需要再次从图数据库中查询,如果建立两个节点的关系时就直接使用已经在内存中缓存的对象,避免了耗时的数据库查询IO操作。

本系统中使用的数据包括科技文献数据。其中对应到MySQL数据库中的表有paper_degree(论文)、paper_journal(期刊)、paper_meeting(会议)、patent(专利)、Unit(企业或学校)。将关系型数据库中的数据导入到图数据库中有两种导入方式,一种是使用Cypher提供的LOAD命令直接从CSV文件导入,导入格式如load csv with headers from "file:///neoj4/paper.csv" as row create (n:Entiry) set n = row ,在导入时需要将要导入的CSV数据保存到import文件夹下;另一种是在程序代码里通过连接MySQL数据源获取要导入的数据,使用正则表达式,对不规则的数据进行规整化处理,使得要抽取的实体属性能够正确匹配,然后将要抽取的实体封装成对象,获取Neo4j数据源,把这些对象通过repository接口的save方法进行保存。在save对象之前可以使用@Relationship注解和对应的set方法为实体建立好需要保存的关系,最后调用repository的save方法保存对象,该接口会去查找要保存的对象是否存在要创建的边的关系,如果有则会将实体和关系一并保存到图数据库中。本系统最终选择了通过Java代码在程序中解析保存对象的方式,由于数据量比较大,每次导入使用了分页机制。使用这种方式导入数据可以保持数据与之后操作处理的一致性,每次在导入数据时,系统都会自动检查当前数据是否已导入,如果已导入则不会重复导入。并且可以缓存保存的对象,这样后面使用时就不需要再次从图数据库中查询,如果建立两个节点的关系时就直接使用已经在内存中缓存的对象,避免了耗时的数据库查询IO操作。

本系统中节点的类型主要有14种类型,分别包括Agency、Agent、Author、Copyright、Fund、Inventor、Journal、JournalName、KeyWords、Paper、Patent、StudyField、Tutor、Unit。关系类型主要有11种,分别为Application、Invention、agentedBy、directedBy、hasKeywords、haveJournal、studiedIn、studyField、supportted、workIn、writtedBy。其中Patent、Paper、Journal、Copyright还有其他属性信息。其中所有的边都是有向边,例如workIn就是一条由Author指向Unit的有向边,表示该作者在某个单位工作。(www.chuimin.cn)