CN110196862B - 一种数据场景构造方法、装置、服务器与系统 - Google Patents
一种数据场景构造方法、装置、服务器与系统 Download PDFInfo
- Publication number
- CN110196862B CN110196862B CN201810164861.1A CN201810164861A CN110196862B CN 110196862 B CN110196862 B CN 110196862B CN 201810164861 A CN201810164861 A CN 201810164861A CN 110196862 B CN110196862 B CN 110196862B
- Authority
- CN
- China
- Prior art keywords
- data
- query result
- data query
- scene
- matching
- 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.)
- Active
Links
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/24—Querying
- G06F16/245—Query processing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本说明书提供一种数据场景构造方法、装置、服务器与系统,包括:业务终端向数据库服务器发起数据查询请求;响应于所述数据查询请求,数据库服务器执行数据查询操作,并返回数据查询结果;数据场景构造服务器截获所述数据查询结果,当关键字匹配时,依据数据场景重构所述数据查询结果,并向业务需求终端返回所述重构后的查询结果。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种数据场景构造方法、装置、服务器与系统。
背景技术
随着移动互联网的快速发展,技术人员往往需要构造数据场景,以满足对数据库进行验证、测试等需求。这些构造的数据场景需要满足数据库的正常、异常等不同的场景。然而目前存在的数据场景构造方法,存在时间不可控,无法精确在程序执行路径中查询等问题,整体构造复杂、难度大、精确度低。
发明内容
为了解决上述技术问题,本说明书提出了一种数据场景构造方法、装置、服务器与系统,具体地:
本发明的第一方面,提供一种数据场景构造方法,包括:
业务终端向数据库服务器发起数据查询请求;响应于所述数据查询请求,数据库服务器执行数据查询操作,并返回数据查询结果;数据场景构造服务器截获所述数据查询结果,当关键字匹配时,依据数据场景重构所述数据查询结果,并向业务需求终端返回所述重构后的查询结果。
本发明的第二方面,提供一种数据场景构造方法,包括:
截获来自数据库服务器的数据查询结果;解析所述数据查询结果;建立所述解析后的查询结果与预设数据场景之间的匹配关系;依据所述匹配关系重构所述数据查询结果;向业务需求终端发送所述重构后的数据查询结果。
本发明的第三方面,提供一种数据场景构造系统,包括:
业务终端,用于向数据库服务器发起数据查询请求;
数据库服务器,用于响应所述数据查询请求,执行数据查询操作,并返回数据查询结果;
数据场景构造服务器,用于截获并解析所述数据查询结果;建立所述解析后的查询结果与预设数据场景之间的匹配关系;依据所述匹配关系重构所述数据查询结果,并向业务需求终端发送所述重构后的数据查询结果。
本发明的第四方面,提供一种数据场景构造装置,所述装置包括:
截获模块,用于截获来自数据库服务器的数据查询结果;
解析模块,用于解析所述数据查询结果;
匹配模块,用于建立所述解析后的查询结果与预设数据场景之间的匹配关系;
重构模块,用于依据所述匹配关系重构所述数据查询结果;
发送模块,用于向业务需求终端发送所述重构后的数据查询结果。
进一步地,所述截获模块包括:抓取模块,用于抓取来自数据库服务器的数据查询结果;业务属性字段获取模块,基于第一回调函数返回所述数据查询结果的业务属性字段;判断模块,用于根据所述业务属性字段确定是否截获所述查询结果。
进一步地,所述解析模块包括:逐层解析子模块,用于逐层解析所述数据查询结果;存储子模块,存储所述逐层解析获得的数据文件。
进一步地,所述匹配模块包括:数据场景构造字段获取子模块,用于基于第二回调函数返回数据场景构造字段;匹配关系建立子模块,用于建立所述数据场景构造字段与预设数据场景之间的匹配关系。
进一步地,所述重构模块包括:篡改子模块,用于依据所述匹配关系篡改所述数据查询结果中的事务数目字段。
进一步地,所述重构模块包括:丢弃子模块,依据所述匹配关系修改所述数据查询结果的传输标识位,并丢弃数据查询结果中的数据。
本发明的第五方面,提供一种服务器,包括前述的数据场景构造装置。
本说明书的技术方案带能够带来的有益效果包括:
数据场景的构造是响应于业务终端发起的真实构造请求而产生的,无需构建一个始终持续存在的场景源,避免模拟构造数据造成的持续时间不确定、返回时间不确定。同时,数据构造请求是由具有真实数据场景需求的业务终端发起的,在发起请求的数据包和数据库查询的数据包中包含有该业务终端的信息,那么查询过后返回的场景模拟信息也会根据业务终端信息准确地返回至发起请求的业务终端,保证了接收模拟数据场景终端的确定性。
附图说明
为了更清楚地说明本说明书实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书实施例提供的数据场景构造方法场景示意图。
图2是本说明书实施例提供的数据场景构造方法场景示意图。
图3是本说明书实施例提供的数据场景构造方法流程图。
图4是本说明书实施例提供的数据场景构造方法流程图。
图5是本说明书实施例提供的数据场景构造方法流程图。
图6是本说明书实施例提供的数据场景构造方法流程图。
图7是本说明书实施例提供的数据场景构造方法流程图。
图8是本说明书实施例提供的通过回调函数获得信息的网络构架示意图。
图9是本说明书实施例提供的数据场景构造装置结构示意图。
图10是本说明书实施例提供的数据场景构造装置结构示意图。
图11是本说明书实施例提供的数据场景构造装置结构示意图。
图12是本说明书实施例提供的服务器构架示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分的实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
在本说明书的一个实施例中,提供一种数据构造场景。当业务方需要进行数据查询时,向数据库服务器发送数据查询请求,通常数据库会根据数据查询请求中的查询条件进行数据查询,并返回查询得到的结果。然而,在大数据的背景下,为了进行数据测试,需要模拟数据库服务器返回的数据信息,本说明书实施例提供了如下的模拟场景。
在一个实施例中,如图1所示,当需要进行大事务模拟测试时,需要构造一个包含模拟测试数据的场景源,这个场景源可以以数据表的形式存在,这个数据表中的数据可能有上千条甚至更多,并且在模拟过程中持续更新更新整个表,并返回给业务方。这样模拟构成的大事务数据存在如下问题:第一,业务持续的时间是不确定的,可能存在表中的数据发送,但是对应的待测客户端还没有启动的情况,导致其返回的时间与业务执行时间点错开,从而导致最终的测试不成功。第二,在业务侧存在数量众多的终端,而业务方发起方是不确定的,因此无法确定模拟的大事务数据的返回路径,整个过程需要多次执行,持续时间长,并且整个过程中通信信道不可复用。
在一个实施例中,如图2所示,在网络侧设置数据场景构造服务器。当业务侧的某个终端需要对数据场景进行构造时,该终端发起一次业务请求,并在数据库服务器处产生一次真实的查询。利用数据场景构造服务器截获数据库服务器返回的查询结果,对查询结果进行解析,然后对解析结果进行关键字匹配。当关键字匹配结果满足预定条件时,根据需要模拟的网络场景对截获的查询结果进行重构,然后将重构后的结果返回至发起请求的业务方。在图2所展示的系统中,数据场景的构造是响应于业务终端发起的真实构造请求而产生的,如此无需构建一个始终持续存在的场景源,避免模拟构造数据造成的持续时间不确定、返回时间不确定。同时,数据构造请求是由具有真实数据场景需求的业务终端发起的,在发起请求的数据包和数据库查询的数据包中包含有该业务终端的信息,那么查询过后返回的场景模拟信息也会根据业务终端信息准确地返回至发起请求的业务终端,保证了接收模拟数据场景终端的确定性。
在本说明书的一个实施例中,如图3所示,提供一种数据场景构造方法,包括如下步骤:
步骤S110,业务终端向数据库服务器发起数据查询请求。
业务终端是指数据查询请求的发起方,其可以手机、PAD等移动终端、台式终端、服务器等等,本说明书不对其形式加以限制。本步骤中,业务终端通过网络协议以预设的请求格式向数据库服务器发起数据查询请求,请求内容包括但不限于:业务终端的ID信息,业务属性字段,数据场景字段,业务终端网络地址,请求的查询条件,数据库服务器地址等等。
业务终端的ID信息用于标识业务终端的身份信息,可以是业务终端的网络ID,也可以是业务终端硬件信息,可以在网络传输中起到标识作用。
业务属性字段是包含于查询请求中,用于区分一般查询请求和测试查询请求的特定标识位。该标识位可以以诸如布尔类的FLAG形式存在,例如当该标识位被置为1的话,表示查询请求是正常的查询请求。而当该表示位被置0的话,表示查询请求是测试的查询请求,其目的是构造查询场景。该业务标识位可以被后续的数据场景构造服务器读取,并作为后续是否进行数据场景构造的依据。
数据场景字段用于表示所要构造的数据场景类型,例如大事务类型场景、数据传输丢失场景等等,该字段用于与在数据场景构造服务器接收到业务请求后根据字段的内容与预设的数据场景进行匹配,以获得数据场景构造服务器需要构造的场景,进而确定数据场景服务器对所截获数据的重构方式。在某些示例中,业务属性字段与数据场景字段可以通过一个关键字来表示,而某些情况下,这里两个字段分别在数据层和传输层,因此通过两个不同层中的字段表示。
业务终端网络地址,包含业务终端自身的地址信息,随数据查询请求一起发送,当数据库服务器根据查询请求获得查询结果之后,会根据业务终端自身的地址信息,将查询结果返回到业务终端。而在数据场景构造的情况下,数据场景构造服务器会根据业务终端的网络地址将重构后的查询结果返回到业务终端,由此可以实现业务场景构建的单独请求和精确地址匹配。
请求的查询条件,是业务终端发起的查询请求,用于在数据库中获得与请求信息匹配的项目,并作为查询结果返回。
数据库服务器地址,是指业务终端发送查询请求的指定地址。
步骤S120,响应于所述数据查询请求,数据库服务器执行数据查询操作,并返回数据查询结果。
服务器接收到来自业务终端的数据查询请求后,对查询请求的内容进行解析,根据解析后的内容执行查询,返回查询结果。根据网络数据库服务器的数据协议对查询结果进行封装,并将封装后的结果发送至网络层,网络层的数据基于网络通信协议增加头文件后,发往链路层进行传输。
步骤S130,数据场景构造服务器截获所述数据查询结果,当关键字匹配时,依据数据场景重构所述数据查询结果,并向业务需求终端返回所述重构后的查询结果。
正常查询状态下,数据库服务器返回的数据查询结果会被传输到发送查询请求的业务终端。而在场景构造模式下,数据库服务器返回的查询结果则会被数据场景构造服务器截获。
数据场景构造服务器在截获数据库服务器返回的查询结果之后,根据预设的场景模式对所述查询结果进行重构,并将重构后的结果根据数据查询请求中的业务终端地址和业务终端ID等信息返回至业务终端。
在本实施例中,业务终端最终接收经过数据场景构造服务器根据预设场景重构的查询数据,如此能够实现对于数据场景的模拟。在业务终端发送数据查询请求后,数据库服务器随即根据查询请求生成查询结果,并经数据场景构造服务器重构后返回至发起请求的业务终端。在该过程中,不存返回的构造数据时间无法确定的问题,也不存在无法将构造数据返回至指定业务终端的问题。
在本说明书的一个实施例中,如图4所示,提供一种数据场景构造方法,包括如下步骤:
步骤S210,截获来自数据库服务器的查询结果。
数据场景构造服务器在开启监控数据库请求状态后,会持续地截获来自数据库服务器的数据包。而在该过程中,会存在有些数据包并不是针对需要测试的业务终端返回的数据包,如果将来自数据库服务器的数据包全部截获,则会对正常的数据库查询业务造成影响。因此,需要对截获的数据进行判断,只截获与数据库查询结果相关的数据包,而放行其他业务数据包,从而不对其他查询业务造成影响。
步骤S220,解析所述数据查询结果。
在本步骤中的,对数据包进行逐层解析的过程,包括:依据网络传输协议解析所述查询结果的过程是一个对捕获到的数据包按照传输层“剥头”的过程。服务器会将接收到的数据包中的包头按照物理层、链路层、网络层、传输层、应用层的顺序依次剥离在每个层中加入的头文件,并最终获得数据库服务器查询返回的净数据文件。
步骤S230,建立所述解析后的查询结果与预设数据场景之间的匹配关系。
该步骤包括对解析后的查询结果进行关键字匹配。对解析后的查询结果进行关键字匹配是解析后数据的特定字段与预设条件的比对过程。
S240,依据所述匹配关系重构所述数据查询结果。
依据所述匹配关系重构所述数据查询结果,是根据匹配关系确定重构类型的过程。重构包括对查询结果中关键字段以及内容的改变。经过重构后的查询结果即完成了对应数据场景的构造。
S250,向业务需求终端发送所述重构后的数据查询结果。
对重构后的查询结果进行逐层封装,并发送至业务终端,以满足业务终端不同的数据场景需求。
在本说明书的一个实施例中,如图5所示,提供一种数据场景构造方法,包括如下步骤:
步骤S310,截获来自数据库服务器的查询结果。
数据场景构造服务器在开启监控数据库请求状态后,会持续地截获来自数据库服务器的数据包。而在该过程中,会存在有些数据包并不是针对需要测试的业务终端返回的数据包,如果将来自数据库服务器的数据包全部截获,则会对正常的数据库查询业务造成影响。因此,需要对截获的数据进行判断,只截获与数据库查询结果相关的数据包,而放行其他业务数据包,从而不对其他查询业务造成影响。
截获来自数据库服务器的查询结果,如图5所示,可以包含如下子步骤:
步骤S3101,添加数据库监控请求,抓取来自数据库服务器的数据查询结果。数据场景构造服务器,可以添加并开启对数据库服务器的监控请求,抓取来自数据库服务器的数据查询结果包。
步骤S3102,基于第一回调函数返回所述数据查询结果的业务属性字段。
在一个示例中,基于第一回调函数返回所述数据查询结果的业务属性字段之前,还可以对数据包进行解析。解析过程是依据网络传输协议对捕获到的数据包按照传输层“剥头”的过程。而业务属性字段的获取可以通过网络层数据获得或者从数据层数据获得。
步骤S3103,根据所述业务属性字段确定是否截获所述查询结果。
对解析后的数据包文件进行关键字匹配步骤,是判断数据包文件是否是来自数据库服务器的关键步骤。这个匹配过程包括对解析后文件中业务终端的ID信息,特定的业务测试标识位,业务终端网络地址,请求的查询条件,数据库服务器地址等信息中一个或者几个的判断。
如果关键字匹配成功,则判断数据包文件属于数据库服务器响应于业务终端的请求而返回的查询结果。
如果关键字匹配不成功,如果判断数据包文件属于不属于数据库服务器响应于业务终端的请求而返回的查询结果。
对于关键字匹配不成功的情况,为了不影响其他查询业务,转发该数据包。
在一个具体的示例中,对解析后的数据包文件进行关键字匹配可以通过回调函数实现。通过设置一个高优先级的回调函数,此处成为第一回调函数,返回需要匹配的关键字。
步骤S320,解析所述数据查询结果。
在本步骤中的,对数据包进行逐层解析的过程,包括:依据网络传输协议解析所述查询结果的过程是一个对捕获到的数据包按照传输层“剥头”的过程。服务器会将接收到的数据包中的包头按照物理层、链路层、网络层、传输层、应用层的顺序依次剥离在每个层中加入的头文件,并最终获得数据库服务器查询返回的净数据文件。如图6所示,所述解析步骤可以具体包括如下子步骤:
S3201,逐层解析所述数据查询结果。
如上所述,逐层解析是指按照物理层、链路层、网络层、传输层、应用层的顺序将数据查询结果包的头文件剥离。
S3202,存储解析获得的数据文件。
而通过存储解析后的数据文件,可以获得某些层的关键数据,例如业务终端的ID信息,业务属性字段,数据场景字段,业务终端网络地址,请求的查询条件,数据库服务器地址、数据场景构造字段等等。
步骤S330,建立所述解析后的查询结果与预设数据场景之间的匹配关系。
该步骤包括对解析后的查询结果进行关键字匹配。对解析后的查询结果进行关键字匹配是解析后数据的特定字段与预设条件的比对过程。如图7所示,该步骤可以分为如下子步骤:
步骤S3301,基于第二回调函数返回数据场景构造字段。
在本步骤中,可以基于优先级略低的第二回调函数返回数据场景构造字段。利用回调函数返回查询结果,可以在对查询结果解析的同时获得数据场景的构造字段,同时不会影响查询数据本身的数据结构。
步骤S3302,建立所述数据场景构造字段与预设数据场景之间的匹配关系。
在第二回调函数返回数据场景构造字段之后,即可建立数据场景构造字段与预设数据场景之间的匹配关系。预设场景包括但是不限于大事务、主副数据库的复制和备份事务。
在一个具体的示例中,需要为测试的业务终端构造一个查询存在大事务的场景。而在数据库服务器返回的查询数据中,存在特定的字段表示目前查询返回的结果为大事务。例如,查询结果information_schema.innodb_trx中trx_rows_locked字段记录了事务锁住的记录数。单个事务锁住记录数操作x条,认为此事务为一个大事务。那么在进行关键字匹配时,只需要匹配查询information_schema.innodb_trx表数据,当出现trx_rows_locked字段锁住的记录数操作数大于x条时;或者,匹配查询information_schema.innodb_trx表数据中,锁住事务数超过x条的字段数目大于0时,认为存在大事务。
在一个具体的实例中,可以通过Netfilter技术来实现对于数据的截获,或者利用Netfilter结合iptables实现在网络层对于数据字段的读取操作。如图8所示,利用Netfilter结合iptable可以在数据的网络层(IP)层设置回调函数,进而从改成获得回调信息。回调信息包括前述的业务终端的ID信息,业务属性字段,数据场景字段,业务终端网络地址,请求的查询条件,数据库服务器地址、数据场景构造字段信息。当然图8只是示例性的,根据网络协议可以通过回调函数获得不同网络层的数据。
在一些具体的示例中,对解析后的查询结果进行关键字匹配过程可以通过回调函数来实现。具体地,通过设置一个次优先级的回调函数,返回查询结果中的特定字段或者特定字段的个数,例如trx_rows_locked字段锁住的记录数操作数条数,或者锁住事务数超过x条的字段数目。
在另一个具体的示例中,主数据库和备份数据库进行复制时,备份数据库的IO线程(IO_thread)会读取主数据库日志文件(binlog)并将其写入备份数据库的日志文件(relay_log)。当主数据库上生成一个新的事务时,备机IO线程会通过网络读取新事务,事务包括至少包括三个事件event(BEGIN,DATA,COMMIT),当事务较大时需要多个网络数据包传输,容易出现事务不完整的情况。因此,当需要构造备份数据库上日志记录的最后一个事务不完整的场景时,首先进行关键字匹配,找出BEGIN event事件。
在一个具体的示例中,需要为测试的业务终端构造一个查询存在大事务的场景。那么在进行关键字匹配时,出现trx_rows_locked字段锁住的记录数操作数小于x条;或者,匹配查询information_schema.innodb_trx表数据中,锁住事务数超过x条的字段数目等于0。此时认定,目前捕获的数据包返回结果不包含大实务场景,而出于对大事务数据场景的模拟,会对数据进行篡改,将trx_rows_locked字段锁住的记录数操作数篡改为大于x条,或者将锁住事务数超过x条的字段数目篡改为大于0。篡改后数据会被业务终端识别为大事务,从而通过篡改数据的方式实现对大事务数据场景的重构。当然,篡改也不限于trx_rows_locked字段,根据不同的数据结构可以对其他实现相同功能的数据进行篡改。
在另一个具体的示例中,需要构造备份数据库上日志记录的最后一个事务不完整的数据场景。此时,可以在业务终端发起业务请求时,通过设置业务属性字段、数据场景字段来设定数据构造服务器所要构造的数据类型。在数据构造服务器截获数据库返回的数据包之后,就会对数据包的内容进行解析,根据业务属性字段、数据来源等判断是否对数据包进行截获,再根据数据场景字段匹配需要进行重构的数据场景类型。例如,需要重构主副服务器备份数据的完整问题时,通过关键词匹配或者回调函数找出BEGIN event事件,由于需要构造备份服务器的日志文件最后一个事务不完整的场景,此时无论真实数据是否完整,首先将BEGIN记为已经传输,然后丢弃BEGIN event后续的网络数据包。丢弃后续网络数据包后,无论原始数据是否完整,BEGIN event都被构造成为备份数据库上日志记录的最后一个事务不完整的数据场景。即,通过对数据的丢弃可以实现对于数据库服务器返回的结构进行重构,以使其符合预设的数据场景。
在一个具体的实例中,可以通过Netfilter技术来实现对于数据的截获,或者利用Netfilter结合iptables实现在网络层对于数据字段的读取操作。如图
在一个具体的示例中,对解析后的查询结果进行关键字匹配过程可以通过回调函数来实现。例如,使用回调函数来返回当前场景中是否包含BEGIN event事件。
总之,回调函数用于反馈当前的业务状态,例如,当前事务是否属于大事务,当前事务中是否包含BEGIN event事件。
步骤S3303,当关键字匹配不成功时,则保持所述查询结果。
关键字匹配不成功是指,解析后数据的特定字段与预设条件不存在相互匹配的情形。
例如,在进行关键字匹配时,出现trx_rows_locked字段锁住的记录数操作数大于x条;或者,匹配查询information_schema.innodb_trx表数据中,锁住事务数超过x条的字段数目大于0的情况。在这种情况下,查询数据本身就符合大事务场景的要求,所以无需对数据进行重构,保持所述查询结果。
在关键字匹配不成功情况下,重构过程不再对查询结果进行其它操作。
步骤S340,依据所述匹配关系重构所述数据查询结果。
如在步骤S330中描述的实例,依据所述匹配关系篡改所述数据查询结果中的事务数目字段。
依据所述匹配关系修改所述数据查询结果的传输标识位,并丢弃数据查询结果中的数据。
步骤S350,向业务需求终端发送所述重构后的数据查询结果。
对重构后的查询结果进行逐层封装,并发送至业务终端,以满足业务终端不同的数据场景需求。如图9所示,该步骤可以分为如下子步骤:
S3501,依据网络传输协议对重构后的查询结果进行封装。
对查询结果进行封装是对数据进行解析的逆过程,这个过程中对查询进过逐“加头”。服务器会对重构后的净数据文件按照应用层、传输层、网络层、链路层、物理层的顺序逐层增加头文件,最终形成可以在服务器和终端之间传输文件。
S3502,依据网络传输协议传输所述文件。
最后,将封装后的文件按照截获文件中所记录地址发送至业务终端,从而实现对于业务终端所需求数据场景的构建。
在本说明书的一个实施例中,如图10所示,提供一种数据场景构造装置,用于执行步骤S210-步骤S250的方法,包括如下模块:
截获模块,用于截获来自数据库服务器的查询结果。
数据场景构造服务器在开启监控数据库请求状态后,会持续地截获来自数据库服务器的数据包。而在该过程中,会存在有些数据包并不是针对需要测试的业务终端返回的数据包,如果将来自数据库服务器的数据包全部截获,则会对正常的数据库查询业务造成影响。因此,需要对截获的数据进行判断,只截获与数据库查询结果相关的数据包,而放行其他业务数据包,从而不对其他查询业务造成影响。
解析模块,用于解析所述数据查询结果。
该模块用于对数据包进行逐层解析,包括:依据网络传输协议解析所述查询结果的过程是一个对捕获到的数据包按照传输层“剥头”的过程。服务器会将接收到的数据包中的包头按照物理层、链路层、网络层、传输层、应用层的顺序依次剥离在每个层中加入的头文件,并最终获得数据库服务器查询返回的净数据文件。
匹配模块,用于建立所述解析后的查询结果与预设数据场景之间的匹配关系。
包括对解析后的查询结果进行关键字匹配。对解析后的查询结果进行关键字匹配是解析后数据的特定字段与预设条件的比对过程。
重构模块,用于依据所述匹配关系重构所述数据查询结果。
依据所述匹配关系重构所述数据查询结果,是根据匹配关系确定重构类型的过程。重构包括对查询结果中关键字段以及内容的改变。经过重构后的查询结果即完成了对应数据场景的构造。
发送模块,用于向业务需求终端发送所述重构后的数据查询结果。
对重构后的查询结果进行逐层封装,并发送至业务终端,以满足业务终端不同的数据场景需求。
在本说明书的一个实施例中,如图11所示,提供一种数据场景构造装置,用于执行步骤S310-步骤S350的方法,包括如下模块:
截获模块,用于截获来自数据库服务器的数据查询结果。数据场景构造服务器在开启监控数据库请求状态后,会持续地截获来自数据库服务器的数据包。而在该过程中,会存在有些数据包并不是针对需要测试的业务终端返回的数据包,如果将来自数据库服务器的数据包全部截获,则会对正常的数据库查询业务造成影响。因此,需要对截获的数据进行判断,只截获与数据库查询结果相关的数据包,而放行其他业务数据包,从而不对其他查询业务造成影响。所述截获模块包含如下子模块:
抓取子模块,用于抓取来自数据库服务器的数据查询结果。数据场景构造服务器,可以添加并开启对数据库服务器的监控请求,抓取来自数据库服务器的数据查询结果包。
业务属性字段获取子模块,基于第一回调函数返回所述数据查询结果的业务属性字段。在一个示例中,基于第一回调函数返回所述数据查询结果的业务属性字段之前,还可以对数据包进行解析。解析过程是依据网络传输协议对捕获到的数据包按照传输层“剥头”的过程。而业务属性字段的获取可以通过网络层数据获得或者从数据层数据获得。
判断子模块,用于根据所述业务属性字段确定是否截获所述查询结果。对解析后的数据包文件进行关键字匹配步骤,是判断数据包文件是否是来自数据库服务器的关键步骤。这个匹配过程包括对解析后文件中业务终端的ID信息,特定的业务测试标识位,业务终端网络地址,请求的查询条件,数据库服务器地址等信息中一个或者几个的判断。如果关键字匹配成功,则判断数据包文件属于数据库服务器响应于业务终端的请求而返回的查询结果。如果关键字匹配不成功,如果判断数据包文件属于不属于数据库服务器响应于业务终端的请求而返回的查询结果。对于关键字匹配不成功的情况,为了不影响其他查询业务,转发该数据包。在一个具体的示例中,对解析后的数据包文件进行关键字匹配可以通过回调函数实现。通过设置一个高优先级的回调函数,此处成为第一回调函数,返回需要匹配的关键字。
解析模块,用于解析所述数据查询结果。对数据包进行逐层解析的过程,包括:依据网络传输协议解析所述查询结果的过程是一个对捕获到的数据包按照传输层“剥头”的过程。服务器会将接收到的数据包中的包头按照物理层、链路层、网络层、传输层、应用层的顺序依次剥离在每个层中加入的头文件,并最终获得数据库服务器查询返回的净数据文件。所述解析模块,包含如下子模块:
逐层解析子模块,用于逐层解析所述数据查询结果。逐层解析是指按照物理层、链路层、网络层、传输层、应用层的顺序将数据查询结果包的头文件剥离。
存储子模块,存储所述逐层解析获得的数据文件。通过存储解析后的数据文件,可以获得某些层的关键数据,例如业务终端的ID信息,业务属性字段,业务终端网络地址,请求的查询条件,数据库服务器地址、数据场景构造字段等等。
匹配模块,用于建立所述解析后的查询结果与预设数据场景之间的匹配关系。对解析后的查询结果进行关键字匹配是解析后数据的特定字段与预设条件的比对过程。所述匹配模块,包含如下子模块:
数据场景构造字段获取子模块,用于基于第二回调函数返回数据场景构造字段。
匹配关系建立子模块,用于建立所述数据场景构造字段与预设数据场景之间的匹配关系。
重构模块,用于依据所述匹配关系重构所述数据查询结果。所述重构模块,至少包含如下子模块:
篡改子模块,用于依据所述匹配关系篡改所述数据查询结果中的事务数目字段。
丢弃子模块,依据所述匹配关系修改所述数据查询结果的传输标识位,并丢弃数据查询结果中的数据。
发送模块,用于向业务需求终端发送所述重构后的数据查询结果。
上述模块可以用于执行如下操作:
在一个具体的示例中,需要为测试的业务终端构造一个查询存在大事务的场景。而在数据库服务器返回的查询数据中,存在特定的字段表示目前查询返回的结果为大事务。例如,查询结果information_schema.innodb_trx中trx_rows_locked字段记录了事务锁住的记录数。单个事务锁住记录数操作x条,认为此事务为一个大事务。那么在进行关键字匹配时,只需要匹配查询information_schema.innodb_trx表数据,当出现trx_rows_locked字段锁住的记录数操作数大于x条时;或者,匹配查询information_schema.innodb_trx表数据中,锁住事务数超过x条的字段数目大于0时,认为存在大事务。
在一些具体的示例中,对解析后的查询结果进行关键字匹配过程可以通过回调函数来实现。具体地,通过设置一个次优先级的回调函数,返回查询结果中的特定字段或者特定字段的个数,例如trx_rows_locked字段锁住的记录数操作数条数,或者锁住事务数超过x条的字段数目。
在另一个具体的示例中,主数据库和备份数据库进行复制时,备份数据库的IO线程(IO_thread)会读取主数据库日志文件(binlog)并将其写入备份数据库的日志文件(relay_log)。当主数据库上生成一个新的事务时,备机IO线程会通过网络读取新事务,事务包括至少包括三个事件event(BEGIN,DATA,COMMIT),当事务较大时需要多个网络数据包传输,容易出现事务不完整的情况。因此,当需要构造备份数据库上日志记录的最后一个事务不完整的场景时,首先进行关键字匹配,找出BEGIN event事件。
在一个具体的示例中,需要为测试的业务终端构造一个查询存在大事务的场景。那么在进行关键字匹配时,出现trx_rows_locked字段锁住的记录数操作数小于x条;或者,匹配查询information_schema.innodb_trx表数据中,锁住事务数超过x条的字段数目等于0。此时认定,目前捕获的数据包返回结果不包含大实务场景,而出于对大事务数据场景的模拟,会对数据进行篡改,将trx_rows_locked字段锁住的记录数操作数篡改为大于x条,或者将锁住事务数超过x条的字段数目篡改为大于0。篡改后数据会被业务终端识别为大事务,从而通过篡改数据的方式实现对大事务数据场景的重构。当然,篡改也不限于trx_rows_locked字段,根据不同的数据结构可以对其他实现相同功能的数据进行篡改。
在另一个具体的示例中,需要构造备份数据库上日志记录的最后一个事务不完整的数据场景。那么通过关键词匹配或者回调函数找出BEGIN event事件,由于需要构造备份服务器的日志文件最后一个事务不完整的场景,此时无论真实数据是否完整,首先将BEGIN记为已经传输,然后丢弃BEGIN event后续的网络数据包。丢弃后续网络数据包后,无论原始数据是否完整,BEGIN event都被构造成为备份数据库上日志记录的最后一个事务不完整的数据场景。即,通过对数据的丢弃可以实现对于数据库服务器返回的结构进行重构,以使其符合预设的数据场景。
在一个具体的示例中,对解析后的查询结果进行关键字匹配过程可以通过回调函数来实现。例如,使用回调函数来返回当前场景中是否包含BEGIN event事件。
总之,回调函数用于反馈当前的业务状态,例如,当前事务是否属于大事务,当前事务中是否包含BEGIN event事件。
请参考图12,其示出了本发明一个实施例提供的服务器的结构示意图。该服务器用于实施上述实施例中提供的后台服务器侧的数据查询方法。具体来讲:所述服务器结构可以包括上述测试数据处理装置。该服务器800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)822(例如,一个或一个以上处理器)和存储器832,一个或一个以上存储应用程序842或数据844的存储介质830(例如一个或一个以上海量存储设备)。其中,存储器832和存储介质830可以是短暂存储或持久存储。存储在存储介质830的程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器822可以设置为与存储介质830通信,在服务器800上执行存储介质830中的一系列指令操作。服务器800还可以包括一个或一个以上电源826,一个或一个以上有线或无线网络接口850,一个或一个以上输入输出接口858,和/或,一个或一个以上操作系统841,例如Windows ServerTM,Mac OSXTM,UnixTM,LinuxTM,FreeBSDTM等等。上述方法实施例所执行的步骤可以基于该图11所示的服务器结构。
本发明的实施例还提供了一种存储介质,所述存储介质可用于保存用于实现方法实施例中数据处理方法的程序代码。可选地,在本实施例中,上述存储介质可以位于计算机网络的多个网络设备中的至少一个网络设备。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
根据本发明的各种实施例,所述服务器还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器可以通过连接在所述系统总线上的网络接口单元连接到网络,或者说,也可以使用网络接口单元来连接到其他类型的网络或远程计算机系统(未示出)。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由终端的处理器执行以完成上述方法实施例中发送方客户端或接收方客户端侧的各个步骤,或者上述指令由服务器的处理器执行以完成上述方法实施例中后台服务器侧的各个步骤。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。上述一个或者一个以上程序包含用于执行上述数据场景构建方法的指令,包括:
截获来自数据库服务器的数据查询结果;
解析所述数据查询结果;
建立所述解析后的查询结果与预设数据场景之间的匹配关系;
依据所述匹配关系重构所述数据查询结果;
向业务需求终端发送所述重构后的数据查询结果。
应当理解的是,在本实施例中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以+通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种数据场景构造方法,其特征在于,所述方法包括:
业务终端向数据库服务器发起数据查询请求;
响应于所述数据查询请求,数据库服务器执行数据查询操作,并返回数据查询结果;
数据场景构造服务器截获所述数据查询结果,当关键字匹配时,建立解析后的查询结果与预设数据场景之间的匹配关系,依据所述匹配关系重构所述数据查询结果,并向业务需求终端返回所述重构后的查询结果;其中,所述重构包括对查询结果中关键字段以及内容的改变,所述重构后的查询结果为依据匹配关系重构的数据查询结果,所述匹配关系为解析后的数据查询结果与预设数据场景之间的匹配关系;所述依据所述匹配关系重构所述数据查询结果包括:依据所述匹配关系篡改所述数据查询结果中的事务数目字段,以使篡改后数据被所述业务终端识别为所述预设数据场景中所述匹配结果对应的数据场景,或者,依据所述匹配关系修改所述数据查询结果的传输标识位,并丢弃数据查询结果中的数据。
2.一种数据场景构造方法,其特征在于,所述方法包括:
截获来自数据库服务器的数据查询结果;所述数据查询结果为所述数据库服务器响应于业务终端发送的数据查询请求,执行数据查询操作,返回的查询结果;
解析所述数据查询结果;
建立所述解析后的查询结果与预设数据场景之间的匹配关系;
依据所述匹配关系重构所述数据查询结果;其中,所述重构包括对查询结果中关键字段以及内容的改变;所述依据所述匹配关系重构所述数据查询结果包括:依据所述匹配关系篡改所述数据查询结果中的事务数目字段,以使篡改后数据被所述业务终端识别为所述预设数据场景中所述匹配结果对应的数据场景,或者,依据所述匹配关系修改所述数据查询结果的传输标识位,并丢弃数据查询结果中的数据;
向业务需求终端发送所述重构后的数据查询结果。
3.根据权利要求2所述方法,其特征在于,所述截获来自数据库服务器的数据查询结果步骤包括:
抓取来自数据库服务器的数据查询结果;
基于第一回调函数返回所述数据查询结果的业务属性字段;
根据所述业务属性字段确定是否截获所述查询结果。
4.根据权利要求2所述方法,其特征在于,所述解析所述数据查询结果步骤包括:
逐层解析所述数据查询结果;
存储解析获得的数据文件。
5.根据权利要求2所述方法,其特征在于,对所述解析后的查询结果进行场景关键字匹配步骤包括:
基于第二回调函数返回数据场景构造字段;
建立所述数据场景构造字段与预设数据场景之间的匹配关系。
6.一种数据场景构造系统,其特征在于,所述系统包括:
业务终端,用于向数据库服务器发起数据查询请求;
数据库服务器,用于响应所述数据查询请求,执行数据查询操作,并返回数据查询结果;
数据场景构造服务器,用于截获并解析所述数据查询结果;建立所述解析后的查询结果与预设数据场景之间的匹配关系;依据所述匹配关系重构所述数据查询结果,并向业务需求终端发送所述重构后的数据查询结果;其中,所述重构包括对查询结果中关键字段以及内容的改变,所述重构后的查询结果为依据匹配关系重构的数据查询结果,所述匹配关系为解析后的数据查询结果与预设数据场景之间的匹配关系;所述依据所述匹配关系重构所述数据查询结果包括:依据所述匹配关系篡改所述数据查询结果中的事务数目字段,以使篡改后数据被所述业务终端识别为所述预设数据场景中所述匹配结果对应的数据场景,或者,依据所述匹配关系修改所述数据查询结果的传输标识位,并丢弃数据查询结果中的数据。
7.一种数据场景构造装置,其特征在于,所述装置包括:
截获模块,用于截获来自数据库服务器的数据查询结果;所述数据查询结果为所述数据库服务器响应于业务终端发送的数据查询请求,执行数据查询操作,返回的查询结果;
解析模块,用于解析所述数据查询结果;
匹配模块,用于建立所述解析后的查询结果与预设数据场景之间的匹配关系;
重构模块,用于依据所述匹配关系重构所述数据查询结果;其中,所述重构包括对查询结果中关键字段以及内容的改变;
发送模块,用于向业务需求终端发送所述重构后的数据查询结果;
其中,所述重构模块包括篡改子模块或丢弃子模块;所述篡改子模块用于依据所述匹配关系篡改所述数据查询结果中的事务数目字段,以使篡改后数据被所述业务终端识别为所述预设数据场景中所述匹配结果对应的数据场景,所述丢弃子模块用于依据所述匹配关系修改所述数据查询结果的传输标识位,并丢弃数据查询结果中的数据。
8.根据权利要求7所述的装置,其特征在于,所述截获模块包括:
抓取子模块,用于抓取来自数据库服务器的数据查询结果;
业务属性字段获取子模块,用于基于第一回调函数返回所述数据查询结果的业务属性字段;
判断子模块,用于根据所述业务属性字段确定是否截获所述查询结果。
9.根据权利要求7所述的装置,其特征在于,所述解析模块包括:
逐层解析子模块,用于逐层解析所述数据查询结果;
存储子模块,存储所述逐层解析获得的数据文件。
10.根据权利要求7所述的装置,其特征在于,所述匹配模块包括:
数据场景构造字段获取子模块,用于基于第二回调函数返回数据场景构造字段;
匹配关系建立子模块,用于建立所述数据场景构造字段与预设数据场景之间的匹配关系。
11.一种服务器,其特征在于,包括权利要求7-10任一所述的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810164861.1A CN110196862B (zh) | 2018-02-27 | 2018-02-27 | 一种数据场景构造方法、装置、服务器与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810164861.1A CN110196862B (zh) | 2018-02-27 | 2018-02-27 | 一种数据场景构造方法、装置、服务器与系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110196862A CN110196862A (zh) | 2019-09-03 |
CN110196862B true CN110196862B (zh) | 2023-07-11 |
Family
ID=67750980
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810164861.1A Active CN110196862B (zh) | 2018-02-27 | 2018-02-27 | 一种数据场景构造方法、装置、服务器与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110196862B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105488223A (zh) * | 2015-12-28 | 2016-04-13 | 中国民航信息网络股份有限公司 | 业务数据事件的分析订阅方法及系统 |
EP3026563A1 (fr) * | 2014-11-25 | 2016-06-01 | Bull S.A.S. | Methodes et systemes de generation de scenarios de tests de performances d'une application serveur |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346154B (zh) * | 2013-07-31 | 2017-05-17 | 克拉玛依红有软件有限责任公司 | 基于情景的业务驱动模型构建方法 |
US20160301732A1 (en) * | 2015-04-13 | 2016-10-13 | Cloudy Days Inc. Dba Nouvola | Systems and Methods for Recording and Replaying of Web Transactions |
CN106897280B (zh) * | 2015-12-17 | 2020-07-14 | 菜鸟智能物流控股有限公司 | 数据查询方法及装置 |
CN106933875B (zh) * | 2015-12-31 | 2021-01-26 | 北京城市网邻信息技术有限公司 | 数据查询方法及装置 |
US10579033B2 (en) * | 2016-01-17 | 2020-03-03 | Indegy Ltd. | Reconstructing user-level information from intercepted communication-protocol primitives |
KR101883185B1 (ko) * | 2016-08-09 | 2018-07-30 | 주식회사 피노텍 | 머신러닝을 활용한 정해진 시나리오로 고객과 상담하는 로봇 자동 상담 방법 및 시스템 |
CN107133300A (zh) * | 2017-04-27 | 2017-09-05 | 福建中金在线信息科技有限公司 | 一种数据查询方法及装置 |
-
2018
- 2018-02-27 CN CN201810164861.1A patent/CN110196862B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3026563A1 (fr) * | 2014-11-25 | 2016-06-01 | Bull S.A.S. | Methodes et systemes de generation de scenarios de tests de performances d'une application serveur |
CN105488223A (zh) * | 2015-12-28 | 2016-04-13 | 中国民航信息网络股份有限公司 | 业务数据事件的分析订阅方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110196862A (zh) | 2019-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111752799A (zh) | 一种业务链路跟踪方法、装置、设备及储存介质 | |
US11190390B2 (en) | Alarm information processing method and apparatus, system, and computer storage medium | |
CN111459760B (zh) | 一种微服务监控方法、装置及计算机存储介质 | |
CN110932918B (zh) | 日志数据采集方法、装置及存储介质 | |
CN114647698A (zh) | 数据同步方法、装置及计算机存储介质 | |
CN112256682A (zh) | 一种多维异构数据的数据质量检测方法及装置 | |
CN112363838A (zh) | 数据处理方法及装置、存储介质、电子装置 | |
CN112491990A (zh) | 混合云网络数据传输方法、装置、电子设备及存储介质 | |
CN109214189B (zh) | 识别程序漏洞的方法、装置、存储介质和电子设备 | |
CN110196862B (zh) | 一种数据场景构造方法、装置、服务器与系统 | |
CN115328734A (zh) | 跨服务的日志处理方法、装置及服务器 | |
CN113965447B (zh) | 一种在线云诊断方法、装置、系统、设备及存储介质 | |
WO2021128936A1 (zh) | 报文的处理方法及装置 | |
CN111182047B (zh) | 用于在跨网络的大数据平台之间转移文件的方法和系统 | |
CN114928530B (zh) | 链路信息采集方法及相关装置 | |
CN113986955B (zh) | 业务链的确定方法、装置、电子设备及介质 | |
CN114265739A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN117078261A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN115766532A (zh) | 链路的监测方法、装置、存储介质及电子装置 | |
CN118041824A (zh) | 测试旁路镜像功能的方法、装置、电子设备及存储介质 | |
CN114969096A (zh) | 报文解析方法、装置、电子设备和存储介质 | |
CN117369907A (zh) | 一种数据处理方法、装置、存储介质及设备 | |
CN117376411A (zh) | 信息推送方法、装置、系统、计算机设备和存储介质 | |
CN113434367A (zh) | 数据监控方法及装置、存储介质、电子装置 | |
CN116599868A (zh) | 一种测试的处理方法、装置、服务器及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |