掌桥专利:专业的专利平台
掌桥专利
首页

一种数据源的配置方法及装置

文献发布时间:2024-04-18 19:58:26


一种数据源的配置方法及装置

技术领域

本发明涉及计算机技术领域,尤其涉及一种数据源的配置方法及装置。

背景技术

在软件开发过程中,应用程序通常需要处理来自一个或多个不同数据源(例如数据库,文件系统等)的数据,然而在特定业务或测试场景下,同一应用程序可能存在着频繁配置或者修改对应数据源的实际需求,因此如何快速地配置数据源成为了开发人员亟需解决的一大问题。

在相关技术中,通常使用目标应用中预先配置的数据源配置模块实现多数据源之间的快速配置,然而,上述多数据源来仅源于固定的数据源配置文件中,一旦需要配置的新数据源并不属于该数据源配置文件,那么需要在编辑上述数据源配置文件后重新将应用程序打包发布才能完成针对该新数据源的识别与配置操作,导致数据源的配置效率低下。

发明内容

有鉴于此,本发明提供一种数据源的配置方法及装置,以解决相关技术中的不足。

具体地,本发明是通过如下技术方案实现:

根据本发明的第一方面,提供了一种数据源的配置方法,所述方法包括:

在确定目标应用的数据源集合发生更新的情况下,将更新后的数据源集合存储至对应的配置数据中;

将所述目标应用中预先配置的数据源配置模块所定义的数据源来源配置为所述配置数据。

根据本发明的第二方面,提供了一种数据源的配置装置,所述装置包括:

配置数据存储单元,用于在确定目标应用的数据源集合发生更新的情况下,将更新后的数据源集合存储至对应的配置数据中;

数据源来源配置单元,用于将所述目标应用中预先配置的数据源配置模块所定义的数据源来源配置为所述配置数据。

根据本说明书实施例的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如第一方面所述的方法的步骤。

根据本说明书实施例的第四方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的方法的步骤。

本发明的实施例提供的技术方案可以包括以下有益效果:

在本发明的实施例中,通过将数据源配置模块所定义的数据源来源设置为随数据源集合更新而发生改变的配置数据,使得数据源来源不再限制于传统的固定文件中,且针对配置数据的存储操作与目标应用自身无关,因此避免了将应用程序重新打包发布后才能配置新数据源的问题,提高了数据源的配置效率。

附图说明

为了更清楚地说明本发明的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。

图1是本说明书一示例性实施例示出的一种数据源的配置方法的流程示意图;

图2是本说明书一示例性实施例示出的另一种数据源的配置方法的流程示意图;

图3是本说明书一示例性实施例示出的一种电子设备的示意结构图;

图4是本说明书一示例性实施例示出的一种数据源的配置装置的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与本发明的一些方面相一致的装置和方法的例子。

在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

下面结合附图对本说明书的风险代码的检测方法的实施例进行详细描述。

图1是本说明书一示例性实施例示出的一种数据源的配置方法的流程示意图。如图1所示,该方法可以包含以下步骤:

S101,在确定目标应用的数据源集合发生更新的情况下,将更新后的数据源集合存储至对应的配置数据中。

当用户需要对目标应用的数据源集合中的一个或多个数据源进行增加、删除或修改等操作时,实际上已经触发了数据源集合的更新,那么上述目标应用可以及时将更新后的数据源集合存储至上述配置数据中。其中,上述目标应用可以来自于本地编写的工程项目,或者服务器中基于版本控制系统(例如分布式版本控制系统GIT或者集中式版本控制系统(Subversion,SVN))的代码库,本说明书中对此并不进行限制。

本说明书的技术方案中可以基于监听器的方式对上述数据源集合的更新进行监听。

在一实施例中,目标应用可以设置针对配置平台的监听器,并在该监听器确定配置平台触发针对数据源集合的配置更新操作的情况下,确定数据源集合发生更新。其中,上述配置平台可以用于配置数据源集合中的各个数据源,且该配置平台可以部署于目标应用所在的本地设备或者与目标应用相关联的第三方网络设备中。此外,上述监听器可以根据目标应用所对应的开发语言实现,以Java语言为例,其自身可以通过例如“addChangeListener()”等方法添加对应的事件监听器(Listener),该事件监听器则可以用于监听上述配置平台针对上述数据源集合的增加、删除或修改事件,以便于目标应用可以在确定数据源集合发生变化后即将其同步至配置数据,进而可以保证对应配置数据的实时性。

