本发明涉及计算机,尤其是涉及一种基于数据中间层的数据库切换方法及装置。
背景技术:
1、不同类型的数据库的查询语法不同,在业务系统所开发的项目中切换新的数据库时,需要后端开发人员学习新的数据库语法,同时还需对后端代码进行调整和维护,这个过程会增加项目的开发难度和维护成本。而且,随着项目的推进,如果需要增加新的数据库,维护多个不同类型数据库的适配会变得困难。
技术实现思路
1、本发明的目的在于提供一种基于数据中间层的数据库切换方法及装置,以实现业务与数据库的解耦,提高数据库适配的灵活性和可维护性。
2、第一方面,本发明实施例提供了一种基于数据中间层的数据库切换方法,应用于采用对象关系映射orm模型的数据中间层,数据中间层通过统一api与业务系统通信,数据中间层通过连接池进行与多个数据库的连接管理;该方法包括:
3、通过统一api接收目标业务系统发送的原始查询请求,原始查询请求包括原始查询语句和目标数据库标识;
4、通过orm模型解析原始查询语句,得到原始查询信息,原始查询信息包括原始查询内容和目标特殊函数;
5、从至少一个候选数据库中,确定目标数据库;其中,至少一个候选数据库包括目标数据库标识对应的第一数据库和目标特殊函数相适配的第二数据库;
6、基于原始查询内容和目标特殊函数,构建得到与目标数据库对应的目标查询语句;
7、通过连接池在目标数据库中进行目标查询语句的数据查询,得到查询结果;
8、当查询结果指示查询失败时,重新执行从至少一个候选数据库中,确定目标数据库的步骤,以切换目标数据库;
9、当查询结果指示查询成功时,将查询结果返回给目标业务系统。
10、进一步地,从至少一个候选数据库中,确定目标数据库,包括:
11、基于目标数据库标识对应的第一数据库和目标特殊函数相适配的第二数据库,确定至少一个候选数据库;
12、对各个候选数据库进行优先级排序,得到排序结果;其中,第一数据库为第二数据库之一时,第一数据库的优先级高于第二数据库中的其他数据库;
13、基于排序结果,从各个候选数据库中选取目标数据库。
14、进一步地,基于目标数据库标识对应的第一数据库和目标特殊函数相适配的第二数据库,确定至少一个候选数据库,包括:
15、判断第一数据库是否为第二数据库之一;
16、如果否,将第二数据库确定为候选数据库。
17、进一步地,原始查询内容包括查询关键词、查询字段和查询条件;基于原始查询内容和目标特殊函数,构建得到与目标数据库对应的目标查询语句,包括:
18、基于目标数据库对应的关键词库,对查询关键词进行关键词转换,得到目标关键词;
19、基于目标关键词、查询字段、查询条件、目标特殊函数和目标数据库对应的语法规则,构建得到目标查询语句。
20、进一步地,当查询结果指示查询失败时,重新执行从至少一个候选数据库中,确定目标数据库的步骤,包括:
21、当查询结果指示查询失败时,将查询结果对应的目标数据库标记为已执行查询操作,并判断至少一个候选数据库中是否存在未执行查询操作的可选数据库;
22、如果存在可选数据库,将至少一个候选数据库更新为可选数据库,并重新执行从至少一个候选数据库中,确定目标数据库的步骤。
23、进一步地,上述方法还包括:
24、如果不存在可选数据库,向目标业务系统返回查询失败。
25、进一步地,多个数据库包括greenplum、mysql、postgresql、doris、elasticsearch、oracle、clickhouse、达梦、mongodb、hive、hbase、sql server和neo4j中的多种。
26、第二方面,本发明实施例还提供了一种基于数据中间层的数据库切换装置,应用于采用orm模型的数据中间层,数据中间层通过统一api与业务系统通信,数据中间层通过连接池进行与多个数据库的连接管理;该装置包括:
27、接收模块,用于通过统一api接收目标业务系统发送的原始查询请求,原始查询请求包括原始查询语句和目标数据库标识;
28、解析模块,用于通过orm模型解析原始查询语句,得到原始查询信息,原始查询信息包括原始查询内容和目标特殊函数;
29、确定模块,用于从至少一个候选数据库中,确定目标数据库;其中,至少一个候选数据库包括目标数据库标识对应的第一数据库和目标特殊函数相适配的第二数据库;
30、构建模块,用于基于原始查询内容和目标特殊函数,构建得到与目标数据库对应的目标查询语句;
31、查询模块,用于通过连接池在目标数据库中进行目标查询语句的数据查询,得到查询结果;
32、确定模块还用于当查询结果指示查询失败时,重新执行从至少一个候选数据库中,确定目标数据库的步骤,以切换目标数据库;
33、返回模块,用于当查询结果指示查询成功时,将查询结果返回给目标业务系统。
34、第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器,存储器中存储有可在处理器上运行的计算机程序,处理器执行计算机程序时实现第一方面的基于数据中间层的数据库切换方法。
35、第四方面,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行第一方面的基于数据中间层的数据库切换方法。
36、本发明实施例提供的基于数据中间层的数据库切换方法及装置,应用于采用orm模型的数据中间层,数据中间层通过统一api与业务系统通信,数据中间层通过连接池进行与多个数据库的连接管理;该方法包括:通过统一api接收目标业务系统发送的原始查询请求,原始查询请求包括原始查询语句和目标数据库标识;通过orm模型解析原始查询语句,得到原始查询信息,原始查询信息包括原始查询内容和目标特殊函数;从至少一个候选数据库中,确定目标数据库;其中,至少一个候选数据库包括目标数据库标识对应的第一数据库和目标特殊函数相适配的第二数据库;基于原始查询内容和目标特殊函数,构建得到与目标数据库对应的目标查询语句;通过连接池在目标数据库中进行目标查询语句的数据查询,得到查询结果;当查询结果指示查询失败时,重新执行从至少一个候选数据库中,确定目标数据库的步骤,以切换目标数据库;当查询结果指示查询成功时,将查询结果返回给目标业务系统。数据中间层通过统一api对接业务系统,通过连接池对接多个数据库,这样通过构建该数据中间层,实现了业务与数据库的解耦,提高了数据库适配的灵活性和可维护性;同时,数据中间层通过目标特殊函数实现了执行查询操作的目标数据库的扩增,通过重构目标查询语句实现了目标数据库的切换,在一定程度上避免了单一数据库查询失败的情况,提高了查询效率。
1.一种基于数据中间层的数据库切换方法,其特征在于,应用于采用对象关系映射orm模型的数据中间层,所述数据中间层通过统一api与业务系统通信,所述数据中间层通过连接池进行与多个数据库的连接管理;所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述从至少一个候选数据库中,确定目标数据库,包括:
3.根据权利要求2所述的方法,其特征在于,所述基于所述目标数据库标识对应的第一数据库和所述目标特殊函数相适配的第二数据库,确定至少一个候选数据库,包括:
4.根据权利要求1所述的方法,其特征在于,所述原始查询内容包括查询关键词、查询字段和查询条件;所述基于所述原始查询内容和所述目标特殊函数,构建得到与所述目标数据库对应的目标查询语句,包括:
5.根据权利要求1所述的方法,其特征在于,所述当所述查询结果指示查询失败时,重新执行所述从至少一个候选数据库中,确定目标数据库的步骤,包括:
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
7. 根据权利要求1-6中任一项所述的方法,其特征在于,所述多个数据库包括greenplum、mysql、postgresql、doris、elasticsearch、oracle、clickhouse、达梦、mongodb、hive、hbase、sql server和neo4j中的多种。
8.一种基于数据中间层的数据库切换装置,其特征在于,应用于采用orm模型的数据中间层,所述数据中间层通过统一api与业务系统通信,所述数据中间层通过连接池进行与多个数据库的连接管理;所述装置包括:
9.一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-7中任一项所述的基于数据中间层的数据库切换方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行权利要求1-7中任一项所述的基于数据中间层的数据库切换方法。