一种从关系数据到图数据的交互式数据迁移方法与流程

文档序号:17662352发布日期:2019-05-15 22:28阅读:425来源:国知局
一种从关系数据到图数据的交互式数据迁移方法与流程

本发明涉及一种数据库迁移技术领域,特别是关于一种从关系数据到图数据的交互式数据迁移方法。



背景技术:

近年来,由于图数据库提供强大灵活的数据模型并且能够分析大量高度复杂的数据,克服了关系数据库对非结构化大数据管理的局限性,使得越来越多用户热衷把关系数据库迁移到图数据库来管理分析。虽然图数据库有不同的接口来执行数据的迁移,但是图数据的导入一般要事先定义好图的结构,并将数据清洗整理成与图结构一致的格式,最后执行特定图数据库提供的导入接口才能完成数据的迁移。同时,如果要更改图结构,则需要重新定义新的结构并整理数据文件再导入,费时费力,尤其对于一些非计算机专业人员,迁移过程并不是那么友好。因此,基于上述需求,开发一个操作方便的、迁移过程对用户透明的、交互式的数据迁移工具是非常有必要的。

关系数据到图数据迁移工具的主要技术是关系模型到图模型的转换映射以及映射过程中er模型的调整修改。neo4jetl工具是neo4j图数据库团队最新发布的关系数据库到neo4j的转换工具,它是从关系数据库中提取元数据,应用默认的映射规则(数据表信息映射为有属性的顶点,主外键关系映射为边)产生基于源关系数据库模式的映射文件,用户可以修改映射文件选择迁移的表和字段,而后etl工具利用neo4j的接口来执行映射结果数据的迁移。申请号为cn201610222508.5的专利文献中公开了一种关系型数据库向neo4j模型转换和数据迁移方法,其利用模型转换的方法完成了关系型数据库向neo4j数据的迁移。虽然etl工具和专利文献中都完成了数据的迁移,但是不管是etl还是前述专利文献,它们只能选择哪些表进行迁移,不能让用户自己去选择定义图的结构比如哪些字段为顶点哪些字段为属性,只能按照它们定义的默认规则进行转换,这样会导致导入图数据库的图结构并不一定完全符合用户的实际需求,而导入后对图结构的调整又十分复杂和耗时。

neo4jetl工具和前述专利文献在关系模型到图模型映射过程中的调整修改存在着一定的缺陷。专利文献的缺陷是只能筛选需要转换的表然后按其默认规则转换,即只能在表—实体的层面修改,对于属性和关系,则无能为力。neo4jetl工具的缺陷在下面三点:一是映射文件的修改发生在er模型形成之前,这就要求用户必须非常了解源关系数据库,才知道要选择哪些表和属性进行迁移,一旦用户进入下一步形成er模型,如果对选择的表和属性不满意又要重新连接源关系数据库产生映射文件修改比较麻烦;二是映射文件的手动修改对于非专业的人员有些不友好,专业人员比较容易理解映射文件映射内容,但对于非专业人员如果想要特定选择自己想要的表迁移需要学习理解映射文件才知道如何修改才能进入下一步;三是在形成er模型之后,neo4jetl工具只能更改节点名称、关系、属性名称和类型,不能让用户在er模型上修改关系模型到图模型的实体和属性映射,也不能让用户自己定义图的结构。这些缺陷出现的原因是开发者在设计实现产品的时候对用户使用的考虑度不够,特别是对非专业人员使用的注意不够。



技术实现要素:

针对上述问题,本发明的目的是提供一种从关系数据到图数据的交互式数据迁移方法,其实现了界面美观、可扩展性强、灵活性高、操作简便、自定义调整的从关系数据到图数据的交互式迁移工具;用户可以对er模型进行充分的调整和修改,使得最后导入的图数据的schema可以满足用户的查询和管理需求。

为实现上述目的,本发明采取以下技术方案:一种从关系数据到图数据的交互式数据迁移方法,其包括以下步骤:1)用户配置源关系数据库和目标图数据库信息,并保存配置信息;2)查询关系数据库元数据构建er模型:通过查询关系数据库的元数据,自动提取关系数据库中的每个表,表中字段以及表之间的主外键连接,构建er模型;3)对er模型进行自定义调整修改,得到目标er模型;4)依据目标er模型映射相应的目标图模型;5)依据目标图模型将源关系数据库导入目标图数据库中,完成数据迁移。

进一步,所述步骤1)中,用户在webui填写源关系数据库和目标图数据库的相关配置信息,即数据迁移的起点和终点,包括源关系数据库类型、端口号、主机ip和授权账户密码,以及目标图数据库类型、端口号和数据库文件存放路径。

进一步,所述步骤2)中,将关系模型转换为er模型就是将关系模式转换为实体型、实体的属性和实体型之间的联系。

进一步,所述查询关系数据库元数据构建er模型的映射规则为:将数据库表作为实体型,表名作为实体名,表的主键作为实体的标识符,表里的字段名作为实体的属性,表里的主外键之间的对应关系作为实体间的关系。

