本发明涉及数据处理领域,尤其涉及一种操作数据库的方法及终端。
背景技术:
当多个团队协同完成一个项目时,多个团队都需要具有与该项目关联的数据库的操作权限(包括添加权限、修改权限和删除权限)。而当数据库中的数据出现问题时,由于涉及多个团队、多个数据库,且现有的数据库日志包含所有数据库操作的文本,如图1所示,不利于快速进行查询操作,各类数据库的日志数据又不兼容,导致排查业务问题十分困难。
技术实现要素:
本发明所要解决的技术问题是:如何提高根据数据库日志排查业务问题的效率。
为了解决上述技术问题,本发明采用的技术方案为:
本发明提供一种操作数据库的方法,包括:
s1、获取来自业务端的数据库操作命令;
s2、获取与所述数据库操作命令对应的唯一标识符;
s3、触发数据端执行所述数据库操作命令;
s4、获取来自所述数据端的与所述数据库操作命令对应的执行结果;
s5、保存所述唯一标识符、所述数据库操作命令和所述执行结果至预设的日志文件。
本发明还提供一种操作数据库的终端,包括一个或多个处理器及存储器,所述存储器存储有程序,并且被配置成由所述一个或多个处理器执行以下步骤:
s1、获取来自业务端的数据库操作命令;
s2、获取与所述数据库操作命令对应的唯一标识符;
s3、触发数据端执行所述数据库操作命令;
s4、获取来自所述数据端的与所述数据库操作命令对应的执行结果;
s5、保存所述唯一标识符、所述数据库操作命令和所述执行结果至预设的日志文件。
本发明的有益效果在于:本发明通过一中间件转发来自不同业务端的数据库操作命令至对应的数据端,数据端根据接收到的数据库操作命令执行对应的操作,并将执行结果反馈至中间件。期间,业务端和安装有数据库的数据端不直接通信,有效地隔离了业务和数据,提高了数据的安全性。更重要的是,中间件将唯一标识符、数据库操作命令和执行结果保存至日志文件,使得后期可方便地通过中间件中存储的具有相同格式的日志文件排查业务问题,且通过唯一标识符可快速获知执行非法数据库操作命令的数据端,提高排查业务问题的效率。
附图说明
图1为数据库日志示意图;
图2为本发明提供的一种操作数据库的方法的具体实施方式的流程框图;
图3为本发明提供的一种操作数据库的终端的具体实施方式的结构框图;
图4为本发明提供的一种操作数据库的系统的实施例的结构框图;
标号说明:
101、业务端;102、中间件端;103、数据端;1、第一发送模块;2、建立模块;21、第一获取单元;22、第二获取单元;23、建立单元;3、执行模块;31、执行单元;4、第二发送模块;5、保存模块;6、生成模块;7、第三发送模块;8、第一获取模块;9、封装模块;10、缓存模块;11、第二获取模块;12、验证模块;13、处理器;14、存储器。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
请参照图2至图4,
如图2所示,本发明提供一种操作数据库的方法,包括:
s1、获取来自业务端的数据库操作命令;
s2、获取与所述数据库操作命令对应的唯一标识符;
s3、触发数据端执行所述数据库操作命令;
s4、获取来自所述数据端的与所述数据库操作命令对应的执行结果;
s5、保存所述唯一标识符、所述数据库操作命令和所述执行结果至预设的日志文件。
进一步地,触发数据端执行所述数据库操作命令之前,还包括:
从所述业务端获取与所述数据库操作命令对应的数据库标识;
获取与所述数据库标识对应的数据库连接信息;所述数据库连接信息包括数据库服务器名、端口号、数据库用户名和数据库密码;
根据所述数据库连接信息与所述数据库标识对应的数据端建立通信连接。
由上述描述可知,在对数据库进行操作的过程中,业务端并不知道具体要操作的数据库连接信息,只知道数据端提供的数据库标识;中间件端则有数据端提供的数据库标识及对应的数据库连接信息;业务端知道完整的业务数据含意,但不知道具体的数据库在哪;中间件端只知道如何执行具体的数据库操作,而不知道业务数据的具体含义;有效避免了维护中间件端的第三方恶意修改数据,提高了数据的安全性。
进一步地,还包括:
获取生成所述数据库操作命令的时间,得到初始时间;
保存所述初始时间至所述日志文件中与所述唯一标识符对应的记录。
进一步地,所述s3具体为:
若当前系统时间与所述初始时间的时间间隔小于预设的时间段,则触发数据端执行所述数据库操作命令。
由上述描述可知,对于具有时效性的数据,若超过预设的时间段中间件仍未执行数据库操作命令,则不将数据写入目标数据库,提高数据的准确性。
进一步地,还包括:
从数据端获取与所述数据库操作命令对应的更新数据;
封装所述更新数据和所述唯一标识符,得到反馈数据包;
发送所述反馈数据包至业务端。
由上述描述可知,业务端可根据更新数据验证数据库操作命令是否被正确执行,有利于提高数据的准确性。
如图3所示,本发明还提供一种操作数据库的终端,包括一个或多个处理器13及存储器14,所述存储器14存储有程序,并且被配置成由所述一个或多个处理器13执行以下步骤:
s1、获取来自业务端的数据库操作命令;
s2、获取与所述数据库操作命令对应的唯一标识符;
s3、触发数据端执行所述数据库操作命令;
s4、获取来自所述数据端的与所述数据库操作命令对应的执行结果;
s5、保存所述唯一标识符、所述数据库操作命令和所述执行结果至预设的日志文件。
进一步地,触发数据端执行所述数据库操作命令之前,还包括:
从所述业务端获取与所述数据库操作命令对应的数据库标识;
获取与所述数据库标识对应的数据库连接信息;所述数据库连接信息包括数据库服务器名、端口号、数据库用户名和数据库密码;
根据所述数据库连接信息与所述数据库标识对应的数据端建立通信连接。
进一步地,还包括:
获取生成所述数据库操作命令的时间,得到初始时间;
保存所述初始时间至所述日志文件中与所述唯一标识符对应的记录。
进一步地,所述s3具体为:
若当前系统时间与所述初始时间的时间间隔小于预设的时间段,则触发数据端执行所述数据库操作命令。
进一步地,还包括:
从数据端获取与所述数据库操作命令对应的更新数据;
封装所述更新数据和所述唯一标识符,得到反馈数据包;
发送所述反馈数据包至业务端。
本发明的实施例一为:
本实施例提供一种操作数据库的方法,包括:
s1、获取来自业务端的数据库操作命令;
s2、获取与所述数据库操作命令对应的唯一标识符;
s3、从所述业务端获取与所述数据库操作命令对应的数据库标识;
s4、获取与所述数据库标识对应的数据库连接信息;所述数据库连接信息包括数据库服务器名、端口号、数据库用户名和数据库密码;
s5、根据所述数据库连接信息与所述数据库标识对应的数据端建立通信连接;
s6、获取生成所述数据库操作命令的时间,得到初始时间;保存所述初始时间至所述日志文件中与所述唯一标识符对应的记录;
s7、触发数据端执行所述数据库操作命令;具体为:若当前系统时间与所述初始时间的时间间隔小于预设的时间段,则触发数据端执行所述数据库操作命令;
s8、获取来自所述数据端的与所述数据库操作命令对应的执行结果;
s9、保存所述唯一标识符、所述数据库操作命令和所述执行结果至预设的日志文件;
s10、从数据端获取与所述数据库操作命令对应的更新数据;封装所述更新数据和所述唯一标识符,得到反馈数据包;发送所述反馈数据包至业务端。
本发明的实施例二为:
本发明还提供一种操作数据库的终端,包括一个或多个处理器13及存储器14,所述存储器14存储有程序,并且被配置成由所述一个或多个处理器13执行以下步骤:
s1、获取来自业务端的数据库操作命令;
s2、获取与所述数据库操作命令对应的唯一标识符;
s3、从所述业务端获取与所述数据库操作命令对应的数据库标识;
s4、获取与所述数据库标识对应的数据库连接信息;所述数据库连接信息包括数据库服务器名、端口号、数据库用户名和数据库密码;
s5、根据所述数据库连接信息与所述数据库标识对应的数据端建立通信连接;
s6、获取生成所述数据库操作命令的时间,得到初始时间;保存所述初始时间至所述日志文件中与所述唯一标识符对应的记录;
s7、触发数据端执行所述数据库操作命令;具体为:若当前系统时间与所述初始时间的时间间隔小于预设的时间段,则触发数据端执行所述数据库操作命令;
s8、获取来自所述数据端的与所述数据库操作命令对应的执行结果;
s9、保存所述唯一标识符、所述数据库操作命令和所述执行结果至预设的日志文件;
s10、从数据端获取与所述数据库操作命令对应的更新数据;封装所述更新数据和所述唯一标识符,得到反馈数据包;发送所述反馈数据包至业务端。
本发明的实施例三为:
本实施例提供一种操作数据库的方法,包括:
s1、业务端发送数据库操作命令和与所述数据库操作命令对应的唯一标识符至中间件端;业务端获取生成所述数据库操作命令的时间,得到初始时间;业务端发送所述初始时间至中间件端;业务端发送与所述数据库操作命令对应的数据库标识至中间件端。
例如,业务端欲往销售记录数据库中添加一销售信息,业务端生成具有添加功能的一数据库操作命令;并生成与所述一数据库操作命令对应的唯一标识符,在后期进行业务问题排查时,可根据中间件端的日志文件中记录的唯一标识符定位非法数据库操作命令的执行者。业务端将数据库操作命令、唯一标识符、初始时间和销售记录数据库的数据库标识封装成一命令信息,并将该命令信息发送至中间件端的指定堆栈。
可选地,数据库操作命令为sql语句。
可选地,唯一标识符为自增id或唯一的随机值;
可选地,唯一标识符的生成方式为,根据sql语句、初始时间和业务端与数据端约定好的字符串进行md5,得到的值作为唯一标识符;
其中,sql语句重复的可能性比较小,再加上初始时间基本就不会重复了,这样出来的md5具有唯一性,所以可以当作唯一标识符;
业务端与数据端约定好的字符串是用来加盐的,保障中间件不会篡改;
可选地,堆栈为redis。
s2、中间件端与数据端建立通信连接;具体为:
s21、中间件端获取与所述数据库操作命令对应的数据库标识;
s22、中间件端获取与所述数据库标识对应的数据库连接信息;所述数据库连接信息包括数据库服务器名、端口号、数据库用户名和数据库密码;
s23、中间件端根据所述数据库连接信息与所述数据库标识对应的数据端建立通信连接。
其中,中间件端到指定的堆栈提取业务端发送的命令信息,解析命令信息获取目标数据库的数据库标识、要执行的数据库操作命令、命令信息的唯一标识符和生成数据库操作命令的初始时间。中间件端根据目标数据库的数据库标识获取对应的数据库连接信息,与目标数据库,即销售记录数据库建立通信连接。
s3、中间件端触发数据端执行所述数据库操作命令。
可选地,若当前系统时间与所述初始时间的时间间隔小于预设的时间段,则中间件端触发数据端执行所述数据库操作命令。
可选地,业务端根据唯一标识符加密数据库操作命令,得到加密数据库操作命令;业务端将所述加密数据库操作命令发送至中间件端;中间件端触发数据端执行所述数据库操作命令,具体为:中间件端发送所述加密数据库操作命令和所述唯一标识符至数据端;数据端根据所述唯一标识符解密所述加密数据库操作命令,得到数据库操作命令;数据端执行所述数据库操作命令。其中,根据唯一标识符加密数据库操作命令和解密数据库操作命令的算法只有数据端和业务端知晓,中间件端并不知道具体的加密算法或解密算法,使得中间件端无法恶意篡改业务端发送的数据库操作命令,提高数据的安全性。
其中,对于一具有时效性要求的数据信息,若在指定时间内中间件端仍未执行对应的数据库操作命令将所述数据信息写入目标数据库,则所述数据信息无效,不再写入目标数据库。例如,接入第三方平台充值系统时,用户通过第三方平台充值,第三方平台接收到充值信息,并验证成功后会发送充值信息到接收方,接收方需要在第三方指定的时间内返回成功信息,否则认为充值失败,以做到及时发货。
s4、数据端发送与所述数据库操作命令对应的执行结果至中间件端。
可选地,执行结果包括数据更新成功和数据更新失败。
s5、中间件端保存所述唯一标识符、所述数据库操作命令和所述执行结果至预设的日志文件。
可选地,数据端通过唯一标识符从中间件端获取执行结果,若未成功获取到所述执行结果,则预设第一时间间隔后再次获取与所述唯一标识对应的执行结果;若获取次数达到预设的次数或初次获取执行结果的时间与当前系统的时间间隔达到预设的时间间隔阈值,仍未能获取到与唯一标识符对应的执行结果,则设置执行结果为数据更新失败。
s6、中间件端从数据端获取与所述数据库操作命令对应的更新数据;中间件端封装所述更新数据和所述唯一标识符,得到反馈数据包;业务端从中间件端缓存所述反馈数据包;业务端获取与所述反馈数据包中的唯一标识符对应的期望数据;业务端根据所述期望数据验证所述更新数据,得到验证结果。
其中,期望数据为根据业务逻辑预设的执行数据库操作命令后的期望结果,更新数据为目标数据库执行数据库操作命令后数据库实际发生变化的数据。根据期望数据和实际的更新数据可验证业务端生成的数据库操作命令是否被正确执行。
本发明的实施例四为:
如图4所示,本实施例提供一种操作数据库的系统,包括业务端101、中间件端102和数据端。
其中,业务端101包括:
第一发送模块1,用于业务端101发送数据库操作命令和与数据库操作命令对应的唯一标识符至中间件端102;
生成模块6,用于业务端101获取生成数据库操作命令的时间,得到初始时间;
第三发送模块7,用于业务端101发送初始时间至中间件端102;
缓存模块10,用于业务端101从中间件端102缓存反馈数据包;
第二获取模块11,用于业务端101获取与反馈数据包中的唯一标识符对应的期望数据;
验证模块12,用于业务端101根据期望数据验证更新数据,得到验证结果。
其中,中间件端102包括:
建立模块2,用于中间件端102与数据端103建立通信连接;
其中,建立模块2包括:
第一获取单元21,用于中间件端102从业务端101获取与数据库操作命令对应的数据库标识;
第二获取单元22,用于中间件端102获取与数据库标识对应的数据库连接信息;数据库连接信息包括数据库服务器名、端口号、数据库用户名和数据库密码;
建立单元23,用于中间件端102根据数据库连接信息与数据库标识对应的数据端103建立通信连接;
执行模块3,用于中间件端102触发数据端103执行数据库操作命令;
其中,执行模块3包括:执行单元31,用于若当前系统时间与初始时间的时间间隔小于预设的时间段,则中间件端102触发数据端103执行数据库操作命令;
保存模块5,用于中间件端102保存唯一标识符、数据库操作命令和执行结果至预设的日志文件;
第一获取模块8,用于中间件端102从数据端103获取与数据库操作命令对应的更新数据;
封装模块9,用于中间件端102封装更新数据和唯一标识符,得到反馈数据包。
其中,数据端103包括:
第二发送模块4,用于数据端103发送与数据库操作命令对应的执行结果至中间件端102。
综上所述,本发明提供的一种操作数据库的方法及终端,通过一中间件端转发来自不同业务端的数据库操作命令至对应的数据端,数据端根据接收到的数据库操作命令执行对应的操作,并将执行结果反馈至中间件端。期间,业务端和安装有数据库的数据端不直接通信,有效地隔离了业务和数据,提高了数据的安全性。更重要的是,中间件端将唯一标识符、数据库操作命令和执行结果保存至日志文件,使得后期可方便地通过中间件端中存储的具有相同格式的日志文件排查业务问题,且通过唯一标识符可快速获知执行非法数据库操作命令的数据端,提高排查业务问题的效率。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。