上述配置数据可视为目标应用中对于上述配置平台中更新后的数据源集合的备份,其中,该配置数据可以存储于例如并发哈希映射表(ConcurrentHashMap)等数据结构中,相比于传统的哈希映射表HashMap而言可以保证上述配置数据在并发执行存储(例如将再次更新后的数据源集合进行存储至配置数据)与应用(例如读取配置数据以获取对应的数据源)操作的过程中依然可以保证相关的线程安全。

S102,将所述目标应用中预先配置的数据源配置模块所定义的数据源来源配置为所述配置数据。

当目标应用成功将更新后的数据源集合存储至上述配置数据后,可以使用上述数据源配置模块提供的方法将对应的数据源来源配置为上述配置数据。其中,上述数据源配置模块可以根据目标应用所使用的数据框架而实现,以针对JAVA平台环境(Java2Platform Enterprise Edition,J2EE)应用程序开发提供高效开发架构的集成框架Spring为例,目标应用在引入Spring框架的工具包后,可以基于上述Spring框架中预设的多租户数据源管理抽象类AbstractRoutingDataSource创建对应的数据源配置类,并通过重写该抽象类中定义的数据源查找方法“determineTargetDataSource()”来将数据源查找方法中查找的数据源配置为上述配置数据。

数据源来源配置后的目标应用实际上已经完成了数据源集合的配置更新,此后上述目标应用可以选择数据源集合中的一个或多个数据源作为对应业务场景中的所涉及的目标数据源,进而建立目标应用与目标数据源之间的数据连接。当然,本说明书的技术方案还可以对预先存在数据连接的场景执行针对性措施。

在一实施例中,目标应用可以在确定预先不存在任何数据连接的情况下,根据修改数据源来源后的数据源配置模块建立新的数据连接。在该实施例中,更新前的数据源集合与目标应用之间不再存在必要关联,因此可以直接建立目标应用与目标数据源之间的数据连接。

在一实施例中,目标应用可以在确定预先已存在至少一个数据连接的情况下,可以记录上述至少一个数据连接的配置状态,并断开上述至少一个数据连接,上述配置状态用于恢复断开后的至少一个数据连接(具体恢复过程可详见下文,本说明书在此不再赘述)。其中,预先已存在至少一个数据连接的场景意味着:目标应用仍然使用着由更新前的数据源集合中的对应数据源所建立的数据连接,因此为了避免此类数据连接在数据源集合更新前后所造成的隐患(例如目标应用在数据源集合更新前使用数据源A的数据连接实现特定功能,在数据源集合更新后使用数据源B的数据连接实现特定功能)以提高相关数据操作的安全性,有必要及时断开预先已存在的数据连接。

此外,还需要考虑数据连接中具体的执行情况,原因在于大部分数据连接在实际应用场景中通常是常驻的(即预先必然存在数据连接),但目标应用通过数据连接进行数据操作的过程往往仅占据数据连接生存周期的一部分。换言之,预先已存在数据连接无法证明目标应用正在使用数据连接。基于此,本说明书可以引入数据连接中的执行线程来确定当前目标应用是否正在使用数据连接。

在一实施例中,目标数据源对应于目标数据库,且数据连接为数据库连接,那么目标应用可以获取对应的数据库连接中的执行器(executor)线程池,并在执行器线程池为不空的情况下,每隔预设等待时长再次判断执行器线程池是否为空,并在执行器线程池为空的情况下,并断开对应的数据库连接。其中,执行器线程池可以维护目标应用通过数据库连接对数据库进行读写操作的线程,当执行器线程池不为空时,则说明对应的数据库连接中依然存在数据读写操作,因此可以在等待对应线程因操作结束而关闭的同时周期性地判断执行器线程池中的线程数量是否为空,一旦为空,则可以立即断开对应的数据库连接,并建立目标应用与目标数据源之间的、新的数据连接。当然,还可以在上述预设等待时长的基础上计算与展示执行器线程池中的剩余数量与预计剩余时间,以便于用户了解当前数据连接的配置进度。

如前所述,本说明书可以通过配置状态恢复断开后的至少一个数据连接。其中,上述配置状态可以包含上述至少一个数据连接对应的历史数据源的唯一标识,例如,更新前的数据源集合以键值对“key-value”的形式存储数据源,每一数据源分别对应有唯一的标识“key”,当目标应用建立目标应用与目标数据源之间的数据连接时,预先已存在的数据连接所对应的数据源则可以作为历史数据源并被记录对应的配置状态。当历史数据源对应的数据连接被关闭后,可以根据上述标识查询更新后的数据源集合中与上述历史数据源对应的数据源,进而建立目标应用与查询到的数据源之间的数据连接。其中,所谓的“与历史数据源对应的数据源”(即查询到的数据源)可能存在多种情况,例如:查询到的数据源与更新后的数据源集合中的某一数据源标识相同(此时更新后的数据源集合可能没有对上述某一数据源进行删除,或者在标识不变的情况下仅对上述某一数据源进行替换);又例如,未查询到与历史数据源对应的数据源(此时更新后的数据源集合必然不存在与历史数据源相同的数据源标识),这种情况下目标应用也将没有必要恢复已断开的数据连接,从而简化了针对数据源的数据连接配置过程。

本领域技术人员可以理解的是,上述S201与S202的步骤可以发生于目标应用的任何一次针对数据源的配置操作。

下面以某一目标应用为例,介绍通过作为配置平台的第三方服务器将该目标应用的数据源进行更新的过程,图2是本说明书一示例性实施例示出的另一种数据源的配置方法的流程示意图,如图2所示,该过程包括:

S201,获取目标应用的源文件。

在一实施例中,可以从项目管理仓库gitlab中通过gitclone命令获取目标应用的源代码。

S202,创建针对配置平台的监听器与配置数据。

在一实施例中,假设上述目标应用为基于Spring框架涉及的Java应用。那么可以在上述源代码中基于监听器类Listener的监听器添加方法addChangeListener()将创建的监听器ConfigChangeListener进行配置,其中,监听器ConfigChangeListener可以用于监听配置平台中的用户针对目标应用的数据源集合发起的更新事件。同时,可以创建一个基于ConcurrentHashMap的配置数据以用于存储从上述配置平台中同步的、更新后的数据源集合。

S203,创建动态数据源配置类。

在一实施例中,可以基于Spring提供的数据源路由AbstractRoutingDataSource创建动态获取动态数据源配置类dynanicdatascourc以作为数据源配置模块,并在动态数据源配置类中通过重写数据源获取方法determineTargetDataSource()中的数据源查找方法,将其查询对象定义为上述配置数据。

S204,根据监听器确定数据源集合发生更新,并将更新后的数据源集合存储至对应的配置数据,以使数据源配置模块所定义的数据源来源配置为配置数据。

在一实施例中,当上述监听器获取到配置平台的数据源集合发生变更时,可以将其存储至上述配置数据中,进而保证数据源配置模块(即上述动态数据源配置类dynanicdatascourc)可以及时将数据源来源设置为更新后的数据源集合。

S205,判断是否预先已存在至少一个数据库连接。

在一实施例中,可以通过Java提供的驱动管理类DriverManager获取目标应用中是否存在至少一个数据库连接,若是,则执行S207,否则执行S206。

S206,建立目标应用与目标数据源之间的数据连接。

在一实施例中,可以根据预设数据源选择规则或用户发起的选择指令确定出数据源集合中的目标数据源,并建立目标应用与目标数据源之间的数据连接。

S207,判断数据库连接中的执行器线程池是否为空。

在一实施例中,如果存在数据库连接,则可以分别获取上述至少一个数据库连接中每一数据库连接的执行器线程池,并判断其执行器线程池是否为空,若为空,则执行S209,否则执行S208。

S208,等待预设等待时长。

在一实施例中,假设目标应用设置上述预设等待时长为1000毫秒。如果线程池不为空,则表明对于数据库连接中存在数据读写,处于数据安全无法断开当前数据库连接,那么可以等待1000毫秒后再次执行S207。

S209,关闭对应的数据库连接,并记录数据库连接对应的历史数据源的标识。

在一实施例中,可以通过方法Connect.close()中断对应的数据库连接,同时记录该数据库连接在更新前的数据源集合中的对应的历史数据源的标识“key”。

S210,根据标识建立目标应用与目标数据源之间的数据连接。

在一实施例中,假设上述历史数据源的标识为“UserData_MySQL_v5.0”,那么目标应用可以尝试从根据该标识从尝试从更新后的数据源集合中查询对应标识的目标数据源,并建立目标应用与目标数据源之间的数据连接。

图3是一示例性实施例中的一种电子设备的示意结构图。请参考图3,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成数据源的配置装置。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

与前述数据源的配置方法的实施例相对应,本说明书还提供了数据源的配置装置的实施例。

请参考图4,图4是一示例性实施例示出的一种数据源的配置装置的结构示意图。如图4所示,该装置可以包括:

配置数据存储单元401,用于在确定目标应用的数据源集合发生更新的情况下,将更新后的数据源集合存储至对应的配置数据中;

数据源来源配置单元402,用于将所述目标应用中预先配置的数据源配置模块所定义的数据源来源配置为所述配置数据。

可选的,所述配置数据存储单元401具体用于:

设置针对配置平台的监听器,所述配置平台用于配置所述数据源集合中的各个数据源;

在所述监听器确定所述配置平台触发针对所述数据源集合的配置更新操作的情况下,确定所述数据源集合发生更新。

可选的,所述配置数据存储于并发哈希映射表中。

可选的,所述装置还包括:

数据连接建立单元403,用于确定所述数据源集合中的目标数据源,并建立所述目标应用与所述目标数据源之间的数据连接。

可选的,所述装置还包括:

数据连接判断单元404,用于在确定预先已存在至少一个数据连接的情况下,记录所述至少一个数据连接的配置状态,并断开所述至少一个数据连接,所述配置状态用于恢复断开后的所述至少一个数据连接。

在确定预先不存在任何数据连接的情况下,根据修改数据源来源后的所述数据源配置模块建立新的数据连接。

可选的,所述数据连接判断单元404具体用于:

获取对应的数据库连接中的执行器线程池;

在所述执行器线程池为不空的情况下,每隔预设等待时长再次判断所述执行器线程池是否为空;

在所述执行器线程池为空的情况下,并断开对应的数据库连接。

可选的,所述配置状态包含所述至少一个数据连接对应的历史数据源的唯一标识;所述数据连接判断单元404具体用于:

根据所述标识查询所述更新后的数据源集合中与所述历史数据源对应的数据源,并建立所述目标应用与查询到的数据源之间的数据连接。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

本说明书中描述的主题及功能操作的实施例可以在以下中实现:数字电子电路、有形体现的计算机软件或固件、包括本说明书中公开的结构及其结构性等同物的计算机硬件、或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上以被数据处理装置执行或控制数据处理装置的操作的计算机程序指令中的一个或多个模块。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以将信息编码并传输到合适的接收机装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。

本说明书中描述的处理及逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过根据输入数据进行操作并生成输出来执行相应的功能。所述处理及逻辑流程还可以由专用逻辑电路—例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)来执行,并且装置也可以实现为专用逻辑电路。

适合用于执行计算机程序的计算机包括,例如通用和/或专用微处理器,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的基本组件包括用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘等,或者计算机将可操作地与此大容量存储设备耦接以从其接收数据或向其传送数据,抑或两种情况兼而有之。然而,计算机不是必须具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏操纵台、全球定位系统(GPS)接收机、或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。

适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如EPROM、EEPROM和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及CD ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。

虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。

类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。

由此,主题的特定实施例已被描述。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。

以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。

相关技术
  • 一种可配置多数据源适配规则引擎解决方法
  • 一种数据源的管理方法和装置
  • 一种基于Spring Boot在不同环境的数据源接入方法和装置
  • 一种基于人工辅助的数据源采集方法、装置及设备
  • 一种风控策略自定义数据源接入的方法以及装置
  • 一种基于多数据源配置的动态切换数据源方法及系统
  • 一种数据源配置方法、装置及其介质
技术分类

06120116487715