CN113946559A - 数据处理方法、目标数据库***及数据处理*** - Google Patents
数据处理方法、目标数据库***及数据处理*** Download PDFInfo
- Publication number
- CN113946559A CN113946559A CN202010747265.3A CN202010747265A CN113946559A CN 113946559 A CN113946559 A CN 113946559A CN 202010747265 A CN202010747265 A CN 202010747265A CN 113946559 A CN113946559 A CN 113946559A
- Authority
- CN
- China
- Prior art keywords
- database system
- target database
- sql statement
- sql
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 34
- 238000003672 processing method Methods 0.000 title claims abstract description 31
- 238000000034 method Methods 0.000 claims abstract description 58
- 238000004891 communication Methods 0.000 claims description 75
- 238000004088 simulation Methods 0.000 claims description 69
- 238000006243 chemical reaction Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 description 30
- 238000010586 diagram Methods 0.000 description 11
- 238000012423 maintenance Methods 0.000 description 10
- 238000007726 management method Methods 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000013508 migration Methods 0.000 description 6
- 230000005012 migration Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据处理方法、目标数据库***及数据处理***,属于数据库技术领域。所述方法包括:目标数据库***获取结构化查询语言SQL语句,所述SQL语句是基于应用向源数据库***发送的数据包得到的;所述目标数据库***获取所述SQL语句关联的数据,所述数据是所述源数据库***向所述目标数据库***迁移的;所述目标数据库***基于所述SQL语句关联的数据执行所述SQL语句,执行所述SQL语句的执行结果用于反馈将所述应用由所述源数据库***服务切换到所述目标数据库***来提供服务的风险。本申请能够有效降低应用由源数据库***服务切换到目标数据库***来提供服务的实际风险。
Description
本申请要求于2020年7月17日提交的申请号为202010692252.0、发明名称为“迁移应用的方法、装置、服务器及存储介质”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及数据库技术领域,特别涉及一种数据处理方法、目标数据库***及数据处理***。
背景技术
随着存储技术的发展,用户对提供存储服务的数据库***的要求也越来越高。当用户想要将已有的一个数据库***的应用(也称应用程序)的业务迁移到另一数据库***中时,由于无法了解业务迁移后的数据库***的运行状况,应用切换到由该另一数据库***来提供服务存在一定风险。
发明内容
本申请实施例提供了一种数据处理方法、目标数据库***及数据处理***。该技术方案如下:
第一方面,提供了一种数据处理方法,该方法应用于数据处理***,该数据处理***包括:源数据库***和目标数据库***,应用需要从源数据库***切换至目标数据库***,以由源数据库***为应用提供服务,切换为由目标数据库***为应用提供服务。该方法包括:
目标数据库***获取SQL语句,该SQL语句是基于应用向源数据库***发送的数据包得到的;该目标数据库***获取该SQL语句关联的数据,该数据是该源数据库***向该目标数据库***迁移的;该目标数据库***基于该SQL语句关联的数据执行该SQL语句,执行该SQL语句的执行结果用于反馈将该应用由该源数据库***服务切换到该目标数据库***来提供服务的风险。
本申请实施例提供的数据处理方法,目标数据库***基于获取的SQL语句以及该SQL语句关联的数据,执行SQL语句,由于SQL语句的执行结果用于反馈将应用由源数据库***服务切换到目标数据库***来提供服务的风险,从而在应用由源数据库***服务切换到目标数据库***来提供服务之前,即可预测到相应的风险,***维护人员可以基于该执行结果进行目标数据库***的维护,从而有效降低应用由源数据库***服务切换到目标数据库***来提供服务的实际风险。
并且,由于SQL语句是基于应用向源数据库***发送的数据包得到的,是应用向源数据库***发送的实际SQL语句,如此可以实现基于实际业务数据进行目标数据库***的工作状态的模拟,从而进行有效风险预估,保证风险预估结果的可靠性。
在一种可选实现方式中,该方法还包括:该目标数据库***将获取的SQL语句转化为与该目标数据库***匹配的SQL语句。
通过将获取的SQL语句转化为与目标数据库***匹配的SQL语句,可以提高SQL语句的执行效率,避免不必要的执行错误。
目标数据库***获取的SQL语句是从截获的应用向源数据库***发送的数据包中获取的。在实际实现时,应用是通过服务器端与数据库***进行通信的,因此前述SQL语句是从截获的应用服务器向源数据库***发送的数据包中获取的。
由于数据包是基于预设的数据库协议生成,因此SQL语句是基于该数据库协议以及数据包解析得到的。该数据库协议用于定义数据包的各个字节的含义。可选地,数据处理***还包括采集节点,该采集节点上运行有采集软件,该采集软件可以由用户下载并安装在采集节点上。该采集节点用于截获应用服务器向源数据库***发送的数据包,在截获数据包后,采集节点可以解析数据包得到SQL语句,并存储解析得到的SQL语句。相对于直接存储数据包,采集节点提取并存储SQL语句可以减少冗余信息的存储,降低采集节点的存储压力。
示例的,数据处理***还可以包括至少一个代理(agent)节点,该至少一个代理节点的个数与应用所部署的应用服务器的个数相等,每个代理节点安装在一个应用服务器上。采集节点可以通过代理节点截获应用服务器向源数据库***发送的数据包。
在一种可选实现方式中,代理节点可以为应用服务器上安装的网卡,其可以截获自身传输的数据包。采用实体网卡截获数据包可以提高数据包的截取效率。
在另一种可选实现方式中,代理节点可以为代理软件,由用户下载并安装在应用服务器上。示例的,代理节点可以安装在应用服务器的网卡处,以此监控并截获网卡处传输的数据包。
通过代理节点截获数据包,并由采集节点解析数据包得到SQL语句,可以实现SQL语句的获取设备(即代理节点和采集节点)的旁路部署,不侵入应用所在***,无需修改应用所在***中的程序,减少对应用所在***的干扰,避免对应用的业务影响,降低SQL语句的获取复杂度。
在一种可选示例中,采集节点与代理节点通过有线或无线方式建立有通信连接。两者可以处于同一通信网络,例如同一无线局域网或同一无线保真(Wireless Fidelity,WiFi)网络中,如此可以减少代理节点与采集节点之间的丢包率,保证采集节点采集到更完整的数据,从而提高采集节点获取的数据的可靠性。并且,采集节点与代理节点位于同一网络可以降低两者的数据传输时延,提高两者数据传输效率。
采集节点在获取SQL语句后,可以通过多种方式将SQL语句提供给目标数据库***,本申请实施例以以下几种方式为例进行说明:
在一种可选方式中,采集节点将获取的SQL语句发送至目标数据库***。相应的,目标数据库***接收采集节点发送的SQL语句。
在另一种可选方式中,工作人员将采集节点获取的SQL语句导出后,将导出的SQL语句上传至目标数据库***。相应的,目标数据库***获取从采集节点导出的SQL语句。
目标数据库***通过将SQL语句从采集节点导出的方式获取SQL语句,不受采集节点与目标数据库***之间通信网络的限制,避免采用通信网络传输SQL语句所产生的数据丢失现象,从而提高获取的SQL语句的可靠性。
前述两种采集节点将SQL语句提供给目标数据库***的方式中,采集节点可以在解析得到SQL语句后的一段时间再向目标数据库***提供该SQL语句。也即是截获数据包和向目标数据库***提供SQL语句是异步执行的,无需实时将SQL语句传输至目标数据库***。由于对SQL语句传输的时限要求不高,相应的,对采集节点和目标数据库***的通信网络不存在特殊要求(例如两者必须处于同一通信网络的特殊要求),可以有效减少通信开销,降低采集节点和目标数据库***的通信成本。
在本申请实施例中,目标数据库***执行SQL语句的模拟参数可调,该模拟参数为用于描述目标数据库***执行SQL语句时的工作环境的参数。目标数据库***可以获取模拟参数,并基于模拟参数以及SQL语句关联的数据执行SQL语句。如此通过调整模拟参数,可以实现不同模式下,SQL语句的执行,从而模拟目标数据库***的不同的工作状态。
该模拟参数包括以下的一种或多种:模拟时段、应用的信息、源数据库***的配置信息并发线程数或应用与源数据库***之间的通信连接的信息。其中,模拟时段是目标数据库***执行SQL语句的时间段,也即是进行实际工作状态模拟的时段;应用的信息用于描述应用的属性。示例的,该应用的信息包括应用服务器的个数或SQL语句运行时占用的计算资源的上限中的至少一者;源数据库***的配置信息用于描述源数据库***在工作过程中的配置。示例的,该配置信息包括如下的一种或多种:是否在执行SQL语句后生成日志记录,刷盘的时机或刷盘的频率;并发线程数为目标数据库***在执行SQL语句时所支持的并发线程的数量;应用与源数据库***之间的通信连接的信息用于反映应用与源数据库***的连接状态,其可以包括:通信连接的标识,还可以包括通信连接的数量和/或通信连接的建立时刻。
当前述模拟参数均与源数据库***的对应参数相同时,目标数据库***可以基于该模拟参数以及SQL语句关联的数据执行SQL语句,模拟目标数据库***在与源数据库***相同的参数下,采用SQL语句关联的数据执行与源数据库***相同的SQL语句时的工作状态,从而通过目标数据库***执行SQL语句的执行结果来反馈将应用由源数据库***服务直接切换到目标数据库***来提供服务的风险。在这种情况下,该目标数据库***的模拟过程相当于在目标数据库***对源数据库***执行SQL语句的工作过程进行回放,也称等比回放。
当目标数据库***的并发线程数为源数据库***在执行SQL语句的并发线程数的多倍,其他模拟参数与源数据库***的对应参数相同时,目标数据库***可以基于该模拟参数以及SQL语句关联的数据执行SQL语句,模拟目标数据库***在高并发场景下,采用SQL语句关联的数据执行与源数据库***相同的SQL语句时的工作状态,从而得到高并发场景下,目标数据库***执行SQL语句的执行结果,了解目标数据库***的抗压能力,通过该执行结果来反馈在高并发场景下,将应用由源数据库***服务切换到目标数据库***来提供服务的风险。在这种情况下,该目标数据库***的模拟过程相当于在目标数据库***中,将对源数据库***执行SQL语句的工作过程中业务负载加倍后进行回放,也称倍数回放。
在一种可选方式中,目标数据库在获取其执行SQL语句的执行结果后,可以输出该执行结果。
在另一种可选方式中,目标数据库***将该目标数据库***执行该SQL语句的执行结果与该源数据库***执行该SQL语句的执行结果进行比较;该目标数据库***输出比较结果。通过两种执行结果的比较,更能直观地反映风险的大小。
其中,该比较结果包括:风险等级,该风险等级用于反映将该应用由该源数据库***服务切换到该目标数据库***来提供服务的风险的级别;和/或,该比较结果包括:存在风险的SQL语句。
示例的,该存在风险的SQL语句包括以下的一种或多种:
第一种SQL语句:在该目标数据库***中的执行结果和该源数据库***中的执行结果中一个报错,另一个未报错的SQL语句。例如,错误类型包括语法错误。
第二种SQL语句:在该目标数据库***中的执行结果和该源数据库***中的执行结果中错误类型不一致的SQL语句。
第三种SQL语句:在该目标数据库***中的执行时长与该源数据库***中的执行时长的差值大于时长差值阈值的SQL语句。示例的,该时长差值阈值的取值范围为50ms至100ms。
第四种SQL语句:在该目标数据库***中的执行时长与该源数据库***中的执行时长的差值与该目标数据库***中的执行时长的比值大于比值阈值的SQL语句。例如,第一SQL语句在目标数据库***中的执行时长与源数据库***中的执行时长的差值大于时长差值阈值,说明该第一SQL语句在目标数据库***的执行时长远大于源数据库***中的执行时长,第一SQL语句在目标数据库***中为慢SQL语句,说明该目标数据库***可能存在对该第一SQL语句执行时长较长的风险。
第五种SQL语句:在该目标数据库***中的执行时长与该源数据库***中的执行时长的差值大于时长差值阈值,且该差值与该目标数据库***中的执行时长的比值大于比值阈值的SQL语句。例如,第二SQL语句在目标数据库***中的执行时长与源数据库***中的执行时长的差值大于时长差值阈值,且该差值与目标数据库***中的执行时长的比值大于比值阈值,说明该第二SQL语句在目标数据库***的执行时长与源数据库***中的执行时长的差值较大,且该差值相对于源数据库***中的执行时长较长,从两个维度来定义慢SQL语句,可以更为准确地确定风险较高的慢SQL语句。
第六种SQL语句:在该目标数据库***中的执行时长与该源数据库***中的执行时长的差值大于时长差值阈值,且在该差值与该目标数据库***中的执行时长的比值大于比值阈值的高频SQL语句,该高频SQL语句为所属类别的SQL语句出现频率高于频率阈值的SQL语句。例如,第三SQL语句在目标数据库***中的执行时长与源数据库***中的执行时长的差值大于时长差值阈值,且该差值与目标数据库***中的执行时长的比值大于比值阈值,说明该第三SQL语句在目标数据库***的执行时长与源数据库***中的执行时长的差值较大,且该差值相对于源数据库***中的执行时长较长,且该第三SQL语句为高频SQL语句。从三个维度来定义慢SQL语句,可以更为准确地确定风险较高的慢SQL语句。
前述风险等级可以通过前述一种或多种存在风险的SQL语句确定。例如,当目标数据库***执行的SQL语句中包括存在风险的SQL语句时,查询SQL语句集合与风险等级对应关系,以确定风险等级。示例的,前述第一种SQL语句和第三种至第六种SQL语句对应的风险等级为高等级,第二种SQL语句对应的风险等级为中等级;或者,前述第一种SQL语句和第六种SQL语句对应的风险等级为高等级,第二种至第五种SQL语句对应的风险等级为中等级;当目标数据库***执行的SQL语句中不包括存在风险的SQL语句时,确定风险等级为低等级。
可选地,每个代理节点还用于截获源数据库向应用服务器发送的数据包,并将截获的数据包发送至采集节点。
其中,采集节点在获取源数据库***执行SQL语句的执行结果,即第二执行结果后,可以通过多种方式将第二执行结果提供给目标数据库***,本申请实施例以以下几种方式为例进行说明:
在一种可选方式中,采集节点将获取的第二执行结果发送至目标数据库***。相应的,目标数据库***接收采集节点发送的第二执行结果。
在另一种可选方式中,工作人员将采集节点获取的第二执行结果导出后,将导出的第二执行结果上传至目标数据库***。相应的,目标数据库***获取从采集节点导出的SQL语句。
目标数据库***通过将第二执行结果从采集节点导出的方式获取第二执行结果,不受采集节点与目标数据库***之间通信网络的限制,避免采用通信网络传输第二执行结果所产生的数据丢失现象,从而提高获取的第二执行结果的可靠性。
虽然采集节点通过代理节点进行数据包的截获对应用服务器的影响较小,但是为了避免在应用服务器高负载时对应用服务器的业务产生影响,采集节点还可以在应用服务器的负载大于负载阈值时,停止采集应用服务器发送至源数据库***的数据包,在应用服务器的负载不大于负载阈值时,恢复采集应用服务器发送至源数据库***的数据包;和/或,在应用服务器的负载大于负载阈值时,停止采集源数据库***向应用服务器向发送的数据包,在应用服务器的负载不大于负载阈值时,恢复采集源数据库***向应用服务器向发送的数据包。如此通过设置该保护机制,可以降低采集节点通过代理节点执行的数据包截获操作对应用服务器的业务产生的压力,为应用服务器的正常工作提供保障。
可选地,该方法还包括:该目标数据库系将该应用由该源数据库***服务切换到该目标数据库***。
第二方面,本申请实施例提供一种数据处理方法,该方法应用于数据处理***,该数据处理***包括:源数据库***、目标数据库***和采集节点,应用需要从源数据库***切换至目标数据库***,以由源数据库***为应用提供服务,切换为由目标数据库***为应用提供服务,该方法包括:
采集节点基于应用向源数据库***发送的数据包,得到SQL语句;向目标数据库***提供SQL语句,以供目标数据库***在获取SQL语句关联的数据后,基于SQL语句关联的数据执行SQL语句,执行SQL语句的执行结果用于反馈将应用由源数据库***服务切换到目标数据库***来提供服务的风险,SQL语句关联的数据是源数据库***向目标数据库***迁移的。
可选地,采集节点基于应用向源数据库***发送的数据包,得到结构化查询语言SQL语句的过程,包括:截获应用向源数据库***发送的数据包;解析数据包得到源数据库***的SQL语句。示例的,该数据处理***还包括:代理节点,采集节点可以通过代理节点截获应用向源数据库***发送的数据包。该过程参考前述第一方面的对应过程。
可选地,方法还包括:在截获源数据库***向应用向发送的数据包后,解析得到SQL语句在源数据库***的执行结果;向目标数据库***发送SQL语句在源数据库***的执行结果。示例的,该数据处理***还包括:代理节点,采集节点可以通过代理节点截获源数据库***向应用向发送的数据包。该过程参考前述第一方面的对应过程。
虽然采集节点通过代理节点进行数据包的截获对应用服务器的影响较小,但是为了避免在应用服务器高负载时对应用服务器的业务产生影响,采集节点还可以在应用服务器的负载大于负载阈值时,停止采集应用服务器发送至源数据库***的数据包,在应用服务器的负载不大于负载阈值时,恢复采集应用服务器发送至源数据库***的数据包;和/或,在应用服务器的负载大于负载阈值时,停止采集源数据库***向应用服务器向发送的数据包,在应用服务器的负载不大于负载阈值时,恢复采集源数据库***向应用服务器向发送的数据包。如此通过设置该保护机制,可以降低采集节点通过代理节点执行的数据包截获操作对应用服务器的业务产生的压力,为应用服务器的正常工作提供保障。
第三方面,本申请提供一种目标数据库***,该数据库***可以包括至少一个模块,该至少一个模块可以用于实现上述第一方面或者第一方面的各种可能实现提供的数据处理方法。
第四方面,本申请提供一种采集节点,该采集节点可以包括至少一个模块,该至少一个模块可以用于实现上述第二方面或者第二方面的各种可能实现提供的数据处理方法。
第五方面,本申请提供一种计算机设备,该计算机设备包括处理器和存储器。该存储器存储计算机指令;该处理器执行该存储器存储的计算机指令,使得该计算机设备执行上述第一方面或者第一方面的各种可能实现提供的方法,使得该计算机设备部署上述第三方面或者第三方面的各种可能实现提供的该目标数据库***。
第六方面,本申请提供一种计算机设备,该计算机设备包括处理器和存储器。该存储器存储计算机指令;该处理器执行该存储器存储的计算机指令,使得该计算机设备执行上述第二方面或者第二方面的各种可能实现提供的方法,使得该计算机设备部署上述第四方面或者第四方面的各种可能实现提供的该采集节点。
第七方面,本申请提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,该计算机指令指示该计算机设备执行上述第一方面或者第一方面的各种可能实现提供的方法,或者该计算机指令指示该计算机设备部署上述第三方面或者第三方面的各种可能实现提供的目标数据库***。
第八方面,本申请提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,该计算机指令指示该计算机设备执行上述第二方面或者第二方面的各种可能实现提供的方法,或者该计算机指令指示该计算机设备部署上述第四方面或者第四方面的各种可能实现提供的采集节点。
第九方面,本申请提供一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器可以从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述第一方面或者第一方面的各种可能实现提供的方法,使得该计算机设备部署上述第三方面或者第三方面的各种可能实现提供的目标数据库***。
第十方面,本申请提供一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器可以从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述第二方面或者第二方面的各种可能实现提供的方法,使得该计算机设备部署上述第四方面或者第四方面的各种可能实现提供的采集节点。
第十一方面,提供一种芯片,该芯片可以包括可编程逻辑电路和/或程序指令,当该芯片运行时用于实现如第一方面任一该的数据处理方法。或者,当该芯片运行时用于实现如第二方面任一该的数据处理方法。
第十二方面,提供一种数据处理***,包括:源数据库***和如上述第三方面或者第三方面的各种可能实现提供的目标数据库***。
可选地,该数据库处理***还包括:如上述第四方面或者第四方面的各种可能实现提供的采集节点。
本申请实施例提供的数据处理方法、目标数据库***及数据处理***,目标数据库***基于获取的SQL语句以及该SQL语句关联的数据,执行SQL语句,由于SQL语句的执行结果用于反馈将应用由源数据库***服务切换到目标数据库***来提供服务的风险,从而在应用由源数据库***服务切换到目标数据库***来提供服务之前,即可预测到相应的风险,***维护人员可以基于该执行结果进行目标数据库***的维护,从而有效降低应用由源数据库***服务切换到目标数据库***来提供服务的实际风险。
并且,由于SQL语句是基于应用向源数据库***发送的数据包得到的,是应用向源数据库***发送的实际SQL语句,如此可以实现基于实际业务数据进行目标数据库***的工作状态的模拟,从而进行有效风险预估,保证风险预估结果的可靠性。
在前述截获数据包和向目标数据库***提供SQL语句异步执行时,无需实时将SQL语句传输至目标数据库***。如此对SQL语句传输的时限要求不高,相应的,对采集节点和目标数据库***的通信网络不存在特殊要求,可以有效减少通信开销,降低采集节点和目标数据库***的通信网络的通信成本。
由于目标数据库***支持不同的并发线程数,因此其可以模拟不同业务负载(如前述等比回放或倍数回放的过程)下,执行SQL语句的工作状态,从而提供全面的风险预估结果。
进一步的,通过代理节点截获数据包,并由采集节点解析数据包得到SQL语句,可以实现SQL语句的获取设备(即代理节点和采集节点)的旁路部署,不侵入应用所在***,无需修改应用所在***中的程序,减少对应用所在***的干扰,避免对应用的业务影响,降低SQL语句的获取复杂度。
当目标数据库***为云数据***时,用户通过云控制平台和一些简单操作即可完成目标数据库***中的真实业务模拟的功能,操作简单,业务模拟的可靠性高。
本申请实施例中的目标数据库***支持多种数据库类型,在获取SQL语句后,将获取的SQL语句转化为与目标数据库***匹配的SQL语句,实现SQL语句在不同类型的数据库中可以有效解析。
附图说明
图1是本申请实施例提供的数据处理方法所涉及的数据处理***的一种应用环境示意图;
图2是本申请实施例提供的一种数据处理方法的流程示意图;
图3是本申请实施例提供的数据处理方法所涉及的数据处理***的另一种应用环境示意图;
图4是本申请实施例提供的数据处理方法所涉及的数据处理***的又一种应用环境示意图;
图5是本申请实施例提供的一种目标数据库***的框图;
图6是本申请实施例提供的另一种目标数据库***的框图;
图7是本申请实施例提供的又一种目标数据库***的框图;
图8是本申请实施例提供的计算机设备的一种可能的基本硬件架构示意图。
具体实施方式
为使本申请的原理和技术方案更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
目前,当用户想要将已有的一个数据库***的应用的业务迁移到另一数据库***中时,由于无法了解业务迁移后的数据库***的运行状况,应用切换到由该另一数据库***来提供服务存在一定风险。本申请实施例将原本为应用提供服务的数据库***称为源数据库***,将应用待切换至的数据库***称为目标数据库***。目标数据库***通过模拟实际的为应用提供服务的工作状态,有效降低了目标数据库***实际为应用提供服务的风险。
图1是本申请实施例提供的数据处理方法所涉及的数据处理***的一种应用环境示意图,该数据处理***包括至少两个数据库***(Database System,DBS)。每个数据库***可以为一个服务器或者由多个服务器组成的服务器集群。
示例的,图1假设数据处理***包括源数据库***101和目标数据库***102,应用需要从源数据库***101切换至目标数据库***102,以由源数据库***101为应用提供服务,切换为由目标数据库***102为应用提供服务。
其中,源数据库***可以为云数据库***或用户的本地数据库***;目标数据库***可以为云数据库***。示例的,目标数据库***可以为虚拟私有云(Virtual PrivateCloud,VPC)数据库***。云数据库***是指被部署在一个虚拟计算环境中的数据库***。当源数据库***为本地数据库***,目标数据库***为云数据库***时,应用从源数据库***切换至目标数据库***的过程也称迁移上云。云数据库***可以实现按需付费、按需扩展、高可用性以及存储整合等功能。
在源数据库***101和目标数据库***102中,每个数据库***包括:管理节点(也称查询引擎、结构化查询语言(Structured Query Language,SQL)引擎、数据库引擎或协调数据节点,coordinator)和多个数据节点。每个数据库***可以包括一个或多个数据库(Database,DB),相应的,其包括一个或多个管理节点,每个管理节点属于一个数据库,管理节点用于管理相应数据库中的数据节点。可选的,前述数据库可以为关系型数据库(relational database),关系型数据库是指采用了关系模型来组织数据的数据库。其以行和列的形式存储数据。每个关系模型可以称为一个关系表。
示例的,管理节点可以为单独的一个节点,或者多个数据节点中指定数据节点或者选举得到的数据节点,其可以为一个服务器或者由多个服务器组成的服务器集群。管理节点用于在接收到应用发送的SQL语句后,生成该SQL语句的执行计划,以控制管理节点所管理的数据节点执行该执行计划。
在一种实现方式中,每个数据节点可以为一个服务器或者由多个服务器组成的服务器集群;在另一实现方式中,每个数据节点表征数据库***的一个设定的最小处理单元。示例的,每个数据节点可以为一个虚拟机或一个容器,其管理和/或存储数据的一个应用实例或一个数据库执行进程。
在本申请实施例中,目标数据库***还包括模拟节点,该模拟节点用于模拟目标数据库***实际为应用提供服务的场景,从而反馈将应用由源数据库***服务切换到目标数据库***来提供服务的风险。该模拟节点可以集成在目标数据库***的管理节点上,也可以为单独设置的节点。
本申请实施例提供一种数据处理方法,可以由图1所示的应用环境中的目标数据库***执行,例如由目标数据库***中的模拟节点执行,如图2所示,该方法包括:
S201、目标数据库***获取SQL语句,该SQL语句是基于应用向源数据库***发送的数据包得到的。
前述应用包括服务器端,该服务器端部署在一个服务器或者由多个服务器组成的服务器集群中,在一种可选方式中,该服务器端可以通过网页的形式来为用户提供服务;在另一种可选方式中,前述应用还包括客户端,客户端部署在用户设备(user equipment,UE)中,该服务器端可以通过与客户端配合来为用户提供服务。前述部署有服务器端的服务器称为应用服务器。
目标数据库***获取的SQL语句是从截获(也称截取或抓取)的应用向源数据库***发送的数据包中获取的。在实际实现时,应用是通过服务器端与数据库***进行通信的,因此前述SQL语句是从截获的应用服务器向源数据库***发送的数据包中获取的。
由于数据包是基于预设的数据库协议生成,因此SQL语句是基于该数据库协议以及数据包解析得到的。图3是本申请实施例提供的数据处理方法所涉及的数据处理***的另一种应用环境示意图。图3中,数据处理***还包括采集节点103,可选地,采集节点103可以为一个服务器或由多个服务器组成的服务器集群,采集节点103上运行有采集软件,该采集软件可以由用户下载并安装在采集节点103上。示例的,当目标数据库***为云数据库***时,用户可以通过云控制平台下载该采集软件,该云控制平台用于管理该目标数据库***中用于进行实际工作状态模拟的资源,即与从源数据库***所获取的SQL语句相关的资源。该采集节点103用于截获应用服务器向源数据库***发送的数据包,在截获数据包后,采集节点103可以解析数据包得到SQL语句,并存储解析得到的SQL语句。其中,数据包包括SQL语句和附加信息,如验证信息或时间戳等,其基于预设的数据库协议生成,该数据库协议用于定义数据包的各个字节的含义。示例的,该数据库协议为Java数据库连接(JavaDatabase Connectivity,JDBC)协议或c++协议。采集节点103可以基于该数据库协议从数据包中提取SQL语句,并存储SQL语句,相对于直接存储数据包,可以减少冗余信息的存储,降低采集节点103的存储压力。
如图3所示,数据处理***还可以包括至少一个代理(agent)节点104,该至少一个代理节点104的个数与应用所部署的应用服务器302的个数相等,每个代理节点104安装在一个应用服务器302上。采集节点103可以通过代理节点104截获应用服务器向源数据库***发送的数据包。图3假设应用所部署的设备包括用户设备301和应用服务器302。示例的,该数据包截获的过程包括:用户通过用户设备301向应用服务器302发送用户请求后,应用服务器302基于该用户请求生成数据包,并向源数据库***101发送该数据包,以由源数据库***101执行该数据包中携带的SQL语句,通过执行SQL语句,可以实现数据的添加、删除、修改或查询。代理节点104截获所安装的应用服务器302向源数据库***发送的数据包,并将截获的数据包发送至采集节点103。需要说明的是,采集节点的网际互连协议(InternetProtocol,IP)地址和端口是预先配置的,以便于代理节点向其发送截获的数据包。其中,该采集节点的IP地址可以为公网IP地址,也可以为内网IP地址,如虚拟专用网(VirtualPrivate Network,VPN)的IP地址。
在一种可选实现方式中,代理节点104可以为应用服务器302上安装的网卡,其可以截获自身传输的数据包。采用实体网卡截获数据包可以提高数据包的截取效率。
在另一种可选实现方式中,代理节点104可以为代理软件,由用户下载并安装在应用服务器302上。示例的,代理节点104可以安装在应用服务器302的网卡处,以此监控并截获网卡处传输的数据包。示例的,当目标数据库***为云数据库***时,用户可以通过云控制平台下载该代理软件。
通过代理节点截获数据包,并由采集节点解析数据包得到SQL语句,可以实现SQL语句的获取设备(即代理节点和采集节点)的旁路部署,不侵入应用所在***,无需修改应用所在***中的程序,减少对应用所在***的干扰,避免对应用的业务影响,降低SQL语句的获取复杂度。
在一种可选示例中,采集节点103与代理节点104通过有线或无线方式建立有通信连接。两者可以处于同一通信网络,例如同一无线局域网或同一无线保真(WirelessFidelity,WiFi)网络中,如此可以减少代理节点104与采集节点103之间的丢包率,保证采集节点103采集到更完整的数据,从而提高采集节点103获取的数据的可靠性。并且,采集节点103与代理节点104位于同一网络可以降低两者的数据传输时延,提高两者数据传输效率。
其中,采集节点103在获取SQL语句后,可以通过多种方式将SQL语句提供给目标数据库***,本申请实施例以以下几种方式为例进行说明:
在一种可选方式中,采集节点将获取的SQL语句发送至目标数据库***。相应的,目标数据库***接收采集节点发送的SQL语句。在一种可选实现方式中,采集节点可以在空闲时段向目标数据库***发送SQL语句,以减少对目标数据库***其他通信业务的影响。当采集节点与应用服务器处于同一通信网络时,也可以减少对应用服务器的影响。该空闲时段可以为应用服务器发送数据包的频率小于频率阈值的时段,或者,该空闲时段为预先设定的时段,例如,0:00至5:00。在另一种可选实现方式中,采集节点在接收到发送指令后,将SQL语句发送至目标数据库***。在又一种可选实现方式中,采集节点在存储的SQL语句达到个数阈值后,将存储的SQL语句发送至目标数据库***。在一种可选示例中,采集节点103在将存储的SQL语句发送至目标数据库***后,可以删除已发送的SQL语句,以减少存储负载;在另一种可选示例中,采集节点103在第一存储空间存储解析得到的SQL语句,在将存储的SQL语句发送至目标数据库***后,可以将已发送的SQL语句从第一存储空间删除,并迁移到第二存储空间,以在第二存储空间进行已发送的SQL语句的备份。
在另一种可选方式中,工作人员将采集节点获取的SQL语句导出后,将导出的SQL语句上传至目标数据库***。相应的,目标数据库***获取从采集节点导出的SQL语句。示例的,采集节点SQL语句可以导出至移动硬盘固态硬盘(Solid State Disk或Solid StateDrive,SSD)、硬盘(Hard Disk Drive,HDD)或光盘等存储设备中,再由该存储设备导入至目标数据库***中。在一种可选示例中,采集节点103在将存储的SQL语句导出后,可以删除已导出的SQL语句,以减少存储负载;在另一种可选示例中,采集节点103在第一存储空间存储解析得到的SQL语句,在将存储的SQL语句导出后,可以将已导出的SQL语句从第一存储空间删除,并迁移到第二存储空间,以在第二存储空间进行已导出的SQL语句的备份。
目标数据库***通过将SQL语句从采集节点导出的方式获取SQL语句,不受采集节点与目标数据库***之间通信网络的限制,避免采用通信网络传输SQL语句所产生的数据丢失现象,从而提高获取的SQL语句的可靠性。
前述两种采集节点将SQL语句提供给目标数据库***的方式中,采集节点可以在解析得到SQL语句后的一段时间再向目标数据库***提供该SQL语句。也即是截获数据包和向目标数据库***提供SQL语句是异步执行的,无需实时将SQL语句传输至目标数据库***。由于对SQL语句传输的时限要求不高,相应的,对采集节点和目标数据库***的通信网络不存在特殊要求(例如两者必须处于同一通信网络的特殊要求),可以有效减少通信开销,降低采集节点和目标数据库***的通信成本。
值得说明的是,根据目标数据库***所要模拟的为应用提供服务的工作状态的不同,目标数据库***还可以采集数据包中与SQL语句关联的其他数据,例如,SQL语句的来源信息(如应用服务器的IP地址)、通信连接的标识(Identity,ID)和/或数据库标识。通信连接的ID用于指示SQL语句通过哪个通信连接传输。数据库标识用于指示执行SQL语句的数据库,例如该数据库标识为数据库名称。其他数据的采集过程与前述SQL语句的采集过程同步执行,因此可以参考前述SQL语句的采集过程。
在本申请实施例中,目标数据库***可以获取指定时长内采集的SQL语句以进行后续模拟(即S202至S205),该指定时长可以由用户或者***维护人员设置;目标数据库也可以获取所有已采集的SQL语句以进行后续模拟。
S202、目标数据库***获取SQL语句关联的数据,该数据是源数据库***向目标数据库***迁移的。
为了保证模拟的准确性,目标数据库***需要获取源数据库***中SQL语句关联的数据,以在该数据环境中实现SQL语句的执行,从而有效模拟目标数据库***实际为应用提供服务的场景。
其中,目标数据库***获取SQL语句关联的数据的方式可以有多种,本申请实施例以以下几种获取方式为例进行说明:
第一种获取方式,将应用在源数据库***中的数据全量迁移至目标数据库***。源数据库***中的数据包括SQL语句关联的数据。通过一次全量数据迁移可以模拟源数据库***中的数据全部迁移至目标数据库***中的整体数据环境,从而使得目标数据库***能够有效模拟出实际执行SQL语句的工作状态。例如,应用在源数据库***中存储有1000万条记录,将该1000万条记录通过一次全量数据迁移来迁移至目标数据库***。
第二种获取方式,在源数据库***中确定SQL语句关联的数据,将确定的数据增量迁移至目标数据库***。例如,SQL语句关联的数据为一个或多个数据库的数据,则将该一个或多个数据库的数据迁移至目标数据库***中。可选地,SQL语句关联的数据可以由目标数据库***识别,也可以由用户指定。例如,应用在源数据库***中存储有1000万条记录,其中100万条记录为SQL语句关联的数据,将该100万条记录通过增量数据迁移来迁移至目标数据库***。
S203、目标数据库***将获取的SQL语句转化为与目标数据库***匹配的SQL语句。
在获取SQL语句后,若SQL语句与目标数据库***不匹配,会导致SQL语句的执行效率低或者执行错误。通过将获取的SQL语句转化为与目标数据库***匹配的SQL语句,可以提高SQL语句的执行效率,避免不必要的执行错误。
其中,目标数据库***包括一种或多种类型的数据库,将获取的SQL语句转化为与目标数据库***匹配的SQL语句指的是将获取的SQL语句转化为与目标数据库匹配的SQL语句,该目标数据库为目标数据库***中用于为待切换的应用提供服务的数据库,例如该目标数据库为用于存储该应用产生的数据的数据库。SQL语句与某一数据库匹配指的是该某一数据库可以识别该SQL语句,也即是该SQL语句的格式(也称语法)是该某一数据库可识别的格式。则前述将获取的SQL语句转化为与目标数据库匹配的SQL语句指的是将获取的SQL语句的格式转化为目标数据库可识别的格式。
示例的,该目标数据库系可以包括:高斯数据库、MySQL数据库、greenplum数据库或者GaussDB中一种或多种数据库。其中,greenplum DB简称gpdb。
S204、目标数据库***基于SQL语句关联的数据执行SQL语句,执行SQL语句的执行结果用于反馈将应用由源数据库***服务切换到目标数据库***来提供服务的风险。
在本申请实施例中,目标数据库***执行SQL语句的模拟参数可调,该模拟参数为用于描述目标数据库***执行SQL语句时的工作环境的参数。目标数据库***可以获取模拟参数,并基于模拟参数以及SQL语句关联的数据执行SQL语句。如此通过调整模拟参数,可以实现不同模式下,SQL语句的执行,从而模拟目标数据库***的不同的工作状态。
可选地,目标数据库***可以通过用户界面或者连接的管理设备提供模拟参数的接收界面,通过该接收界面接收模拟参数。在一种可选示例中,前述接收界面可以提供模拟参数的设置选项,由用户选择模拟参数。在另一种可选示例中,前述接收界面可以提供模拟参数的输入框,由用户输入模拟参数。
该模拟参数包括以下的一种或多种:模拟时段、应用的信息、源数据库***的配置信息并发线程数或应用与源数据库***之间的通信连接的信息。其中,模拟时段是目标数据库***执行SQL语句的时间段,也即是进行实际工作状态模拟的时段,例如用户设置13:00至19:00为模拟时段。
应用的信息用于描述应用的属性。示例的,该应用的信息包括应用服务器的个数或SQL语句运行时占用的计算资源的上限中的至少一者。其中,计算资源可以包括CPU资源、内存资源和/或硬盘资源等。通过设置应用服务器的个数,目标数据库***可以在进行工作状态模拟时,创建相同数量的执行节点,创建得到的执行节点与应用服务器一一对应,由创建的执行节点将SQL语句并发发送至目标数据库,每个执行节点模拟对应的一个应用服务器与目标数据库交互的场景,从而模拟出应用的真实业务场景,提高最终得到的SQL语句的执行结果的可靠性。
源数据库***的配置信息用于描述源数据库***在工作过程中的配置。示例的,该配置信息包括如下的一种或多种:是否在执行SQL语句后生成日志记录,刷盘的时机或刷盘的频率。目标数据库***可以将自身的配置信息设置为与源数据库***相同的配置信息,如此可以还原出SQL语句在源数据库***中执行的真实场景。
并发线程数为目标数据库***在执行SQL语句时所支持的并发线程的数量。本申请实施例中,目标数据库***可以支持多种并发线程数。示例的,该并发线程数为源数据库***在执行SQL语句的并发线程数的整数倍,例如一倍或多倍。当并发线程数为源数据库***在执行SQL语句的并发线程数的一倍时,也即是并发线程数为源数据库***在执行SQL语句的并发线程数相同时,目标数据库***与源数据库***在执行相同的SQL语句的业务负载相同;当并发线程数为源数据库***在执行SQL语句的并发线程数的多倍时,在执行相同的SQL语句时,目标数据库***的业务负载是源数据库***的业务负载的多倍。示例的,接收界面可以提供并发线程数的设置选项,由用户设置并发线程数。
应用与源数据库***之间的通信连接的信息用于反映应用与源数据库***的连接状态,其可以包括:通信连接的标识,还可以包括通信连接的数量和/或通信连接的建立时刻。由于应用是通过应用服务器与源数据库***连接通信连接的,因此,前述应用与源数据库***之间的通信连接指的是应用服务器与源数据库***之间的通信连接。例如,当一个应用服务器与源数据库***中的某一数据库之间建立有x个通信连接,该x个通信连接中任一通信连接的标识可以由建立该通信连接的应用服务器的标识、数据库的标识以及该任一通信连接的序号表示,该任一通信连接的序号用于指示该任一通信连接在x个通信连接中的排序。
假设应用服务器有m个,每个应用服务器与源数据库***建立有n个通信连接。则目标数据库***可以在进行工作状态模拟时,创建m个执行节点,并建立每个执行节点与目标数据库的n个通信连接,每个通信连接模拟应用与源数据库***之间的一个通信连接,通过m×n个通信连接将SQL语句并发发送至目标数据库,从而模拟出应用的真实业务场景,提高最终得到的SQL语句的执行结果的可靠性。
当前述模拟参数均与源数据库***的对应参数相同时,目标数据库***可以基于该模拟参数以及SQL语句关联的数据执行SQL语句,模拟目标数据库***在与源数据库***相同的参数下,采用SQL语句关联的数据执行与源数据库***相同的SQL语句时的工作状态,从而通过目标数据库***执行SQL语句的执行结果来反馈将应用由源数据库***服务直接切换到目标数据库***来提供服务的风险。在这种情况下,该目标数据库***的模拟过程相当于在目标数据库***对源数据库***执行SQL语句的工作过程进行回放,也称等比回放。
当目标数据库***的并发线程数为源数据库***在执行SQL语句的并发线程数的多倍,其他模拟参数与源数据库***的对应参数相同时,目标数据库***可以基于该模拟参数以及SQL语句关联的数据执行SQL语句,模拟目标数据库***在高并发场景下,采用SQL语句关联的数据执行与源数据库***相同的SQL语句时的工作状态,从而得到高并发场景下,目标数据库***执行SQL语句的执行结果,了解目标数据库***的抗压能力,通过该执行结果来反馈在高并发场景下,将应用由源数据库***服务切换到目标数据库***来提供服务的风险。在这种情况下,该目标数据库***的模拟过程相当于在目标数据库***中,将对源数据库***执行SQL语句的工作过程中业务负载加倍后进行回放,也称倍数回放。
值得说明的是,前述模拟参数还可以有其他参数,本申请实施例只是示意性说明,通过设置不同的模拟参数,可以实现目标数据库***在不同场景下,采用SQL语句关联的数据执行与源数据库***相同的SQL语句的工作状态的模拟,从而便于用户全方位了解目标数据库***的实际工作状态。
并且,由于目标数据库***采用与源数据库***相同的SQL语句,也即是实际业务数据,进行实际工作状态的模拟,可以得到更贴近为应用提供服务的实际场景的SQL语句的执行结果,从而实现SQL语句的执行结果更准确地反馈将应用由源数据库***服务切换到目标数据库***来提供服务的风险。
为了简化描述,后续实施例将目标数据库***执行SQL语句的执行结果称为第一执行结果,将源数据库***执行SQL语句的执行结果称为第二执行结果。每个执行结果可以包括如下一种或多种:用于指示SQL语句是否执行成功的指示信息,或者,SQL语句的执行时长,或者,报错的SQL语句,或者,报错的类型。其中,指示信息可以由通过状态位表示,例如该状态位为1表示SQL语句执行成功;状态位为0表示SQL语句执行失败。SQL语句的执行时长可以为用于执行SQL语句的数据库***从开始执行SQL语句到结束执行SQL语句的时长,该执行时长也可以由始执行SQL语句的时间戳与结束执行SQL语句的时间戳标识。报错的类型用于标识出现的错误(error)类型,例如包括语法错误、访问权限问题、唯一键冲突(或者主键冲突)、网络问题或死锁回滚等。
本申请实施例中,可以通过多种实现方式来基于SQL语句的执行结果,评估将应用由源数据库***服务切换到目标数据库***来提供服务的风险。在第一种可选实现方式中,当第一执行结果满足预设条件,目标数据库***确定应用由源数据库***服务切换到目标数据库***来提供服务的风险高,发出提示信息,该提示信息指示应用由源数据库***服务切换到目标数据库***来提供服务的风险高,当第一执行结果不满足预设条件,目标数据库***确定应用由源数据库***服务切换到目标数据库***来提供服务的风险低,发出提示信息,该提示信息指示定应用由源数据库***服务切换到目标数据库***来提供服务的风险低。该预设条件包括如下的一种或多种:
第一种条件:存在错误类型包括语法错误的SQL语句。当第一执行结果满足第一种条件,说明可能出现了SQL语句的兼容性问题,由目标数据库***来为应用提供服务的风险较高。
第二种条件:存在慢SQL语句。示例的,慢SQL语句为执行时长大于时长阈值的SQL语句,例如,该时长阈值为10ms(毫秒);或者,慢SQL语句为执行时长大于时长阈值的高频SQL语句。高频SQL语句为所属类别的SQL语句出现频率高于频率阈值的SQL语句。
目标数据库***可以将获取的执行时长大于时长阈值的SQL语句进行分类,得到多类SQL语句,对于每类SQL语句,获取该类SQL语句中SQL语句的个数与所有执行的SQL语句的个数的比值,得到该类SQL语句中SQL语句的出现频率,当该类SQL语句类别中的SQL语句出现频率高于频率阈值,说明该类SQL语句均为高频SQL语句。属于该类别的SQL语句均为慢SQL语句。当第一执行结果满足第二种条件,说明出现了执行时延较长的SQL语句,由目标数据库***来为应用提供服务的风险较高。
第三种条件:存在SQL语句在目标数据库***中执行所占用的计算资源大于资源阈值。目标数据库***可以监控SQL语句执行过程中,计算资源的消耗,当存在计算资源大于资源阈值的时段,说明在执行SQL语句的过程中,存在对计算资源较大的占用,由目标数据库***来提供服务的风险较高。可选地,提示信息还可以包括前述占用计算资源大于资源阈值的时段中所执行的SQL语句,该SQL语句属于高风险的SQL语句,如此可以便于***维护人员定位SQL语句。
第四种条件:存在SQL语句在目标数据库***中执行的性能指标大于指标阈值。目标数据库***可以监控SQL语句执行过程中,每个SQL语句的性能指标,当存在性能指标大于指标阈值的SQL语句,说明在执行该SQL语句的过程中,存在性能指标较高的情况,由目标数据库***来提供服务的风险较高。可选地,提示信息还可以包括前述性能指标大于指标阈值的SQL语句,该SQL语句属于高风险的SQL语句,如此可以便于***维护人员定位SQL语句。示例的,该性能指标可以包括以下的一种或多种:SQL语句的输入/输出(input/output,IO)指标、时延(delay)、错误信息或执行次数。
其中,IO指标指的是SQL语句被执行所产生的IO次数;时延指的是SQL语句被执行所产生的时延;错误信息指的是SQL语句被执行所产生的不同类型的错误在产生的整体错误中的占比,也即是每种类型的错误的个数与整体错误个数的比值;执行次数指的是SQL语句被执行的次数。
可选地,目标数据库***还可以输出第一执行结果。
在第二种可选实现方式中,目标数据库***可以将第一执行结果和第二执行结果进行比较,通过比较结果来反映应用由源数据库***服务切换到目标数据库***来提供服务的风险。通过两种执行结果的比较,更能直观地反映风险的大小。该过程参考后续S205至S207。
S205、目标数据库***获取源数据库***执行SQL语句的执行结果。
目标数据库***获取的源数据库***执行SQL语句的执行结果是从截获的源数据库***向应用发送的数据包中获取的。在实际实现时,应用是通过服务器端与数据库***进行通信的,因此,源数据库***执行SQL语句的执行结果是从源数据库***向应用服务器发送的数据包中获取的。
由于数据包是基于预设的数据库协议生成,因此源数据库***执行SQL语句的执行结果是基于该数据库协议以及数据包解析得到的。
参考图3,该采集节点103还用于截获源数据库***向应用服务器发送的数据包,在截获数据包后,采集节点103可以解析数据包得到SQL语句的执行结果,并存储解析得到的SQL语句的执行结果。其中,数据包包括SQL语句的执行结果和附加信息,如验证结果或时间戳等,其基于预设的数据库协议生成,示例的,该数据库协议为JDBC协议或c++协议(需要说明的是,该数据库协议和应用服务器向源数据库***发送数据包所采用的协议相同)。采集节点103可以基于该数据库协议从数据包中提取SQL语句的执行结果,并存储SQL语句的执行结果,相对于直接存储数据包,可以减少冗余信息的存储,降低采集节点103的存储压力。
可选地,每个代理节点104还用于截获源数据库向应用服务器发送的数据包,并将截获的数据包发送至采集节点103。
其中,采集节点103在获取源数据库***执行SQL语句的执行结果,即第二执行结果后,可以通过多种方式将第二执行结果提供给目标数据库***,本申请实施例以以下几种方式为例进行说明:
在一种可选方式中,采集节点将获取的第二执行结果发送至目标数据库***。相应的,目标数据库***接收采集节点发送的第二执行结果。在一种可选实现方式中,采集节点可以在空闲时段向目标数据库***发送第二执行结果,以减少对目标数据库***其他通信业务的影响。当采集节点与应用服务器处于同一通信网络中时,也可以减少对应用服务器的影响。该空闲时段的定义可以参考前述实施例中空闲时段的定义。
在一种可选示例中,采集节点103在将存储的第二执行结果发送至目标数据库***后,可以删除已发送的第二执行结果,以减少存储负载;在另一种可选示例中,采集节点103在第三存储空间存储解析得到的第二执行结果,在将存储的第二执行结果发送至目标数据库***后,可以将已发送的第二执行结果从第三存储空间删除,并迁移到第四存储空间,以在第四存储空间进行已发送的第二执行结果的备份。
值得说明的是,任一SQL语句与其对应的第二执行结果可以采用不同消息分别发送,也可以采用相同消息同步发送;任一SQL语句与其对应的第二执行结果可以在同一时段发送,也可以在不同时段发送,本申请实施例对此不做限定。
在另一种可选方式中,工作人员将采集节点获取的第二执行结果导出后,将导出的第二执行结果上传至目标数据库***。相应的,目标数据库***获取从采集节点导出的SQL语句。示例的,采集节点获取的第二执行结果可以导出至SSD、HDD或光盘等存储设备中。目标数据库***通过将第二执行结果从采集节点导出的方式获取第二执行结果,不受采集节点与目标数据库***之间通信网络的限制,避免采用通信网络传输第二执行结果所产生的数据丢失现象,从而提高获取的第二执行结果的可靠性。在一种可选示例中,采集节点103在将存储的第二执行结果导出后,可以删除已导出的第二执行结果,以减少存储负载;在另一种可选示例中,采集节点103在第三存储空间存储解析得到的第二执行结果,在将存储的第二执行结果导出后,可以将已导出的第二执行结果从第三存储空间删除,并迁移到第四存储空间,以在第四存储空间进行已导出的第二执行结果的备份。
需要说明的是,前述S201和S205中,虽然采集节点通过代理节点进行数据包的截获对应用服务器的影响较小,但是为了避免在应用服务器高负载时对应用服务器的业务产生影响,采集节点还可以在应用服务器的负载大于负载阈值时,停止采集应用服务器发送至源数据库***的数据包,在应用服务器的负载不大于负载阈值时,恢复采集应用服务器发送至源数据库***的数据包;和/或,在应用服务器的负载大于负载阈值时,停止采集源数据库***向应用服务器向发送的数据包,在应用服务器的负载不大于负载阈值时,恢复采集源数据库***向应用服务器向发送的数据包。如此通过设置该保护机制,可以降低采集节点通过代理节点执行的数据包截获操作对应用服务器的业务产生的压力,为应用服务器的正常工作提供保障。
S206、目标数据库***将目标数据库***执行SQL语句的执行结果与源数据库***执行SQL语句的执行结果进行比较。
由于源数据库***执行的SQL语句可以有多个,目标数据库***在获取该多个SQL语句的第一执行结果和第二执行结果后,可以分别将对应于同一SQL语句的第一执行结果和第二执行结果进行比较,得到比较结果。
本申请实施例中,比较结果用于反映SQL语句由源数据库***执行和由目标数据库***执行的区别,从而反映应用由源数据库***服务切换到目标数据库***来提供服务的风险。
比较结果的表示形式可以由多种,本申请实施例假设比较结果包括如下的一种或多种形式:
第一种形式,比较结果包括:存在风险的SQL语句。
其中,该存在风险的SQL语句包括以下的一种或多种:
第一种SQL语句:在目标数据库***中的执行结果和源数据库***中的执行结果中一个报错,另一个未报错的SQL语句。例如,在目标数据库***中的执行结果中报错,在源数据库***中的执行结果中未报错的SQL语句;或者,在目标数据库***中的执行结果中未报错,在源数据库***中的执行结果中报错的SQL语句。例如,错误类型包括语法错误。其中,当某一SQL语句在目标数据库***中的执行结果中出现语法错误的报错,在源数据库***中的执行结果中未报错,说明该目标数据库***可能存在对该某一SQL语句不兼容的风险。
第二种SQL语句:在目标数据库***中的执行结果和源数据库***中的执行结果中错误类型不一致的SQL语句。例如,对于某一SQL语句,源数据库***和目标数据库***的执行结果中一个错误类型包括关系表不兼容,另一个错误类型包括访问权限问题,说明该目标数据库***可能存在对该某一SQL语句不兼容的风险。
第三种SQL语句:慢SQL语句。在不同应用场景中,慢SQL语句的定义不同,本申请实施例以以下几种定义为例进行说明:
第一种定义,慢SQL语句为在目标数据库***中的执行时长与源数据库***中的执行时长的差值大于时长差值阈值的SQL语句。示例的,该时长差值阈值的取值范围为50ms至100ms。例如,第一SQL语句在目标数据库***中的执行时长与源数据库***中的执行时长的差值大于时长差值阈值,说明该第一SQL语句在目标数据库***的执行时长远大于源数据库***中的执行时长,第一SQL语句在目标数据库***中为慢SQL语句,说明该目标数据库***可能存在对该第一SQL语句执行时长较长的风险。
第二种定义,在目标数据库***中的执行时长与源数据库***中的执行时长的差值(即两个执行时长的绝对差值)大于时长差值阈值,且该差值与目标数据库***中的执行时长的比值(即两个执行时长的相对差值)大于比值阈值的SQL语句。示例的,该时长差值阈值的取值范围为50ms,该比值阈值为15%。例如,第二SQL语句在目标数据库***中的执行时长与源数据库***中的执行时长的差值大于时长差值阈值,且该差值与目标数据库***中的执行时长的比值大于比值阈值,说明该第二SQL语句在目标数据库***的执行时长与源数据库***中的执行时长的差值较大,且该差值相对于源数据库***中的执行时长较长,从两个维度来定义慢SQL语句,可以更为准确地确定风险较高的慢SQL语句。
第三种定义,在目标数据库***中的执行时长与源数据库***中的执行时长的差值大于时长差值阈值,且该差值与目标数据库***中的执行时长的比值大于比值阈值的高频SQL语句,高频SQL语句为所属类别的SQL语句出现频率高于频率阈值的SQL语句。例如,第三SQL语句在目标数据库***中的执行时长与源数据库***中的执行时长的差值大于时长差值阈值,且该差值与目标数据库***中的执行时长的比值大于比值阈值,说明该第三SQL语句在目标数据库***的执行时长与源数据库***中的执行时长的差值较大,且该差值相对于源数据库***中的执行时长较长,且该第三SQL语句为高频SQL语句。从三个维度来定义慢SQL语句,可以更为准确地确定风险较高的慢SQL语句。
示例的,目标数据库***可以将执行时长与源数据库***中的执行时长的差值大于时长差值阈值,且该差值与目标数据库***中的执行时长的比值大于比值阈值的SQL语句进行分类,得到多类SQL语句;对于每类SQL语句,获取该类SQL语句中SQL语句的个数与所有执行的SQL语句的个数的比值,得到该类SQL语句中SQL语句的出现频率,当该类SQL语句类别中的SQL语句出现频率高于频率阈值,说明该类SQL语句均为高频SQL语句。属于该类别的SQL语句均为慢SQL语句。
可选地,执行结果还可以包括占用计算资源大于资源阈值的时段中所执行的SQL语句,和/或,在目标数据库***中执行的性能指标大于指标阈值的SQL语句,该SQL语句的获取方式可以参考前述第一种可选实现方式中对应方式。本申请实施例对此不再赘述。
第二种形式,比较结果包括:风险等级,该风险等级用于反映将应用由源数据库***服务切换到目标数据库***来提供服务的风险的级别。可选地,该风险等级可以通过前述一种或多种存在风险的SQL语句确定。例如,当目标数据库***执行的SQL语句中包括存在风险的SQL语句时,查询SQL语句集合与风险等级对应关系,以确定风险等级。示例的,前述第一种SQL语句和第三种SQL语句对应的风险等级为高等级;第二种SQL语句对应的风险等级为中等级;当目标数据库***执行的SQL语句中不包括存在风险的SQL语句时,确定风险等级为低等级。
S207、目标数据库***输出比较结果。
可选地,目标数据库***可以通过用户界面或者连接的管理设备提供比较结果的输出界面。用户通过该比较结果可以清晰地了解源数据库***和目标数据库***在执行相同的SQL语句时的区别。
值得说明的是,目标数据库***还可以基于目标数据库***执行SQL语句的执行结果或者比较结果输出建议信息,该建议信息包括如下的一种或多种:对应用所在***的维护建议、对SQL语句格式的改造建议或对目标数据库的内核的改造建议。例如,当该目标数据库***为关系型数据库***时,该维护建议包括建议添加的索引或建议修改的索引。
通过该建议信息可以使用户更为直观地了解应用由源数据库***服务切换到目标数据库***来提供服务所需要作出的调整。
S208、目标数据库系将应用由源数据库***服务切换到目标数据库***。
当前述第一执行结果或前述比较结果反馈将应用由源数据库***服务切换到目标数据库***来提供服务的风险较高(如提示信息指示定应用由源数据库***服务切换到目标数据库***来提供服务的风险高,或者,风险等级为高等级),***维护人员可以基于第一执行结果或前述比较结果或前述建议信息进行目标数据库***的维护。例如,***维护人员可以逐条分析存在风险的SQL语句,来确定该SQL语句是否为真正有风险的SQL语句,例如,若该SQL语句的错误类型包括主键冲突、表不存在或访问权限问题等,该SQL语句实际为不存在风险的SQL语句,无需进行***修复。若该SQL语句的错误类型包括语法错误或者该SQL语句为慢SQL语句,则该SQL语句实际为高风险SQL语句,***维护人员可以基于该SQL语句来修复不稳定因素,如修改目标数据库的内核、调整代码或修改参数等,如此来降低目标数据库***来提供服务的风险。在维护完成后,再将应用由源数据库***服务切换到目标数据库***。当前述第一执行结果或前述比较结果反馈将应用由源数据库***服务切换到目标数据库***来提供服务的风险较低(如提示信息指示定应用由源数据库***服务切换到目标数据库***来提供服务的风险低,或者,风险等级为低等级),可以直接将应用由源数据库***服务切换到目标数据库***。
其中,将应用由源数据库***服务切换到目标数据库***可以指的是应用服务器由与源数据库***通信,调整为与目标数据库***通信。例如由向源数据库***发送数据包调整为向目标数据库***发送数据包。
综上所述,本申请实施例提供的数据处理方法,目标数据库***基于获取的SQL语句以及该SQL语句关联的数据,执行SQL语句,由于SQL语句的执行结果用于反馈将应用由源数据库***服务切换到目标数据库***来提供服务的风险,从而在应用由源数据库***服务切换到目标数据库***来提供服务之前,即可预测到相应的风险,***维护人员可以基于该执行结果进行目标数据库***的维护,从而有效降低应用由源数据库***服务切换到目标数据库***来提供服务的实际风险。
并且,由于SQL语句是基于应用向源数据库***发送的数据包得到的,是应用向源数据库***发送的实际SQL语句,如此可以实现基于实际业务数据进行目标数据库***的工作状态的模拟,从而进行有效风险预估,保证风险预估结果的可靠性。
在前述截获数据包和向目标数据库***提供SQL语句异步执行时,无需实时将SQL语句传输至目标数据库***。如此对SQL语句传输的时限要求不高,相应的,对采集节点和目标数据库***的通信网络不存在特殊要求,可以有效减少通信开销,降低采集节点和目标数据库***的通信网络的通信成本。
由于目标数据库***支持不同的并发线程数,因此其可以模拟不同业务负载(如前述等比回放或倍数回放的过程)下,执行SQL语句的工作状态,从而提供全面的风险预估结果。
进一步的,通过代理节点截获数据包,并由采集节点解析数据包得到SQL语句,可以实现SQL语句的获取设备(即代理节点和采集节点)的旁路部署,不侵入应用所在***,无需修改应用所在***中的程序,减少对应用所在***的干扰,避免对应用的业务影响,降低SQL语句的获取复杂度。
当目标数据库***为云数据***时,用户通过云控制平台和一些简单操作即可完成目标数据库***中的真实业务模拟的功能,操作简单,业务模拟的可靠性高。
本申请实施例中的目标数据库***支持多种数据库类型,在获取SQL语句后,将获取的SQL语句转化为与目标数据库***匹配的SQL语句,实现SQL语句在不同类型的数据库中可以有效解析。
需要说明的是,本申请实施例提供的数据处理方法步骤的先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减,例如S203可以不执行,基于SQL语句的执行结果,评估将应用由源数据库***服务切换到目标数据库***来提供服务的风险的两种可选实现方式可以只执行一种,也可以组合执行,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本申请的保护范围之内,因此不再赘述。
图4是本申请实施例提供的数据处理方法所涉及的数据处理***的又一种应用环境示意图。图4中,目标数据库***102包括:云控制平台1021、调度中心1022、一个或多个执行节点1023,以及目标数据库1024。
其中,云控制平台1021用于管理该目标数据库***中用于进行实际工作状态模拟的资源,即与从源数据库***所获取的SQL语句相关的资源。用户可以通过云控制平台1021下载软件,如前述采集软件或代理软件。可选地,控制平台1021可以提供用户界面,用户还可以通过云控制平台1021设置模拟参数。示例的,控制平台1021可以在开始模拟之前创建调度中心1022,并基于模拟参数中应用服务器的个数创建相同个数的执行节点1023。
调度中心1022用于执行S201,例如获取采集节点103发送的SQL语句,或者从采集节点103导出的SQL语句。
目标数据库1024为目标数据库***中用于为待切换的应用提供服务的数据库,其用于执行S202,例如获取一次全量数据迁移得到的数据。
调度中心1022、执行节点1023和目标数据库1024协作执行S204。如图4所示,执行节点1023与应用服务器302一一对应。调度中心1022用于基于获取的SQL语句来源的应用服务器调度SQL语句至对应的执行节点1023,一个或多个执行节点1023用于并发发送SQL语句至目标数据库1024,以由目标数据库1024执行并发的SQL语句。例如,假设第四SQL语句是调度中心1022从采集节点103获取的任一SQL语句,调度中心1022在获取第四SQL语句后,解析第四SQL语句,确定发送第四SQL语句的应用服务器(即第四SQL语句的来源),将该第四SQL语句调度至与确定的应用服务器对应的执行节点1023,由该执行节点1023将第四SQL语句发送至目标数据库1024,由目标数据库1204执行该第四SQL语句。可选地,执行节点与目标数据库之间的通信连接个数等于应用服务器与源数据库***之间的通信连接个数。调度中心1022在获取第四SQL语句后,还可以确定SQL语句所属的通信连接(即第几个通信连接),在将该第四SQL语句调度至与确定的应用服务器对应的执行节点1023后,由该执行节点1023将第四SQL语句通过SQL语句所属的通信连接发送至目标数据库1024。
需要说明的是,目标数据库的IP地址和端口是预先配置的,以便于执行节点向其发送SQL语句。该目标数据库的IP地址和端口可以由云控制平台1021配置。
本申请实施例提供一种目标数据库***50,如图5所示,该目标数据库***50包括:
语句获取模块501,用于获取结构化查询语言SQL语句,该SQL语句是基于应用向源数据库***发送的数据包得到的;数据获取模块502,用于获取该SQL语句关联的数据,该数据是该源数据库***向该目标数据库***迁移的;执行模块503,用于基于该SQL语句关联的数据执行该SQL语句,执行该SQL语句的执行结果用于反馈将该应用由该源数据库***服务切换到该目标数据库***来提供服务的风险。
综上所述,本申请实施例提供的目标数据库***基于获取的SQL语句以及该SQL语句关联的数据,执行SQL语句,由于SQL语句的执行结果用于反馈将应用由源数据库***服务切换到目标数据库***来提供服务的风险,从而在应用由源数据库***服务切换到目标数据库***来提供服务之前,即可预测到相应的风险,***维护人员可以基于该执行结果进行目标数据库***的维护,从而有效降低应用由源数据库***服务切换到目标数据库***来提供服务的实际风险。
可选地,该目标数据库***50还包括:转化模块,用于将获取的SQL语句转化为与该目标数据库***50匹配的SQL语句。
可选地,该语句获取模块501,用于:接收采集节点发送的SQL语句或获取从该采集节点导出的SQL语句,该SQL语句是该采集节点在截获该应用向该源数据库***发送的数据包后,解析该数据包得到的。
可选地,该执行模块503,用于:获取模拟参数,该模拟参数包括以下的一种或多种:模拟时段、该应用的信息、该源数据库***的配置信息、并发线程数或该应用与该源数据库***之间的通信连接的信息;基于该模拟参数以及该SQL语句关联的数据执行该SQL语句。
可选地,如图6所示,该目标数据库***50还包括:比较模块504,用于将该目标数据库***50执行该SQL语句的执行结果与该源数据库***执行该SQL语句的执行结果进行比较;输出模块505,用于输出比较结果。
可选地,该比较结果包括:风险等级,该风险等级用于反映将该应用由该源数据库***服务切换到该目标数据库***50来提供服务的风险的级别;和/或,存在风险的SQL语句。
其中,该存在风险的SQL语句可以包括以下的一种或多种:
在该目标数据库***50中的执行结果和该源数据库***中的执行结果中一个报错,另一个未报错的SQL语句;
或者,在该目标数据库***50中的执行结果和该源数据库***中的执行结果中错误类型不一致的SQL语句;
或者,在该目标数据库***50中的执行时长与该源数据库***中的执行时长的差值大于时长差值阈值的SQL语句;
或者,在该目标数据库***50中的执行时长与该源数据库***中的执行时长的差值与该目标数据库***50中的执行时长的比值大于比值阈值的SQL语句;
或者,在该目标数据库***50中的执行时长与该源数据库***中的执行时长的差值大于时长差值阈值,且该差值与该目标数据库***50中的执行时长的比值大于比值阈值的SQL语句;
或者,在该目标数据库***50中的执行时长与该源数据库***中的执行时长的差值大于时长差值阈值,且在该差值与该目标数据库***50中的执行时长的比值大于比值阈值的高频SQL语句,该高频SQL语句为所属类别的SQL语句出现频率高于频率阈值的SQL语句。
可选地,如图7所示,该目标数据库***50还包括:结果获取模块506,用于接收采集节点发送该源数据库***执行该SQL语句的执行结果或者获取从该采集节点导出的该源数据库***执行该SQL语句的执行结果,该源数据库***执行该SQL语句的执行结果是该采集节点在截获该源数据库***向该应用发送的数据包后,解析得到的。
本申请实施例提供一种数据处理***,包括:源数据库***和前述实施例中任一所述的目标数据库***。该数据处理***的结构可以参考前述图1所示的数据处理***的结构。
可选地,图8是本申请实施例提供的计算机设备的一种可能的基本硬件架构示意图。
参见图8,计算机设备800包括处理器801、存储器802、通信接口803和总线804。
计算机设备800中,处理器801的数量可以是一个或多个,图8仅示意了其中一个处理器801。可选地,处理器801,可以是中央处理器(central processing unit,CPU)。如果计算机设备800具有多个处理器801,多个处理器801的类型可以不同,或者可以相同。可选地,计算机设备800的多个处理器801还可以集成为多核处理器。
存储器802存储计算机指令和数据;存储器802可以存储实现本申请提供的数据处理方法所需的计算机指令和数据,例如,存储器802存储用于实现数据处理方法的步骤的指令。存储器802可以是以下存储介质的任一种或任一种组合:非易失性存储器(例如只读存储器(ROM)、固态硬盘、硬盘、光盘),易失性存储器。
通信接口803可以是以下器件的任一种或任一种组合:网络接口(例如以太网接口)、无线网卡等具有网络接入功能的器件。
通信接口803用于计算机设备800与其它计算机设备或者终端进行数据通信。
总线804可以将处理器801与存储器802和通信接口803连接。这样,通过总线804,处理器801可以访问存储器802,还可以利用通信接口803与其它计算机设备或者终端进行数据交互。
在本申请中,计算机设备800执行存储器802中的计算机指令,使得计算机设备800实现本申请提供的数据处理方法,或者使得计算机设备800部署数据库***。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由服务器的处理器执行以完成本申请各个实施例所示的数据处理方法。例如,该非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机的可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站节点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站节点、计算机、服务器或数据中心传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质,或者半导体介质(例如固态硬盘)等。
在本申请中,术语“第一”、“第二”和“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。术语“至少一个”表示1个或多个,术语“多个”指两个或两个以上,除非另有明确的限定。A参考B,指的是A与B相同或者A为B的简单变形。
需要说明的是:上述实施例提供的目标数据库***在执行该数据处理方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的目标数据库***与数据处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的构思和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (19)
1.一种数据处理方法,其特征在于,所述方法包括:
目标数据库***获取结构化查询语言SQL语句,所述SQL语句是基于应用向源数据库***发送的数据包得到的;
所述目标数据库***获取所述SQL语句关联的数据,所述数据是所述源数据库***向所述目标数据库***迁移的;
所述目标数据库***基于所述SQL语句关联的数据执行所述SQL语句,执行所述SQL语句的执行结果用于反馈将所述应用由所述源数据库***服务切换到所述目标数据库***来提供服务的风险。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述目标数据库***将获取的SQL语句转化为与所述目标数据库***匹配的SQL语句。
3.根据权利要求1或2所述的方法,其特征在于,所述目标数据库***获取结构化查询语言SQL语句,包括:
所述目标数据库***接收采集节点发送的SQL语句或获取从所述采集节点导出的SQL语句,所述SQL语句是所述采集节点在截获所述应用向所述源数据库***发送的数据包后,解析所述数据包得到的。
4.根据权利要求1至3任一所述的方法,其特征在于,所述在所述目标数据库***基于所述SQL语句关联的数据执行所述SQL语句,包括:
所述目标数据库***获取模拟参数,所述模拟参数包括以下的一种或多种:模拟时段、所述应用的信息、所述源数据库***的配置信息、并发线程数或所述应用与所述源数据库***之间的通信连接的信息;
所述目标数据库***基于所述模拟参数以及所述SQL语句关联的数据执行所述SQL语句。
5.根据权利要求1至4任一所述的方法,其特征在于,所述方法还包括:
所述目标数据库***将所述目标数据库***执行所述SQL语句的执行结果与所述源数据库***执行所述SQL语句的执行结果进行比较;
所述目标数据库***输出比较结果。
6.根据权利要求5所述的方法,其特征在于,所述比较结果包括:风险等级,所述风险等级用于反映将所述应用由所述源数据库***服务切换到所述目标数据库***来提供服务的风险的级别;
和/或,存在风险的SQL语句。
7.根据权利要求6所述的方法,其特征在于,所述存在风险的SQL语句包括以下的一种或多种:
在所述目标数据库***中的执行结果和所述源数据库***中的执行结果中一个报错,另一个未报错的SQL语句;
或者,在所述目标数据库***中的执行结果和所述源数据库***中的执行结果中错误类型不一致的SQL语句;
或者,在所述目标数据库***中的执行时长与所述源数据库***中的执行时长的差值大于时长差值阈值的SQL语句;
或者,在所述目标数据库***中的执行时长与所述源数据库***中的执行时长的差值与所述目标数据库***中的执行时长的比值大于比值阈值的SQL语句;
或者,在所述目标数据库***中的执行时长与所述源数据库***中的执行时长的差值大于时长差值阈值,且所述差值与所述目标数据库***中的执行时长的比值大于比值阈值的SQL语句;
或者,在所述目标数据库***中的执行时长与所述源数据库***中的执行时长的差值大于时长差值阈值,且在所述差值与所述目标数据库***中的执行时长的比值大于比值阈值的高频SQL语句,所述高频SQL语句为所属类别的SQL语句出现频率高于频率阈值的SQL语句。
8.根据权利要求5至7任一所述的方法,其特征在于,所述方法还包括:
所述目标数据库***接收采集节点发送所述源数据库***执行所述SQL语句的执行结果或者获取从所述采集节点导出的所述源数据库***执行所述SQL语句的执行结果,所述源数据库***执行所述SQL语句的执行结果是所述采集节点在截获所述源数据库***向所述应用发送的数据包后,解析得到的。
9.一种目标数据库***,其特征在于,所述目标数据库***包括:
语句获取模块,用于获取结构化查询语言SQL语句,所述SQL语句是基于应用向源数据库***发送的数据包得到的;
数据获取模块,用于获取所述SQL语句关联的数据,所述数据是所述源数据库***向所述目标数据库***迁移的;
执行模块,用于基于所述SQL语句关联的数据执行所述SQL语句,执行所述SQL语句的执行结果用于反馈将所述应用由所述源数据库***服务切换到所述目标数据库***来提供服务的风险。
10.根据权利要求9所述的目标数据库***,其特征在于,所述目标数据库***还包括:转化模块,用于将获取的SQL语句转化为与所述目标数据库***匹配的SQL语句。
11.根据权利要求9或10所述的目标数据库***,其特征在于,所述语句获取模块,用于:
接收采集节点发送的SQL语句或获取从所述采集节点导出的SQL语句,所述SQL语句是所述采集节点在截获所述应用向所述源数据库***发送的数据包后,解析所述数据包得到的。
12.根据权利要求9至11任一所述的目标数据库***,其特征在于,所述执行模块,用于:
获取模拟参数,所述模拟参数包括以下的一种或多种:模拟时段、所述应用的信息、所述源数据库***的配置信息、并发线程数或所述应用与所述源数据库***之间的通信连接的信息;
基于所述模拟参数以及所述SQL语句关联的数据执行所述SQL语句。
13.根据权利要求9至12任一所述的目标数据库***,其特征在于,所述目标数据库***还包括:
比较模块,用于将所述目标数据库***执行所述SQL语句的执行结果与所述源数据库***执行所述SQL语句的执行结果进行比较;
输出模块,用于输出比较结果。
14.根据权利要求13所述的目标数据库***,其特征在于,所述比较结果包括:风险等级,所述风险等级用于反映将所述应用由所述源数据库***服务切换到所述目标数据库***来提供服务的风险的级别;
和/或,存在风险的SQL语句。
15.根据权利要求14所述的目标数据库***,其特征在于,所述存在风险的SQL语句包括以下的一种或多种:
在所述目标数据库***中的执行结果和所述源数据库***中的执行结果中一个报错,另一个未报错的SQL语句;
或者,在所述目标数据库***中的执行结果和所述源数据库***中的执行结果中错误类型不一致的SQL语句;
或者,在所述目标数据库***中的执行时长与所述源数据库***中的执行时长的差值大于时长差值阈值的SQL语句;
或者,在所述目标数据库***中的执行时长与所述源数据库***中的执行时长的差值与所述目标数据库***中的执行时长的比值大于比值阈值的SQL语句;
或者,在所述目标数据库***中的执行时长与所述源数据库***中的执行时长的差值大于时长差值阈值,且所述差值与所述目标数据库***中的执行时长的比值大于比值阈值的SQL语句;
或者,在所述目标数据库***中的执行时长与所述源数据库***中的执行时长的差值大于时长差值阈值,且在所述差值与所述目标数据库***中的执行时长的比值大于比值阈值的高频SQL语句,所述高频SQL语句为所属类别的SQL语句出现频率高于频率阈值的SQL语句。
16.根据权利要求13至15任一所述的目标数据库***,其特征在于,所述目标数据库***还包括:
结果获取模块,用于接收采集节点发送所述源数据库***执行所述SQL语句的执行结果或者获取从所述采集节点导出的所述源数据库***执行所述SQL语句的执行结果,所述源数据库***执行所述SQL语句的执行结果是所述采集节点在截获所述源数据库***向所述应用发送的数据包后,解析得到的。
17.一种数据处理***,其特征在于,包括:源数据库***和如权利要求9至16任一所述的目标数据库***。
18.一种计算机设备,其特征在于,包括:
处理器和存储器;
所述存储器,用于存储计算机指令;
所述处理器,用于执行所述存储器存储的计算机指令,使得所述计算机设备执行权利要求1至8任一所述的数据处理方法。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括计算机指令,所述计算机指令指示计算机设备执行权利要求1至8任一所述的数据处理方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2020106922520 | 2020-07-17 | ||
CN202010692252 | 2020-07-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113946559A true CN113946559A (zh) | 2022-01-18 |
Family
ID=79326933
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010747265.3A Pending CN113946559A (zh) | 2020-07-17 | 2020-07-29 | 数据处理方法、目标数据库***及数据处理*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113946559A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115408370A (zh) * | 2022-10-26 | 2022-11-29 | 本原数据(北京)信息技术有限公司 | 数据库迁移评估方法和***、计算机设备、存储介质 |
CN116302797A (zh) * | 2023-02-03 | 2023-06-23 | 安芯网盾(北京)科技有限公司 | 一种服务端软件健康状态采集方法及*** |
WO2024098746A1 (zh) * | 2022-11-10 | 2024-05-16 | 华为云计算技术有限公司 | 测试方法、装置及相关设备 |
-
2020
- 2020-07-29 CN CN202010747265.3A patent/CN113946559A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115408370A (zh) * | 2022-10-26 | 2022-11-29 | 本原数据(北京)信息技术有限公司 | 数据库迁移评估方法和***、计算机设备、存储介质 |
WO2024098746A1 (zh) * | 2022-11-10 | 2024-05-16 | 华为云计算技术有限公司 | 测试方法、装置及相关设备 |
CN116302797A (zh) * | 2023-02-03 | 2023-06-23 | 安芯网盾(北京)科技有限公司 | 一种服务端软件健康状态采集方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112000737B (zh) | 基于多云管理的数据同步方法、***、终端及存储介质 | |
CN110147411B (zh) | 数据同步方法、装置、计算机设备及存储介质 | |
WO2020238066A1 (zh) | 一种软件的压力测试方法、装置、存储介质和服务器 | |
CN113946559A (zh) | 数据处理方法、目标数据库***及数据处理*** | |
CN111124850A (zh) | Mqtt服务器性能测试方法、***、计算机设备及存储介质 | |
US10133622B2 (en) | Enhanced error detection in data synchronization operations | |
US20230376408A1 (en) | Application programming interface test method and apparatus | |
CN112350854B (zh) | 一种流量故障定位方法、装置、设备及存储介质 | |
CN112363845A (zh) | ***集成中台的数据同步方法及集成中台*** | |
CN111597099A (zh) | 一种监测部署于云平台的应用运行质量的无侵入仿真方法 | |
CN112052227A (zh) | 数据变更日志的处理方法、装置和电子设备 | |
CN109802842B (zh) | 应用拓扑的生成方法及相关设备 | |
CN107463490B (zh) | 一种应用于平台开发中的集群日志集中收集方法 | |
CN117251373A (zh) | 压力测试方法、装置、设备以及存储介质 | |
US7849132B2 (en) | Information processor and information processing system | |
CN104618474B (zh) | 设备信息保存方法以及装置 | |
CN112685486B (zh) | 数据库集群的数据管理方法、装置、电子设备及存储介质 | |
CN111314805B (zh) | 一种gpon***互通omci消息的调试方法和装置 | |
CN114598622A (zh) | 数据监控方法及装置、存储介质、计算机设备 | |
CN115114316A (zh) | 一种高并发数据的处理方法、装置、集群和存储介质 | |
CN111639249A (zh) | 用户反馈报错的自动监测方法、装置和设备 | |
CN109684158A (zh) | 分布式协调***的状态监控方法、装置、设备及存储介质 | |
WO2024098746A1 (zh) | 测试方法、装置及相关设备 | |
RU2802373C1 (ru) | Системы и способы получения информации сети радиодоступа | |
CN114598536B (zh) | 一种云平台虚拟化数据流量安全监控方法、***及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220215 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Applicant after: Huawei Cloud Computing Technologies Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |