本发明属于数据库迁移领域,具体地讲涉及一种kafka与elasticsearch数据库数据的互相迁移方法。
背景技术:
实现数据共享,可以使更多的人更充分地使用已有数据资源,减少资料收集、数据采集等重复劳动和相应费用,而把精力重点放在开发新的应用程序及系统集成上。由于不同用户提供的数据可能来自不同的途径,其数据内容、数据格式和数据质量千差万别,因而给数据共享带来了很大困难,有时甚至会遇到数据格式不能转换或数据转换格式后丢失信息的棘手问题,严重地阻碍了数据在各部门和各软件系统中的流动与共享。
kafka数据库和elasticsearch数据库是目前较常用的两种数据库,实现他们之间的数据迁移对于数据流动与共享具有重大意义。
技术实现要素:
根据现有技术中存在的问题,本发明提供了一种kafka与elasticsearch数据库数据的互相迁移方法,其实现了kafka数据库与elasticsearch数据库数据的快速互相迁移,满足了数据流动与分享需求。
本发明采用以下技术方案:
一种kafka与elasticsearch数据库数据的互相迁移方法,包括如下步骤:
s1,读取kafka数据库和elasticsearch数据库配置文件的运行参数;并获取kafka数据库和elasticsearch数据库的元数据;
s2,根据kafka数据库的元数据生成kafka数据库的模型,获得kafka数据库在代码中使用的类名和键名;根据elasticsearch数据库的元数据生成elasticsearch数据库的模型,获得elasticsearch数据库在代码中使用的类名和字段名;
s3,根据数据迁移需求分别生成kafka数据库和elasticsearch数据库在代码中使用的配置文件定制模板;
s4,根据kafka数据库在代码中使用的类名及键名、elasticsearch数据库在代码中使用的类名及字段名、kafka数据库和elasticsearch数据库在代码中使用的配置文件定制模板生成可执行运行文件,运行可执行运行文件进而完成kafka与elasticsearch数据库数据的互相迁移。
优选的,步骤s1中,kafka数据库连接属性的配置文件的运行参数包括kafka集群ip地址、端口号和主题topic的表名;elasticsearch数据库连接属性的配置文件的运行参数包括elasticsearch集群ip地址、端口号和索引index的表名;所述kafka数据库的元数据包括节点broker、主题topic、分片partition、生产者producer、消费者consumer、消费组consumergroup;所述elasticsearch数据库的元数据包括索引index、对象type、表示id。
进一步优选的,步骤s2包括如下步骤:
s21,根据kafka数据库的元数据获取消费消息进而生成kafka数据库的模型,kafka数据库的模型的类型为json格式的字符串topic;根据elasticsearch数据库的元数据获取消费消息进而生成elasticsearch数据库的模型,elasticsearch数据库的模型的类型为json格式的字符串source;
s22,遍历kafka数据库的主题topic中的键值对内容,对kafka数据库的主题topic中的键的命名进行转换进而获得在代码中使用的类名和键名;遍历elasticsearch数据库的对象type中的字段内容,对elasticsearch数据库的对象type中的字段的命名进行转换进而获得在代码中使用的类名和字段名。
更进一步优选的,步骤s21中,kafka与elasticsearch数据库的生产者先产生数据,通过zookeeper找到集群中的节点broker,然后将产生的数据存进节点broker,kafka与elasticsearch数据库的消费者要消费数据,通过zookeeper找到集群中对应的节点broker后再消费,最终根据kafka数据库的元数据获取消费消息,根据elasticsearch数据库的元数据获取消费消息。
更进一步优选的,步骤s22中,对kafka数据库的主题topic中的键的命名进行转换的方式如下:将kafka数据库的主题topic中的键的命名中的字母均改为小写,将原有下划线去掉,并将原有下划线后的第一个字母再改为大写;对elasticsearch数据库的对象type中的字段的命名进行转换的方式如下:将elasticsearch数据库的对象type中的字段的命名中的字母均改为小写,将原有下划线去掉,并将原有下划线后的第一个字母再改为大写。
更进一步优选的,步骤s3包括如下步骤:
s31,确认kafka数据库的主题topic和elasticsearch数据库的对象type是否需要重新命名,如果需要,指出并修改在代码中对应的类名,且kafka数据库的主题topic和elasticsearch数据库的对象type的命名名称不能重复;
s32,确认并设置kafka数据库与elasticsearch数据库的连接方式为内嵌或引用,默认连接方式设为引用;
s33,根据数据迁移需求确认kafka数据库的必要字段、非必须要字段以及elasticsearch数据库的必要字段和非必须要字段,由kafka数据库和elasticsearch数据库的必要字段进而生成kafka数据库和elasticsearch数据库在代码中使用的配置文件定制模板。
更进一步优选的,步骤s4包括如下步骤:
s41,根据kafka数据库在代码中使用的类名及键名、elasticsearch数据库在代码中使用的类名及字段名、kafka数据库和elasticsearch数据库在代码中使用的配置文件定制模板获取生成执行文件的代码所需要的配置文件;
s42,根据生成执行文件的代码所需要的配置文件信息通过代码生成方法生成可执行运行文件,运行可执行运行文件进而完成kafka与elasticsearch数据库数据的互相迁移。
本发明的优点和有益效果在于:
1)本发明的数据库数据的互相迁移方法中,生产者先产生数据,通过zookeeper找到集群中的节点broker,然后将产生的数据存进节点broker,消费者要消费数据,通过zookeeper找到集群中对应的节点broker后再消费,最终获取消费消息进而生成模型;kafka数据库与elasticsearch数据库数据的互相迁移过程中,通过访问共享数据的存储路径信息,实现了快速的获取待交换数据的存储位置,并且通过对kafka数据库与elasticsearch数据库的指定元数据的命名进行相同的转化,进而实现了kafka数据库与elasticsearch数据库数据之间的快速迁移。
附图说明
图1为本发明的数据库数据的互相迁移方法的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,一种kafka与elasticsearch数据库数据的互相迁移方法包括如下步骤:
1、读取kafka数据库和elasticsearch数据库配置文件的运行参数;并获取kafka数据库和elasticsearch数据库的元数据;
具体的,kafka数据库连接属性的配置文件的运行参数包括kafka集群ip地址、端口号和主题topic的表名;elasticsearch数据库连接属性的配置文件的运行参数包括elasticsearch集群ip地址、端口号和索引index的表名;所述kafka数据库的元数据包括节点broker、主题topic、分片partition、生产者producer、消费者consumer、消费组consumergroup;所述elasticsearch数据库的元数据包括索引index、对象type、表示id。
2、根据kafka数据库的元数据生成kafka数据库的模型,获得kafka数据库在代码中使用的类名和键名;根据elasticsearch数据库的元数据生成elasticsearch数据库的模型,获得elasticsearch数据库在代码中使用的类名和字段名;
具体包括如下步骤:
1)根据kafka数据库的元数据获取消费消息进而生成kafka数据库的模型,kafka数据库的模型的类型为json格式的字符串topic;根据elasticsearch数据库的元数据获取消费消息进而生成elasticsearch数据库的模型,elasticsearch数据库的模型的类型为json格式的字符串source;
具体的,kafka与elasticsearch数据库的生产者先产生数据,通过zookeeper找到集群中的节点broker,然后将产生的数据存进节点broker,kafka与elasticsearch数据库的消费者要消费数据,通过zookeeper找到集群中对应的节点broker后再消费,最终根据kafka数据库的元数据获取消费消息,根据elasticsearch数据库的元数据获取消费消息;
2)遍历kafka数据库的主题topic中的键值对内容,对kafka数据库的主题topic中的键的命名进行转换进而获得在代码中使用的类名和键名;遍历elasticsearch数据库的对象type中的字段内容,对elasticsearch数据库的对象type中的字段的命名进行转换进而获得在代码中使用的类名和字段名;
具体的,对kafka数据库的主题topic中的键的命名进行转换的方式如下:将kafka数据库的主题topic中的键的命名中的字母均改为小写,将原有下划线去掉,并将原有下划线后的第一个字母再改为大写;对elasticsearch数据库的对象type中的字段的命名进行转换的方式如下:将elasticsearch数据库的对象type中的字段的命名中的字母均改为小写,将原有下划线去掉,并将原有下划线后的第一个字母再改为大写。
3、根据数据迁移需求分别生成kafka数据库和elasticsearch数据库在代码中使用的配置文件定制模板;
具体包括如下步骤:
1)确认kafka数据库的主题topic和elasticsearch数据库的对象type是否需要重新命名,如果需要,指出并修改在代码中对应的类名,且kafka数据库的主题topic和elasticsearch数据库的对象type的命名名称不能重复;
2)确认并设置kafka数据库与elasticsearch数据库的连接方式为内嵌或引用,默认连接方式设为引用;
3)根据数据迁移需求确认kafka数据库的必要字段、非必须要字段以及elasticsearch数据库的必要字段和非必须要字段,由kafka数据库和elasticsearch数据库的必要字段进而生成kafka数据库和elasticsearch数据库在代码中使用的配置文件定制模板。
4、根据kafka数据库在代码中使用的类名及键名、elasticsearch数据库在代码中使用的类名及字段名、kafka数据库和elasticsearch数据库在代码中使用的配置文件定制模板生成可执行运行文件,运行可执行运行文件进而完成kafka与elasticsearch数据库数据的互相迁移;
具体包括如下步骤:
1)根据kafka数据库在代码中使用的类名及键名、elasticsearch数据库在代码中使用的类名及字段名、kafka数据库和elasticsearch数据库在代码中使用的配置文件定制模板获取生成执行文件的代码所需要的配置文件;
2)根据生成执行文件的代码所需要的配置文件信息通过代码生成方法生成可执行运行文件,运行可执行运行文件进而完成kafka与elasticsearch数据库数据的互相迁移。
综上所述,本发明提供了一种kafka与elasticsearch数据库数据的互相迁移方法,其实现了kafka数据库与elasticsearch数据库数据的快速互相迁移,满足了数据流动与分享需求。