CN113254470A - 一种数据更改方法、装置、计算机设备及存储介质 - Google Patents

一种数据更改方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN113254470A
CN113254470A CN202110588712.XA CN202110588712A CN113254470A CN 113254470 A CN113254470 A CN 113254470A CN 202110588712 A CN202110588712 A CN 202110588712A CN 113254470 A CN113254470 A CN 113254470A
Authority
CN
China
Prior art keywords
data
data request
target
keyword
request
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.)
Granted
Application number
CN202110588712.XA
Other languages
English (en)
Other versions
CN113254470B (zh
Inventor
王博
朱道坤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Yuexuebang Network Technology Co Ltd
Original Assignee
Wuhan Yuexuebang Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Yuexuebang Network Technology Co Ltd filed Critical Wuhan Yuexuebang Network Technology Co Ltd
Priority to CN202110588712.XA priority Critical patent/CN113254470B/zh
Publication of CN113254470A publication Critical patent/CN113254470A/zh
Application granted granted Critical
Publication of CN113254470B publication Critical patent/CN113254470B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开提供了一种数据更改方法、装置、计算机设备及存储介质,其中,该数据更改方法包括:拦截主进程接收到的数据请求;基于所述数据请求,确定是否需要对与所述数据请求对应的原始SQL语句中的、目标关键词进行更改;当确定需要对所述目标关键词进行更改时,基于预先设定的更改规则对所述目标关键词进行更改。本公开实施例在将Java系统用于不同的场景下时,可以不对Java系统的程序代码进行更改,即可以通过本方案实现利用Java系统中的相同原始SQL语句对不同数据的更改操作,提升Java系统的复用性。

Description

一种数据更改方法、装置、计算机设备及存储介质
技术领域
本公开涉及软件技术领域,具体而言,涉及一种数据更改方法、装置、计算机设备及存储介质。
背景技术
结构化查询语言(Structured Query Language,SQL)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。Java数据库连接(JavaDataBase Connectivity,JDBC)可以通过执行SQLSQL语句完成数据查询等工作,此外,还可以应用SQL语句在数据更改、例如数据增删、修改等方面。
SQLSQL语句通常通过编码的方式被记录在Java系统的程序代码中,一旦需要对SQLSQL语句进行更改,则需要对程序代码进行调整,导致Java系统的复用性较差。
发明内容
本公开实施例至少提供一种数据更改方法、装置、计算机设备及存储介质。
第一方面,本公开实施例提供了一种数据更改方法,所述数据更改方法包括:
拦截主进程接收到的数据请求;
基于所述数据请求,确定是否需要对与所述数据请求对应的原始SQL语句中的、目标关键词进行更改;
当确定需要对所述目标关键词进行更改时,基于预先设定的更改规则对所述目标关键词进行更改。
这样,可以基于数据请求,对原始SQL语句中的目标关键词进行更改,无需对Java系统的程序代码进行调整,提高Java系统的复用性。
一种可选的实施方式中,所述基于所述数据请求,确定是否需要对与所述数据请求对应的原始SQL语句中的、目标关键词进行更改,包括:
对所述数据请求进行解析,并基于解析结果,确定所述数据请求中是否携带有结果关键词;
在所述数据请求中携带所述结果关键词时,确定需要对所述目标关键词进行修改。
这样,可以判断是否需要对原始SQL语句中的目标关键词进行更改,避免在无需更改时的更改操作。
一种可选的实施方式中,所述基于解析结果,确定所述数据请求中是否携带有结果关键词,包括:
基于所述解析结果,确定所述数据请求中的目标字段是否包含标识信息;
在所述目标字段包含标识信息的情况下,则确定所述数据请求中携带有所述更改标识。
一种可选的实施方式中,所述基于预先设定的更改规则对所述目标关键词进行更改,包括:
基于所述更改规则,从所述数据请求中确定目标关键词以及结果关键词,并将所述目标关键词修改为所述结果关键词;或者,
基于所述更改规则中规定的更改策略,将所述目标关键词更改为满足所述更改策略的结果关键词。
一种可选的实施方式中,所述拦截主进程接收到的数据请求,包括:
拦截主进程接收到的数据查询请求、数据存取请求、数据更新请求、数据管理请求中的至少一种。
一种可选的实施方式中,所述数据请求包括:超文本传输协议HTTP请求;
所述目标字段包括:所述HTTP请求的标头Header。
一种可选的实施方式中,所述确定所述数据请求中的目标字段是否包含标识信息,包括:
确定所述数据请求中的目标字段不为空;或者,
确定所述数据请求中的目标字段为空。
第二方面,本公开实施例提供了一种数据更改装置,所述数据更改装置包括:
拦截模块,用于拦截主进程接收到的数据请求;
确定模块,用于基于所述数据请求,确定是否需要对与所述数据请求对应的原始SQL语句中的、目标关键词进行更改;
更改模块,用于当确定需要对所述目标关键词进行更改时,基于预先设定的更改规则对所述目标关键词进行更改。
一种可选的实施方式中,所述确定模块包括:
第一确定单元,用于对所述数据请求进行解析,并基于解析结果,确定所述数据请求中是否携带有结果关键词;
第二确定单元,用于在所述数据请求中携带所述结果关键词时,确定需要对所述目标关键词进行修改。
一种可选的实施方式中,所述第一确定单元具体用于:
基于所述解析结果,确定所述数据请求中的目标字段是否包含标识信息;
在所述目标字段包含标识信息的情况下,则确定所述数据请求中携带有所述更改标识。
一种可选的实施方式中,所述更改模块具体用于:
基于所述更改规则,从所述数据请求中确定目标关键词以及结果关键词,并将所述目标关键词修改为所述结果关键词;或者,
基于所述更改规则中规定的更改策略,将所述目标关键词更改为满足所述更改策略的结果关键词。
一种可选的实施方式中,所述拦截模块具体用于:
拦截主进程接收到的数据查询请求、数据存取请求、数据更新请求、数据管理请求中的至少一种。
一种可选的实施方式中,所述数据请求包括:超文本传输协议HTTP请求;
所述目标字段包括:所述HTTP请求的标头Header。
一种可选的实施方式中,所述第一确定单元具体用于:
确定所述数据请求中的目标字段不为空;或者,
确定所述数据请求中的目标字段为空。
第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
本公开实施例提供的一种数据更改方法、装置、计算机设备及存储介质,基于拦截主进程接收到的数据请求,确定是否需要对与所述数据请求对应的原始SQL语句中的、目标关键词进行更改,并在需要对目标关键词进行更改时,基于预先设定的更改规则对所述目标关键词进行更改。这样,在将Java系统用于不同的场景下时,可以不对Java系统的程序代码进行更改,即可以通过本方案实现利用Java系统中的相同原始SQL语句对不同数据进行更改,提升Java系统的复用性。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种数据更改方法的流程图;
图2示出了本公开实施例所提供的数据更改方法的流程示意图;
图3示出了本公开实施例所提供的一种数据更改装置的示意图;
图4示出了本公开实施例所提供的数据更改装置中,确定模块的具体示意图;
图5示出了本公开实施例所提供的一种计算机设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
经研究发现,在由Java构成的业务系统(以下简称Java系统)中,通常会涉及到利用JDBC来进行数据更改的操作。更改所需要的SQL语句通常通过硬编码(Hard coding)的方式写入Java系统的程序代码中;一旦需要对Java系统中的SQL语句进行更新(为Java系统增加新的业务逻辑,或者更改Java系统的原有业务逻辑),或者将Java系统应用于其他的业务中(不同的业务系统具有不同的业务执行逻辑,因此需要针对不同的Java系统,针对性的设置SQL语句),就需要对Java系统的程序代码进行更改,导致当前的Java系统存在复用性差的问题。
另外,由于要对Java系统的程序代码进行更改,这就需要耗费大量的时间成本和人力成本对Java系统进行更新。
基于上述研究,本公开提供了一种数据更改方法,通过拦截主进程接收到的数据请求,确定是否需要对与所述数据请求对应的原始SQL语句中的、目标关键词进行更改,并在需要对目标关键词进行更改时,基于预先设定的更改规则对所述目标关键词进行更改。这样,在将Java系统用于不同的场景下时,可以不对Java系统的程序代码进行更改,即可以通过本方案实现利用Java系统中的相同原始SQL语句对不同数据进行更改,提升Java系统的复用性。。
另外,本公开实施例可以通过调整数据请求的方式,来动态控制对原始SQL语句进行修改,因此,即使要对Java系统进行更新,或者将Java系统用于其他的业务中,也不需要对Java系统的程序代码进行更改,因此消耗的人力和时间成本也更少。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种数据更改方法进行详细介绍,本公开实施例所提供的数据更改方法的执行主体一般为具有一定计算能力的计算机设备,该计算设备与执行主进程的计算机可以分别单独设置,也可以集成一体。该计算机设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为用户设备(UserEquipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(PersonalDigital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该数据更改方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
参见图1所示,为本公开实施例提供的一种数据更改方法的流程图,所述数据更改方法包括步骤S101~S104,其中:
S101:拦截主进程接收到的数据请求。
其中,所述数据请求可以为其他用户(如终端、进程、应用程序等)通过HTTP数据请求接口下发的HTTP数据请求。该数据请求中包括目标字段,所述目标字段可以为HTTP请求中的标头(Header)位置,还可以为除Header之外的其他位置,在此不再赘述。
所述主进程可以为Java系统中执行数据操作的Java虚拟机(Java VirtualMachine,JVM)。
具体的,当执行所述数据更改方法的执行主体为硬件时,可为独立于执行主进程的计算机而设置的计算机设备、或者与所述计算机集成在一起的计算机设备;当执行所述数据更改方法的执行主体为软件程序时,可为独立于主进程对应模块的代理模块,例如Agent模块,其可作为一个独立的插件无感知的进行主进程数据请求的拦截,而不会对主进程造成任何干扰,从而提升了普适性和复用性,对此不做赘述。
具体的,Agent模块可被作为一段程序,配置到相应的U盘、光盘、或者云存储空间中,在需要进行数据更改时,可以直接启动使用;在不需要时,可以卸载或者关闭即可,对此不做赘述。
在本公开另一实施例中,所述拦截主进程接收到的数据请求,包括:
拦截主进程接收到的数据查询请求、数据存取请求、数据更新请求、数据管理请求中的至少一种。
示例性的,所述数据查询请求可以包括对数据库中的目标数据进行查询、调用、读取等,数据存取请求可以包括对数据库中的数据进行调用存储、或是将目标数据存储在数据库中,数据更新请求可以包括基于该请求对数据库中的数据进行更新处理,数据管理请求可以包括对数据库中数据进行增删、锁定等操作,在此不再赘述。
另外,数据请求也可以是其他形式的数据请求,例如指令形式的查询请求等,具体的数据请求的形式,与所采用的通信协议或者通信接口对应,本公开实施例不做限定。本公开实施例以数据请求为HTTP数据请求为例,对数据更改方法加以详细说明。
在本公开另一实施例中,所述数据请求还可以直接编码于对数据请求进行处理的执行进程中,该执行进程在可以应用于后续的处理过程,即步骤S102~S103中对原始SQL语句进行更改。
承接与上述步骤S101,在获取数据请求之后,所述方法还包括:
S102:基于所述数据请求,确定是否需要对与所述数据请求对应的原始SQL语句中的、目标关键词进行更改。
其中,所述目标关键词为在执行SQL语句时,获取目标数据的关键信息,所述目标关键词可以由数据请求进行确定,即可以根据数据请求中包括的信息,确定出想要在原始SQL语句中进行更改的目标关键词。
示例性的,所述目标关键词可以为在目标数据库中,查询数据对应的表名。表名是数据库组成的一个关键部分,用于表征不同数据在数据库中的存储位置或存储关系。在另一些实施例中,所述目标关键词还可以是其他用于查询目标数据的关键信息,在此不再赘述。
在本公开实施例中,为了无需针对每次目标数据的更改而重新编写对应的SQL语句,可以通过Java代理(Java Agent)的字节码增强的方式,来动态更改SQL语句。具体的,Java Agent的代码逻辑并不耦合到业务代码中,而是独立存在,随应用启动程序的启动而动态生效,所以其对Java业务系统具有一定的适用性和普遍性,并且对业务系统无侵入,实现方法与业务系统耦合度低。
示例性的,当在业务系统中添加Java Agent之后,可在业务应用的启动参数中添加:-Java Agent:/**/Agent.jar。其中,Java Agent位置可以是任意目录,该参数在Java虚拟机(Java Virtual Machine,JVM)参数中的位置需要添加在–jar的参数之前。
在本公开实施例中,在业务系统启动后,Java Agent也随之启动,Java Agent能够根据数据请求对原始SQL语句进行动态调整,以实现在不更改业务系统的程序代码的前提下,实现业务系统在其他业务中的复用,并且对业务系统无侵入,实现方法与业务系统耦合度低。
参见图2,图2为本公开实施例所提供的数据更改方法的流程示意图。
如图2所示,在获取到数据请求时,配置有Java Agent的执行进程接收到该数据请求,并基于该数据请求中携带的信息,Java Agent可以确定是否对原始SQL语句中的目标关键词进行更改。在本公开另一实施例中,针对于对原始SQL语句进行更改的数据编写在thread中的执行变量中的情况,可以基于该执行变量,确定出是否对原始SQL语句中的目标关键词进行更改。
具体的,所述基于所述数据请求,确定是否需要对与所述数据请求对应的原始SQL语句中的目标关键词进行更改,包括:
对所述数据请求进行解析,并基于解析结果,确定所述数据请求中是否携带有结果关键词;
在所述数据请求中携带所述结果关键词时,确定需要对所述目标关键词进行修改。
示例性的,在配置有Java Agent的执行进程获取到数据请求时,Java Agent可以对该数据请求进行解析,以数据请求为HTTP请求为例,确定该HTTP请求中是否包括有预设的结果关键词。当确定数据请求中包括该结果关键词时,便可以确定需要对目标关键词进行修改。
其中,所述基于解析结果,确定所述数据请求中是否携带有更改标识的方法包括:
基于所述解析结果,确定所述数据请求中的目标字段是否包含标识信息;
在所述目标字段包含标识信息的情况下,则确定所述数据请求中携带有所述更改标识。
示例性的,所述标识信息可以是预先设定的、放置于所述目标字段中的特定标识,数据请求中包括该特定标识时,便可以确定该数据请求中携带有所述更改标识,即需要基于该数据请求对原始SQL语句进行更改操作。其中,该标识信息可以为存在即对原始SQL语句进行更改操作,或者,当该标识信息指代一特定预设信息时对原始SQL语句进行更改操作。
示例性的,所述确定所述数据请求中的目标字段是否包含标识信息,包括:
确定所述数据请求中的目标字段不为空;或者,
确定所述数据请求中的目标字段为空。
示例性的,所述确定所述数据请求中的目标字段是否包含标识信息可以包括:基于所述解析结果,确定所述数据请求中的目标字段是否为空,在所述目标字段不为空的情况下,则确定所述数据请求中携带有所述结果关键词。
示例性的,以数据请求为HTTP请求为例,用户在发起的HTTP请求时,可以在header中添加一个特殊标识,例如:Table_suffix=new_table等,因此可以通过确定该HTTP请求中的header位置处是否存在数据,来确定述数据请求中是否携带有所述结果关键词。当确定目标字段为空的情况下,利用确定数据请求中并未携带有所述结果关键词,也就是说,无需对原始SQL语句进行更改。
具体的,HTTP数据请求接口接收到HTTP请求,并根据HTTP请求中header的值来动态改变当前执行进程thread中变量,其中,该变量可以确定出是否根据该变量来控制更改原始SQL语句,以及当更改原始SQL语句时,将该原始SQL语句更改为怎样的形式与内容。HTTP数据请求接口在接收到HTTP请求时,是通过thread来处理这个HTTP请求,此时,可以解析该HTTP请求中header的值,若header中存在一定的数值,例如table_suffix=test,即header中的值不为空,这就意味着本次HTTP请求是需要更改原始SQL语句的。
示例性的,以数据请求数据为thread为例,可以通过判断thread是否存在预设的变量,来确定thread是否携带有所述结果关键词,例如:Table_suffix=test等,该过程与上述HTTP请求类似,在此不再赘述。
承接于上述S102,在确定对目标关键词进行更改时,还包括以下步骤:
S103:当确定需要对所述目标关键词进行更改时,基于预先设定的更改规则对所述目标关键词进行更改。
示例性的,如图2所示,在确定对目标关键词进行更改时,配置有Java Agent的thread接收到该数据请求,并基于该数据请求中的目标字段中的比特值,对thread中的变量进行修改。例如,当HTTP请求中包括Table_suffix=new_table时,thread接收到该请求后,可以在当前的thread中写入一个Table_suffix=new_table标识的变量,用于后续对于原始SQL语句的更改过程,也就是说,可以基于该thread中的变量动态更改原始SQL语句。
在本公开另一实施例中,当确定不需要对目标关键词进行修改时,可以清除掉thread中的标识变量,因为执行进程以进程池的方式存在的,也就是说执行进程会被重复使用,且由于进程的创建和销毁有一定的成本,因此,清除掉对应的标识变量之后,不带有数据更改标识的HTTP请求便不会对原始SQL语句进行更改了,由此可以减少关于进程的有关成本。
在本公开另一实施例中,基于所述数据请求对所述目标关键词进行更改时,还可以包括:
基于所述数据请求中携带的查询指示标识,从多个SQL语句中,确定所述数据请求对应的原始SQL语句。
示例性的,由于可能存在多条原始SQL语句用于查询数据,因此在一定情况下,需要首先确定需要进行修改的一条或多条原始SQL语句,具体的,可以在数据请求中,标明出需要修改的原始SQL语句对应的标识信息,当数据请求中未标明需要修改的原始SQL语句对应的标识信息时,可以默认对全部原始SQL语句进行更改。
示例性的,当存在10条原始SQL语句,每条原始SQL语句对应的标识信息分别对a1~a10,当确定对其中的第1、2、3条原始SQL语句进行更改时,可以在数据请求中指示出上述原始SQL语句对应的标识信息,即a1、a2、a3,,用于确定需要进行更改的原始SQL语句。
在本公开实施例中,在确定出需要更改的原始SQL语句之后,便可以基于所述数据请求中携带的结果关键词,对所述原始SQL语句中的目标关键词进行更改,在此之前,还包括:
对所述原始SQL语句进行分词处理,并基于分词处理的结果,得到所述目标关键词。
示例性的,按照SQL语句的规范要求,在Java Agent层面对原始SQL语句进行分词处理,获取出原始SQL语句中包括的各个组成部分,由此便可以确定出原始SQL语句中包括的目标关键词。
在本公开实施例中,所述基于预先设定的更改规则对所述目标关键词进行更改,包括:
基于所述更改规则,从所述数据请求中确定目标关键词以及结果关键词,并将所述目标关键词修改为所述结果关键词;或者,
基于所述更改规则中规定的更改策略,将所述目标关键词更改为满足所述更改策略的结果关键词。
下面分别进行解析说明:
在本公开一个实施例中,可以在基于数据请求确定出需要进行更改的目标关键词之后,将原始SQL语句中的目标关键词更改为数据请求中携带的结果关键词。
具体的,在确定出原始SQL语句的目标关键词之后,还可以基于数据请求中携带的结果关键词,对该目标关键词进行更改,从而获取到目标语句。
其中,所述基于所述数据请求中携带的结果关键词,对所述原始SQL语句中的目标关键词进行更改,得到所述目标语句可以包括以下几种:
其一、将所述目标关键词、以及所述结果关键词进行组合,得到待替换查询关键词,并将所述原始SQL语句中的目标关键词替换为所述待替换查询关键词,得到所述目标语句。
示例性的,当HTTP请求的header中包括特殊标识Table_suffix=new_table时,thread接收到该HTTP请求后,在当前的thread中写入一个Table_suffix=new_table标识,当该thread更改原始SQL语句的时候,则可以动态更改SQL中的目标关键词,例如将原先的表名xx变成xx_new_table,并将xx_new_table替换至原先表名xx的位置,生成目标语句。
在本公开另一实施例中,为了完全保证原先SQL语句的语法正确性,以目标关键词为表名为例,需要考虑该表名后是否带有别名,如果带有别名需要保留该别名;如果不带有别名,需将原先的表名置为当前别名。
具体的,以目标关键词为表名为例,在接收HTTP请求后,thread可以添加一个标识dyeing,即可以在thread中写入一个变量加上需要更改的新表名的后缀,这样thread在更改原始SQL语句时候,会提前读取thread中dyeing对应的数值,从而将原来的SQL语句进行更改,变成包括新表名的目标语句。
其二、基于所述结果关键词,从所述结果关键词与查询关键词之间的对应关系中,确定第一关键词;基于所述第一关键词,对所述原始SQL语句中的目标关键词进行更改,得到所述目标语句。
示例性的,该情况下,包括一结果关键词与查询关键词之间的关系映射表,当确定HTTP请求中的结果关键词时,便可以通过查询该映射表确定出第一关键词,也就是说第一关键词是需要更改至SQL语句中的关键词。
示例性的,在确定出第一关键词之后,便可以将基于该第一关键词对原始SQL语句中的目标关键词进行更改。具体更改过程可以包括以下方面:将所述原始SQL语句中的目标关键词替换为所述第一关键词,得到所述目标语句;或者将所述原始SQL语句中的目标关键词与所述第一关键词进行组合,得到第二关键词,并将所述原始SQL语句中的目标关键词替换为所述第二关键词,得到所述目标语句。
示例性的,在基于该第一关键词对原始SQL语句中的目标关键词进行更改的过程中,可以将目标关键词替换为该第一关键词,这里值得注意的是,需要考虑SQL语法的正确性,以目标关键词为表名为例,第一关键词中需要包括表征表名的字段信息。当第一关键词中不包括表征表名的字段信息时,可以将目标关键词与所述第一关键词进行组合,得到第二关键词,例如xx_new_table等,其中xx为原始表名,并将所述原始SQL语句中的目标关键词替换为所述第二关键词,得到所述目标语句。
在本公开另一实施例中,还可以基于更改规则中规定的更改策略,将原始SQL语句中包括的目标关键词修改为与该更改策略对应的结果关键词。
示例性的,更改规则可以为基于更改次数,更改目标关键词为标识更改次数的结果关键词,如第一关键词、第二关键词等,在本示例下,当将原始SQL语句中的目标关键词更改为第一关键词,且需要再次进行更改时,该第一关键词便作为目标关键词进行更改操作,以此类推。
此外,在本公开实施例中,还可以基于其他的更改规则对目标关键词进行更改,例如依照更改时间、目的、方式生成结果关键词,并对目标关键词进行更改等,在此不再赘述。
在本公开另一实施例中,当原始SQL语句被更改后,可以对该SQL语句进行标识,以表明该SQL被Java Agent更改过,便于后续执行查询过程:
在本公开另一实施例中,在获取到目标语句之后,还可以包括:基于所述目标语句,获取目标数据。
其中,如图2所示,可以通过JDBC执行该目标语句,即将更改后的SQL语句交给JDBC去执行,这样便可以在数据库(database,DB)中查询更改后的SQL语句中包括的目标数据信息并获取目标数据。
业务系统发给DB的、未被更改的SQL语句如下:
select id,project_collection_id,task_name,execute_count,content,creator,updater,delete_status,create_time,update_time,lock_status,task_type,context_id from task_info where id=?
在对SQL语句进行更改之后,该SQL语句变更如下:
select id,project_collection_id,task_name,execute_count,content,creator,updater,delete_status,create_time,update_time,lock_status,task_type,context_id from task_info_new_table where id=?/*SQL_CHANGED*/的形式,其中,?/*SQL_CHANGED*/可以标识在任何位置,其作用是为了表明该SQL语句被更改过。
在本公开另一实施例中,为了保证需要被更改的SQL语句能够及时被更改,可以拦截JDBC直接执行SQL语句的过程,即当JDBC执行SQL语句时,JDBC只处理通过Java Agent处理过的SQL语句。
本公开实施例通过拦截主进程接收到的数据请求,确定是否需要对与所述数据请求对应的原始SQL语句中的、目标关键词进行更改,并在需要对目标关键词进行更改时,基于预先设定的更改规则对所述目标关键词进行更改。这样,在将Java系统用于不同的场景下时,可以不对Java系统的程序代码进行更改,即可以通过本方案实现利用Java系统中的相同原始SQL语句对不同数据进行更改,提升Java系统的复用性。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与数据更改方法对应的数据更改装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述数据更改方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图3、图4所示,图3为本公开实施例所提供的一种数据更改装置的示意图;图4为本公开实施例所提供的数据更改装置中,确定模块的具体示意图。
如图3所示,所述数据更改装置包括:拦截模块310、确定模块320、更改模块330;其中:
拦截模块310,用于拦截主进程接收到的数据请求;
确定模块320,用于基于所述数据请求,确定是否需要对与所述数据请求对应的原始SQL语句中的、目标关键词进行更改;
更改模块330,用于当确定需要对所述目标关键词进行更改时,基于预先设定的更改规则对所述目标关键词进行更改。
在一些可能的实施方式中,拦截模块310即可为任意能够拦截数据请求的处理器或者控制器,确定模块320即可为任意能够确定是否需要对原始SQL语句中的目标关键词进行更改的处理器或者控制器,更改模块330即可为任意能够对目标关键词进行更改的处理器或者控制器,对此不做赘述。
一种可选的实施方式中,如图4所示,所述确定模块320包括:
第一确定单元321,用于对所述数据请求进行解析,并基于解析结果,确定所述数据请求中是否携带有结果关键词;
第二确定单元322,用于在所述数据请求中携带所述结果关键词时,确定需要对所述目标关键词进行修改。
一种可选的实施方式中,所述第一确定单元321具体用于:
基于所述解析结果,确定所述数据请求中的目标字段是否包含标识信息;
在所述目标字段包含标识信息的情况下,则确定所述数据请求中携带有所述更改标识。
一种可选的实施方式中,所述更改模块330具体用于:
基于所述更改规则,从所述数据请求中确定目标关键词以及结果关键词,并将所述目标关键词修改为所述结果关键词;或者,
基于所述更改规则中规定的更改策略,将所述目标关键词更改为满足所述更改策略的结果关键词。
一种可选的实施方式中,所述拦截模块310具体用于:
拦截主进程接收到的数据查询请求、数据存取请求、数据更新请求、数据管理请求中的至少一种。
一种可选的实施方式中,所述数据请求包括:超文本传输协议HTTP请求;
所述目标字段包括:所述HTTP请求的标头Header。
一种可选的实施方式中,所述第一确定单元321具体用于:
确定所述数据请求中的目标字段不为空;或者,
确定所述数据请求中的目标字段为空。
本公开实施例通过拦截主进程接收到的数据请求,确定是否需要对与所述数据请求对应的原始SQL语句中的、目标关键词进行更改,并在需要对目标关键词进行更改时,基于预先设定的更改规则对所述目标关键词进行更改。这样,在将Java系统用于不同的场景下时,可以不对Java系统的程序代码进行更改,即可以通过本方案实现利用Java系统中的相同原始SQL语句对不同数据进行更改,提升Java系统的复用性。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
对应于图1中的数据更改方法,本公开实施例还提供了一种计算机设备,如图5所示,为本公开实施例提供的计算机设备结构示意图,包括:
处理器501、存储器502、和总线503;存储器502用于存储执行指令,包括内存5021和外部存储器5022;这里的内存5021也称内存储器,用于暂时存放处理器501中的运算数据,以及与硬盘等外部存储器5022交换的数据,处理器501通过内存5021与外部存储器5022进行数据交换,当所述计算机设备运行时,所述处理器501与所述存储器502之间通过总线503通信,使得所述处理器501执行以下指令:
拦截主进程接收到的数据请求;
基于所述数据请求,确定是否需要对与所述数据请求对应的原始SQL语句中的、目标关键词进行更改;
当确定需要对所述目标关键词进行更改时,基于预先设定的更改规则对所述目标关键词进行更改。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的数据更改方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的数据更改方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种数据更改方法,其特征在于,包括:
拦截主进程接收到的数据请求;
基于所述数据请求,确定是否需要对与所述数据请求对应的原始SQL语句中的、目标关键词进行更改;
当确定需要对所述目标关键词进行更改时,基于预先设定的更改规则对所述目标关键词进行更改。
2.根据权利要求1所述的数据更改方法,其特征在于,所述基于所述数据请求,确定是否需要对与所述数据请求对应的原始SQL语句中的、目标关键词进行更改,包括:
对所述数据请求进行解析,并基于解析结果,确定所述数据请求中是否携带有更改标识;
在所述数据请求中携带所述更改标识时,确定需要对所述目标关键词进行修改。
3.根据权利要求2所述的数据更改方法,其特征在于,所述基于解析结果,确定所述数据请求中是否携带有更改标识,包括:
基于所述解析结果,确定所述数据请求中的目标字段是否包含标识信息;
在所述目标字段包含标识信息的情况下,则确定所述数据请求中携带有所述更改标识。
4.根据权利要求1所述的数据更改方法,其特征在于,所述基于预先设定的更改规则对所述目标关键词进行更改,包括:
基于所述更改规则,从所述数据请求中确定目标关键词以及结果关键词,并将所述目标关键词修改为所述结果关键词;或者,
基于所述更改规则中规定的更改策略,将所述目标关键词更改为满足所述更改策略的结果关键词。
5.根据权利要求1所述的数据更改方法,其特征在于,所述拦截主进程接收到的数据请求,包括:
拦截主进程接收到的数据查询请求、数据存取请求、数据更新请求、数据管理请求中的至少一种。
6.根据权利要求1-3任一项所述的数据更改方法,其特征在于,所述数据请求包括:超文本传输协议HTTP请求;
所述目标字段包括:所述HTTP请求的标头Header。
7.根据权利要求3所述的数据更改方法,其特征在于,所述确定所述数据请求中的目标字段是否包含标识信息,包括:
确定所述数据请求中的目标字段不为空;或者,
确定所述数据请求中的目标字段为空。
8.一种数据更改装置,其特征在于,包括:
拦截模块,用于拦截主进程接收到的数据请求;
确定模块,用于基于所述数据请求,确定是否需要对与所述数据请求对应的原始SQL语句中的、目标关键词进行更改;
更改模块,用于当确定需要对所述目标关键词进行更改时,基于预先设定的更改规则对所述目标关键词进行更改。
9.一种计算机设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至7任一项所述的数据更改方法的步骤。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至7任一项所述的数据更改方法的步骤。
CN202110588712.XA 2021-05-28 2021-05-28 一种数据更改方法、装置、计算机设备及存储介质 Active CN113254470B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110588712.XA CN113254470B (zh) 2021-05-28 2021-05-28 一种数据更改方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110588712.XA CN113254470B (zh) 2021-05-28 2021-05-28 一种数据更改方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN113254470A true CN113254470A (zh) 2021-08-13
CN113254470B CN113254470B (zh) 2023-06-02

Family

ID=77185038

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110588712.XA Active CN113254470B (zh) 2021-05-28 2021-05-28 一种数据更改方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN113254470B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114397966A (zh) * 2022-01-06 2022-04-26 山东浪潮科学研究院有限公司 一种数据库的关键字纠错提示方法及装置
CN115499258A (zh) * 2022-08-03 2022-12-20 深圳市宇创兴业科技有限公司 智能家居中控系统的控制方法、装置、介质及计算机设备
CN115599379A (zh) * 2022-11-09 2023-01-13 深圳市雁联计算系统有限公司(Cn) 一种java应用程序预埋针系统及方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110270879A1 (en) * 2007-10-20 2011-11-03 Oracle International Corporation Support for user defined aggregations in a data stream management system
CN109471857A (zh) * 2018-09-25 2019-03-15 中国平安人寿保险股份有限公司 基于sql语句的数据修改方法、装置及存储介质
CN111651468A (zh) * 2020-05-29 2020-09-11 中国平安财产保险股份有限公司 基于sql解析的数据更新方法、装置、电子设备及存储介质
CN112765200A (zh) * 2021-01-18 2021-05-07 武汉悦学帮网络技术有限公司 一种基于Elasticsearch的数据查询方法及装置
CN112765158A (zh) * 2020-12-30 2021-05-07 中国人寿保险股份有限公司上海数据中心 一种数据库的数据修改方法、装置及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110270879A1 (en) * 2007-10-20 2011-11-03 Oracle International Corporation Support for user defined aggregations in a data stream management system
CN109471857A (zh) * 2018-09-25 2019-03-15 中国平安人寿保险股份有限公司 基于sql语句的数据修改方法、装置及存储介质
CN111651468A (zh) * 2020-05-29 2020-09-11 中国平安财产保险股份有限公司 基于sql解析的数据更新方法、装置、电子设备及存储介质
CN112765158A (zh) * 2020-12-30 2021-05-07 中国人寿保险股份有限公司上海数据中心 一种数据库的数据修改方法、装置及存储介质
CN112765200A (zh) * 2021-01-18 2021-05-07 武汉悦学帮网络技术有限公司 一种基于Elasticsearch的数据查询方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114397966A (zh) * 2022-01-06 2022-04-26 山东浪潮科学研究院有限公司 一种数据库的关键字纠错提示方法及装置
CN115499258A (zh) * 2022-08-03 2022-12-20 深圳市宇创兴业科技有限公司 智能家居中控系统的控制方法、装置、介质及计算机设备
CN115499258B (zh) * 2022-08-03 2023-10-03 深圳市宇创兴业科技有限公司 智能家居中控系统的控制方法、装置、介质及计算机设备
CN115599379A (zh) * 2022-11-09 2023-01-13 深圳市雁联计算系统有限公司(Cn) 一种java应用程序预埋针系统及方法

Also Published As

Publication number Publication date
CN113254470B (zh) 2023-06-02

Similar Documents

Publication Publication Date Title
US9135289B2 (en) Matching transactions in multi-level records
CN110908997A (zh) 数据血缘构建方法、装置、服务器及可读存储介质
CN117195307A (zh) 针对隐私敏感用户内容的可配置注释
CN110096334B (zh) 缓存处理方法、装置、设备及计算机可读存储介质
CN110109958B (zh) 缓存处理方法、装置、设备及计算机可读存储介质
CN110134705A (zh) 一种数据查询方法、缓存服务器及终端
US11269741B2 (en) Change-protected database system
US11334539B2 (en) Change-protected database system
CN113254470A (zh) 一种数据更改方法、装置、计算机设备及存储介质
CN110781183A (zh) Hive数据库中增量数据的处理方法、装置以及计算机设备
CN107832448A (zh) 数据库操作方法、装置及设备
CN112434015A (zh) 数据存储的方法、装置、电子设备及介质
CN111047434B (zh) 一种操作记录生成方法、装置、计算机设备和存储介质
CN111083054B (zh) 路由配置处理方法、装置、计算机设备和存储介质
CN113220669A (zh) 业务数据的处理方法、装置及电子设备
CN114237806B (zh) 一种页面信息的显示方法、装置、电子设备及存储介质
CN114356968A (zh) 查询语句生成方法、装置、计算机设备及存储介质
CN114282071A (zh) 基于图数据库的请求处理方法、装置、设备及存储介质
CN113342647A (zh) 一种测试数据的生成方法及装置
CN111753141B (zh) 一种数据管理方法及相关设备
CN112434037A (zh) 数据处理方法、处理装置、数据处理设备和存储介质
CN113132241B (zh) Acl模板动态配置方法及装置
US11741163B2 (en) Mapping of personally-identifiable information to a person based on natural language coreference resolution
US7051333B1 (en) System and method for extending a programming language to include multiple dissimilar object systems
CN113297622A (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