进一步,所述步骤3)中,用户对er模型的操作为:对实体、属性和关系进行重命名,删除自己不需要的实体、属性、边;用户还能将自己关心的属性上升为实体或者将实体下降为属性。

进一步,所述步骤3)中,删除实体时,与实体关联的边也会随着删除,其他实体以删除实体的主键为外键属性将不再作为当前实体的外键存在;删除属性时,主键属性不允许删除,外键属性删除时与其相关联的边也要删除;删除边时,与边相关联的外键属性将不再作为当前实体的外键存在。

进一步,所述属性上升为实体:将普通属性上升为实体,旧实体主键不变,上升的属性变成外键;新实体的主键为需要上升的属性,新实体注明属性来源;同时,需要增加旧实体到新实体的边。

进一步,所述实体下降为属性:若实体的主键没有作为其他实体的外键,则该实体不适宜下降;若下降实体a的主键为其他实体b的外键,实体下降为属性时要删除该实体a以及其边,并将该实体a里面的属性放到以该实体主键为外键的实体b里面,实体b里的该外键属性将不再作为当前实体的外键存在;下降后如果实体b多了外键属性,需要依据外键属性增加该实体b到主键实体c的边。

进一步,所述步骤4)中,依据目标er模型映射到相应的目标图模型就是将实体转换为顶点,实体间的关系转换为边;

定义的顶点类包含实体名和属性,边类根据4个基本值:起始实体名、起始属性名、终止实体名和终止字段名,将关系映射到位于边的两端顶点上。

进一步,所述步骤5)中,依据映射完成的目标图模型进行数据的迁移,导入方式为:采用sql分页查询,将关系数据库中的数据边查询边导入;同时,基于jsp进行前后台的交互,基于jquery、raphaeljs或bootstrap方式将关系数据到图数据的整个迁移过程进行前端展示,使用户只需通过点击操作就能实现复杂的数据迁移工作。

本发明由于采取以上技术方案,其具有以下优点:1、本发明实现了界面美观、可扩展性强、灵活性高、操作简便、自定义调整的从关系数据到图数据的交互式迁移方法。该方法能帮助用户便捷地将关系数据迁移到图数据,省时省力节约成本。与现有技术相比,本发明提出的技术方案中用户可以对er模型进行充分的调整和修改(删除实体、边和属性,实体和属性的重命名,属性上升为实体,实体下降为属性等),使得最后导入的图数据的schema可以满足用户的查询和管理需求。2、本发明的技术方案中,用户可以通过web前端调整和修改映射过程中的er模型,包括对实体、关系、属性的增删操作,以及实体和属性之间的相互转换。同时,这一系列的调整和修改操作,并不需要通过修改映射文件或映射规则来进行,而是只需要在可视化的前端界面中执行简单的鼠标点击操作即可。这在现有的数据迁移工具中是没有实现的。3、现有技术中的neo4jetl工具和前述专利文献都只支持了关系数据库到单图数据库(即neo4j)的迁移,对于其他图数据库,则无法进行迁移工作。本发明为关系数据库和图数据库提供了统一的接口,输入端的接口保证了本工具与关系数据库连接并读取数据库的元信息,构建er模型;输出端的接口保证了工具根据用户个性化修改后保存的图模型,调用不同的图数据库导入方式,以完成整个迁移工作。

附图说明

图1是本发明的整体流程示意图;

图2是本发明的实体a删除前er图;

图3是本发明的实体a删除后er图;

图4是本发明的实体b的普通属性y2上升实体前er图;

图5是本发明的实体b的普通属性y2上升实体后er图;

图6是本发明的实体a下降属性前er图;

图7是本发明的实体a下降属性后er图。

具体实施方式

下面结合附图和实施例对本发明进行详细的描述。

如图1所示,本发明提供一种从关系数据到图数据的交互式数据迁移方法,其包括以下步骤:

1)用户配置源关系数据库和目标图数据库信息,并保存配置信息;

用户在webui填写源关系数据库和目标图数据库的相关配置信息,即数据迁移的起点和终点,包括源关系数据库类型、端口号、主机ip和授权账户密码,以及目标图数据库类型、端口号和数据库文件存放路径等。

2)查询关系数据库元数据构建er模型:通过查询关系数据库的元数据,自动提取关系数据库中的每个表,表中字段以及表之间的主外键连接,构建er模型;

er模型是用er图来描述现实世界的概念模型。er图是由实体型、实体的属性和实体型之间的联系三个要素组成的,而关系模型的逻辑结构是一组关系模式的集合,所以将关系模型转换为er模型就是将关系模式转换为实体型、实体的属性和实体型之间的联系;

查询关系数据库元数据构建er模型的映射规则如下:将数据库表作为实体型,表名作为实体名,表的主键作为实体的标识符,表里的字段名作为实体的属性,表里的主外键之间的对应关系作为实体间的关系。

3)对er模型进行自定义调整修改,得到目标er模型;

