一种基于rocksdb排重数据导入图库的方法、装置及存储介质制造方法及图纸

技术编号:20842343 阅读:41 留言:0更新日期:2019-04-13 08:43
本发明专利技术提供了一种基于rocksdb排重数据导入图库的方法、装置及存储介质,该方法包括:待导入图库的数据进行分类得到多个数据类别,并为每一个数据类别设置一个类别标识,并设置每一个数据类别中数据之间的边关系;基于rocksdb顶点排重数据库对每个数据类别中的数据进行排重后作为顶点插入所述图库;基于rocksdb边排重数据库对数据之间的边关系进行排重后作为边插入所述图库。本发明专利技术先构建了与数据类别对应的rocksdb顶点排重数据库和rocksdb边排重数据库,在进行数据导入图库时,先进行顶点导入,顶点导入完毕后再进行边导入,解决了在导入Titan/JanusGraph图库的时候由于id没有排重导致实际数据重复而不可用的问题,由于建立了多个类别的排重库,提高了排重时的效率,提高了用户体验。

【技术实现步骤摘要】
一种基于rocksdb排重数据导入图库的方法、装置及存储介质
本专利技术涉及计算机程序处理
,特别是一种基于rocksdb排重数据导入图库的方法、装置及存储介质。
技术介绍
图论法是以图作为研究对象的方法称为图论法。图可以表示为由某些点及连接这些点的连线组成的图形,也可抽象地定义为G=(V,E,Φ),其中V,E分别是图的顶点和边集合,Φ表示V,E间的某种函数关系。这样,凡和二元关系有关的系统都可用图来描述,从而用图论法进行研究。在用图论法研究问题时我们只注意两顶点是否被一连线所连,而顶点的位置和连接的方式则无关紧要。欧拉在1736年解决了著名的哥尼斯堡七桥问题,从而成为图论方法的创始人。1947年克希霍夫发展了树的理论。随着计算机技术的飞速发展,图计算越来越受到人们的关注,图计算相关的软件也越来越丰富。Titan/JanusGraph图数据库在底层存储上支持Hbase,Cassandra,BerkeleyDB;在索引上支持Elasticsearch,Solr,Lucene。存储的节点和边的量能够达到上千亿,查询能够在秒级返回,非常适合做大规模图分析和计算。根据Titan/JanusGraph图库的设计,当导入数据时程序自动计算生成Long类型的id,图库不会自动对数据进行排重,同一条数据重复导入多次,会生成不同的id,因此,在做数据导入的时候需要做一次排重,对于少量的数据进行排重容易做到,但是当数据量达到几亿,几十亿时排重就会变得困难,尤其是当数据量达到百亿、千亿甚至更多的时候数据排重将会变得更加困难。此外,数据在插入图库的时候会先生成一个id,只有commit提交之后数据才会真正插入底层存储的数据库,如果同时导入点和边的话,当入库机器出问题,会造成数据生成了id,但是点和边数据确没有插入底层存储的数据库,导致插入出错。
技术实现思路
本专利技术针对上述现有技术中的缺陷,提出了如下技术方案。一种基于rocksdb排重数据导入图库的方法,该方法包括:预处理步骤,待导入图库的数据进行分类得到多个数据类别,并为每一个数据类别设置一个类别标识,并设置每一个数据类别中数据之间的边关系;顶点插入步骤,基于rocksdb顶点排重数据库对每个数据类别中的数据进行排重后作为顶点插入所述图库;边插入步骤,基于rocksdb边排重数据库对数据之间的边关系进行排重后作为边插入所述图库。更进一步地,所述图库为Titan/JanusGraph图库。更进一步地,根据数据类别的类别标识设置对应的rocksdb顶点排重数据库和rocksdb边排重数据库。更进一步地,所述顶点插入步骤的操作包括:使用生产者线程不停的从不同的待导入图库的数据源抽取数据插入阻塞队列中,对不同的数据类别采用不同的消费者线程进行处理,在插入时图库对每一个数据会计算一个long类型的id,使用‘数据|类别标识’做key,所述图库中存储的id做value构建key-value键值对,根据类别标识和key从对应的rocksdb顶点排重数据库中进行查找,如果查找结果为空,则将该数据进行commit提交作为顶点插入所述图库,如果查找结果为该数据,则表示该数据已作为顶点在所述图库中,不再对该数据进行入库操作。更进一步地,所述边插入步骤的操作为:使用‘数据|类别标识’做key从对应的rocksdb顶点排重库获取边关系中的两个顶点数据的id1、id2,使用‘id1|id2|边关系|边的方向’作为key在对应的rocksdb边排重数据库中进行查找,如果查找结果为空,则将该边关系进行commit提交作为边插入所述图库,如果查找结果不为空,则表示该边关系已存储在所述图库中,不再对该变关系进行入库操作,其中,所述rocksdb边排重数据库以‘id1|id2|边关系|边的方向’为key、value为1的数据库。本专利技术还提出了一种基于rocksdb排重数据导入图库的装置,该装置包括:预处理单元,待导入图库的数据进行分类得到多个数据类别,并为每一个数据类别设置一个类别标识,并设置每一个数据类别中数据之间的边关系;顶点插入单元,基于rocksdb顶点排重数据库对每个数据类别中的数据进行排重后作为顶点插入所述图库;边插入单元,基于rocksdb边排重数据库对数据之间的边关系进行排重后作为边插入所述图库。更进一步地,所述图库为Titan/JanusGraph图库。更进一步地,根据数据类别的类别标识设置对应的rocksdb顶点排重数据库和rocksdb边排重数据库。更进一步地,所述顶点插入单元执行的操作包括:使用生产者线程不停的从不同的待导入图库的数据源抽取数据插入阻塞队列中,对不同的数据类别采用不同的消费者线程进行处理,在插入时图库对每一个数据会计算一个long类型的id,使用‘数据|类别标识’做key,所述图库中存储的id做value构建key-value键值对,根据类别标识和key从对应的rocksdb顶点排重数据库中进行查找,如果查找结果为空,则将该数据进行commit提交作为顶点插入所述图库,如果查找结果为该数据,则表示该数据已作为顶点在所述图库中,不再对该数据进行入库操作。更进一步地,所述边插入单元执行的操作为:使用‘数据|类别标识’做key从对应的rocksdb顶点排重库获取边关系中的两个顶点数据的id1、id2,使用‘id1|id2|边关系|边的方向’作为key在对应的rocksdb边排重数据库中进行查找,如果查找结果为空,则将该边关系进行commit提交作为边插入所述图库,如果查找结果不为空,则表示该边关系已存储在所述图库中,不再对该变关系进行入库操作,其中,所述rocksdb边排重数据库以‘id1|id2|边关系|边的方向’为key、value为1的数据库。本专利技术还提出了一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序代码,当所述计算机程序代码被计算机执行时执行上述之任一的方法。本专利技术的技术效果为:本专利技术提出了对导入图库的数据先进行分类,并先构建了与数据类别对应的rocksdb顶点排重数据库和rocksdb边排重数据库,在进行数据导入图库时,先rocksdb顶点排重数据库进行顶点导入,顶点导入完毕后再基于rocksdb边排重数据库进行边导入,解决了在导入Titan/JanusGraph图库的时候由于id没有排重导致实际数据重复而不可用的问题,由于建立了多个类别的排重库,提高了排重时的效率,提高了用户体验。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显。图1是根据本专利技术的实施例的一种基于rocksdb排重数据导入图库的方法的流程图。图2是根据本专利技术的实施例的一种基于rocksdb排重数据导入图库的装置的结构图。具体实施方式下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关专利技术,而非对该专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关专利技术相关的部分。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。本专利技术所述的图库是存储数据结构的图,即顶点和边的关系,而非存储本文档来自技高网
...

【技术保护点】
1.一种基于rocksdb排重数据导入图库的方法,其特征在于,该方法包括:预处理步骤,待导入图库的数据进行分类得到多个数据类别,并为每一个数据类别设置一个类别标识,并设置每一个数据类别中数据之间的边关系;顶点插入步骤,基于rocksdb顶点排重数据库对每个数据类别中的数据进行排重后作为顶点插入所述图库;边插入步骤,基于rocksdb边排重数据库对数据之间的边关系进行排重后作为边插入所述图库。

【技术特征摘要】
1.一种基于rocksdb排重数据导入图库的方法,其特征在于,该方法包括:预处理步骤,待导入图库的数据进行分类得到多个数据类别,并为每一个数据类别设置一个类别标识,并设置每一个数据类别中数据之间的边关系;顶点插入步骤,基于rocksdb顶点排重数据库对每个数据类别中的数据进行排重后作为顶点插入所述图库;边插入步骤,基于rocksdb边排重数据库对数据之间的边关系进行排重后作为边插入所述图库。2.根据权利要求1所述的方法,其特征在于,所述图库为Titan/JanusGraph图库。3.根据权利要求2所述的方法,其特征在于,根据数据类别的类别标识设置对应的rocksdb顶点排重数据库和rocksdb边排重数据库。4.根据权利要求3所述的方法,其特征在于,所述顶点插入步骤的操作包括:使用生产者线程不停的从不同的待导入图库的数据源抽取数据插入阻塞队列中,对不同的数据类别采用不同的消费者线程进行处理,在插入时图库对每一个数据会计算一个long类型的id,使用‘数据|类别标识’做key,所述图库中存储的id做value构建key-value键值对,根据类别标识和key从对应的rocksdb顶点排重数据库中进行查找,如果查找结果为空,则将该数据进行commit提交作为顶点插入所述图库,如果查找结果为该数据,则表示该数据已作为顶点在所述图库中,不再对该数据进行入库操作。5.根据权利要求4所述的方法,其特征在于,所述边插入步骤的操作为:使用‘数据|类别标识’做key从对应的rocksdb顶点排重库获取边关系中的两个顶点数据的id1、id2,使用‘id1|id2|边关系|边的方向’作为key在对应的rocksdb边排重数据库中进行查找,如果查找结果为空,则将该边关系进行commit提交作为边插入所述图库,如果查找结果不为空,则表示该边关系已存储在所述图库中,不再对该变关系进行入库操作,其中,所述rocksdb边排重数据库以‘id1|id2|边关系|边的方向’为key、value为1的数据库。6.一种基于rocksdb排重数据导入图库的装置,其特征在于,该装置包括:预处理单元...

【专利技术属性】
技术研发人员:林劼高爽周成祖吴鸿伟吴文王海滨
申请(专利权)人:厦门市美亚柏科信息股份有限公司
类型:发明
国别省市:福建,35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1