通过默认的映射规则得到的er模型不一定是符合用户实际应用的,所以允许对er模型进行自定义调整修改。用户对er模型的操作除了可以对实体、属性和关系进行重命名,还可以删除自己不需要的实体、属性(主键属性不允许删除,外键属性删除时与其相关联的边也要删除)、边(边删除时与边相关联的外键属性将不再作为当前实体的外键存在)。当实体删除时,与实体关联的边也会随着删除,其他实体以删除实体的主键为外键属性将不再作为当前实体的外键存在,删除过程如图2、图3所示。er模型调整修改操作最重要的是用户可以将自己关心的属性上升为实体或者将实体下降为属性。

属性上升为实体:每个实体都有自己的主键,如果把主键属性上升为实体,那么旧实体就不存在了,所以主键属性不适宜上升为实体;对于外键属性已经有以该外键属性为主键的实体,无需上升为实体;所以只有普通属性上升为实体才有意义。对于普通属性,旧实体b主键不变,上升的属性变成外键;新实体y2的主键为需要上升的属性,新实体y2注明属性来源;同时,需要增加旧实体b到新实体y2的边,属性上升实体的过程如图4、图5所示。

实体下降为属性:若实体的主键没有作为其他实体的外键,则该实体不适宜下降,原因在于:1)该实体没有关系,下降后属性没有地方放;2)该实体是多对多关系,如果将实体下降属性会导致丢失关系。若下降实体a的主键为其他实体b的外键,实体下降为属性时要删除该实体a以及其边,并将该实体a里面的属性放到以该实体主键为外键的实体b里面,实体b里的该外键属性将不再作为当前实体的外键存在,注意下降后如果实体b多了外键属性,需要依据外键属性增加该实体b到主键实体c的边,实体下降属性的过程如图6、图7所示。

当用户将关心的属性上升为实体后用户可以着重观测这个属性或者可以借助这个属性来关联其他实体,例如贷款交易中的手机号如果作为贷款人实体的属性存储用户很难挖掘出一些规则,但如果把手机号作为单独实体存储,手机号与贷款人通过外键关系连接,用户更容易发现一些异常比如小部分犯罪团伙会共用部分手机号。当用户将不关心的实体下降为属性后,对于不需要重点观测的实体可以作为属性存储在实体中,避免因为过多的实体影响图算法的执行效率。

4)依据目标er模型映射相应的目标图模型;

图模型用作对现实世界数据的一种抽象,顶点通常代表现实世界中的实体,边代表这些实体之间的某种关系。依据目标er模型映射到相应的目标图模型就是将实体转换为顶点,实体间的关系转换为边。

在本实施例中,定义的顶点类包含实体名(表名)和属性(字段名),边类根据4个基本值:起始实体名(表名)、起始属性名(字段名)、终止实体名(表名)和终止字段名(字段名),将关系映射到位于边的两端顶点上。

5)依据目标图模型将源关系数据库导入目标图数据库中,完成数据迁移;

依据上一步映射完成的目标图模型进行数据的迁移。导入方式为:采用sql分页查询,将关系数据库中的数据边查询边导入,以避免因数据量过大而内存不足。同时,对于不同的目标图数据库,有不同的底层导入方式;基于jsp进行前后台的交互,基于jquery、raphaeljs或bootstrap等方式将关系数据到图数据的完整迁移过程进行前端展示,使用户只需通过点击操作就能实现复杂的数据迁移工作。

对于暂时实现的每一种图数据库,本实施例中都采用了最快速同时最稳定的导入方式:嵌入式方式。与服务器模式相比,嵌入式方式牺牲了一定的安全性(客户端中的潜在故障对服务器的影响)和便利性(易于监控),大幅提升了性能。

例如,以neo4j为例,neo4j是基于java编程语言、高性能、高可抗靠性、可扩展的、完全兼容acid的开源图数据库。neo4j内嵌模式将数据库文件内嵌到应用程序中,作为程序的一个单独数据库,供应用程序内部自行调用。嵌入式模式意味着你的应用程序和neo4j代码将会驻留和运行于同一个jvm。通过maven调用neo4j内嵌模式创建接口,创建图包括结点和关系,并赋予属性。对图数据的所有修改均放在事务框架中,从而完成图模型的导入。

综上所述,本发明为用户提供了自由修改图数据schema的空间,同时不仅仅限定于实体层面,还包括了关系和属性层面。用户可以进行实体、关系和属性的删除操作和修改操作,同时还提供了属性和实体之间的相互转化功能,包括属性上升实体、实体下降属性等操作。通过这些操作,用户可以自己定制满足自身需求的schema。

本发明适用于多种关系数据库如mysql、postgresql、oracle和图数据库如neo4j、arangodb和orientdb,解决了之前的工具使用需要依赖于特定数据库的缺点。同时,本发明还为关系数据库提供了统一的接入接口,以及统一的迁移至数据库的输出接口,因此具有较强的扩展性,若想再增加新的关系数据库和图数据库,只需将相应数据库的导入/导出代码嵌入整体代码即可。

上述各实施例仅用于说明本发明,各部件的结构、尺寸、设置位置及形状都是可以有所变化的,在本发明技术方案的基础上,凡根据本发明原理对个别部件进行的改进和等同变换,均不应排除在本发明的保护范围之外。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1