CN112711606A - 数据库访问方法、装置、计算机设备和存储介质 - Google Patents
数据库访问方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN112711606A CN112711606A CN202011581118.XA CN202011581118A CN112711606A CN 112711606 A CN112711606 A CN 112711606A CN 202011581118 A CN202011581118 A CN 202011581118A CN 112711606 A CN112711606 A CN 112711606A
- Authority
- CN
- China
- Prior art keywords
- database
- link address
- library
- slave
- service 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.)
- Pending
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
- G06F16/2455—Query execution
-
- 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
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据库访问方法、装置、计算机设备和存储介质,所述方法包括:接收业务请求,业务请求携带操作类型;所述操作类型用于描述对数据库进行读操作或者写操作;从至少一个数据库中确定出至少一个第一数据库;从预设的至少一个链接地址中,确定出至少一个目标链接地址;基于所述至少一个目标链接地址,从所述至少一个第一数据库中确定出分别与各个目标链接地址对应的第二数据库;基于所述操作类型,对所述各个第二数据库中的每一第二数据库分别执行与所述业务请求相应的操作,实现根据业务请求的操作类型分别在不同数据库进行操作,在业务系统响应业务请求时进行读写分离,有效降低数据库的吞吐压力,提高数据库的响应速度和处理效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据库访问方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术的发展,数据存储技术也在日益完善。然而,在现有数据库架构中,随着时间推移和业务数量累计,数据库中表单的数量和表单中存储的数据量在不断增多,在数据库中进行数据查找和数据操作的时间也在不断增长,导致在访问量高并发时,无法及时响应,甚至出现超时报错的情况,数据处理效率低下。
发明内容
基于此,有必要针对上述技术问题,提供一种数据库访问方法、装置、计算机设备和存储介质。
本申请实施例提供一种数据库访问方法,应用于业务系统,所述方法包括:
接收业务请求,所述业务请求携带操作类型;所述操作类型用于描述对数据库进行读操作或者写操作;
从至少一个数据库中确定出至少一个第一数据库;
从预设的至少一个链接地址中,确定出至少一个目标链接地址;
基于所述至少一个目标链接地址,从所述至少一个第一数据库中确定出分别与各个目标链接地址对应的第二数据库;
基于所述操作类型,对所述各个第二数据库中的每一第二数据库分别执行与所述业务请求相应的操作。
在其中一个实施例中,所述从至少一个数据库中确定出至少一个第一数据库,包括:
当所述操作类型为读操作时,将所述至少一个数据库中,可进行读操作的数据库作为第一数据库,得到所述至少一个第一数据库。
在其中一个实施例中,所述从预设的至少一个链接地址中,确定出至少一个目标链接地址,包括:
基于预设的数据库连接池中的至少一个链接地址,获取所述至少一个链接地址中每个链接地址对应的数据库可进行的操作类型;
针对对应数据库可进行读操作的至少一个链接地址中,将处于空闲状态的链接地址作为目标链接地址,得到至少一个目标链接地址。
在其中一个实施例中,所述从至少一个数据库中确定出至少一个第一数据库,包括:
当所述操作类型为写操作时,将所述至少一个数据库中,可进行写操作的数据库作为第一数据库,得到所述至少一个第一数据库。
在其中一个实施例中,所述从预设的至少一个链接地址中,确定出至少一个目标链接地址,包括:
基于预设的数据库连接池中的至少一个链接地址,获取所述至少一个链接地址中每个链接地址对应的数据库可进行的操作类型;
针对对应数据库可进行写操作的至少一个链接地址,将处于空闲状态的链接地址,作为目标链接地址,得到至少一个目标链接地址。
在其中一个实施例中,所述至少一个第二数据库中包括主库和/或从库,所述主库与至少一个所述从库通信连接,所述方法还包括:
从主库中获取至少一个从库状态信息;所述至少一个从库状态信息为所述主库从通信连接的至少一个从库中获取的从库的状态信息;
从所述至少一个从库中,确定出链接地址待更新的至少一个待更新从库;
根据所述至少一个待更新从库中每个待更新从库对应的链接地址,对数据库连接池中的链接地址进行更新。
在其中一个实施例中,所述根据所述至少一个待更新从库中每个待更新从库对应的链接地址,对数据库连接池中的链接地址进行更新,包括:
将从库状态信息为繁忙状态信息或异常状态信息的从库,作为目标从库;
将所述目标从库对应的链接地址从所述数据库连接池中移除。
在其中一个实施例中,还包括:
获取至少两个数据库的链接地址;
根据至少两个链接地址中的每个链接地址,分别向所述至少两个数据库中的每个数据库发送连接请求;
当接收到针对所述连接请求的响应信息时,将发送响应信息的至少两个数据库中每个数据库所对应的链接地址,加入到数据库连接池,以便在接收到业务请求时,从所述数据库连接池中获取链接地址,并对该链接地址对应的数据库,执行与所述业务请求相应的操作。
本申请实施例提供一种数据库访问装置,应用于业务系统,所述装置包括:
业务请求接收模块,用于接收业务请求,所述业务请求携带操作类型;所述操作类型用于描述对数据库进行读操作或者写操作;
第一数据库确定模块,用于从至少一个数据库中确定出至少一个第一数据库;
目标链接地址确定模块,用于从预设的至少一个链接地址中,确定出至少一个目标链接地址;
第二数据库确定模块,用于基于所述至少一个目标链接地址,从所述至少一个第一数据库中确定出分别与各个目标链接地址对应的第二数据库;
操作执行模块,用于基于所述操作类型,对所述各个第二数据库中的每一第二数据库分别执行与所述业务请求相应的操作。
本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上所述方法的步骤。
本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述方法的步骤。
上述实施例提出的数据库访问方法、装置、计算机设备和存储介质,通过接收携带操作类型的业务请求,操作类型可以描述对数据库进行读操作或者写操作,进而从至少一个数据库中确定出至少一个第一数据库,以及,从预设的至少一个链接地址中,确定出至少一个目标链接地址,基于至少一个目标链接地址,从至少一个第一数据库中确定出分别与各个目标链接地址对应的第二数据库,并基于操作类型,对各个第二数据库中的每一第二数据库分别执行与业务请求相应的操作,实现根据业务请求的操作类型分别在不同数据库进行操作,在业务系统响应业务请求时进行读写分离,有效降低数据库的吞吐压力,提高数据库的响应速度和处理效率。
附图说明
图1为一个实施例中一种数据库访问方法的应用环境图;
图2为一个实施例中一种数据库访问方法的流程示意图;
图3为一个实施例中业务系统与数据库集群的结构示意图;
图4为一个实施例中业务请求处理步骤的流程示意图;
图5为一个实施例中一种数据库访问装置的结构框图;
图6为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
为了便于对本发明实施例的理解,先对现有技术进行介绍。在现有技术中,可以通过数据库存储海量数据,然而,随着业务量的日益增长,数据库中存储的数据表不断增多,每张数据表中存储的数据量也急剧上升。数据的不断增多,在数据库负载增加的同时,数据库中进行数据操作的开销也日益增多。
虽然可以通过硬件升级提升数据操作效率,然而,承载数据库的单台服务器所拥有的资源往往是有限的,例如CPU、磁盘、内存、网络IO,以及服务器所能处理的事务数以及可以提供的连接数,这些都是有限资源。当面对高并发的业务请求时,数据库难以及时响应,容易出现超时报错的情况。
本申请提供的一种数据库访问方法,可以应用于如图1所示的应用环境中。在该应用环境中,业务系统(也可以称为核心系统)101可以与数据库集群102中的每个数据库通信连接,业务系统可以通过独立的服务器或者是至少两个服务器组成的服务器集群实现。
在一个实施例中,如图2所示,提供了一种数据库访问方法,以该方法应用于图1中的业务系统为例进行说明,可以包括以下步骤:
步骤201,接收业务请求,所述业务请求携带操作类型;所述操作类型用于描述对数据库进行读操作或者写操作。
作为一示例,操作类型可用于描述业务系统请求对数据库进行读操作或者写操作,操作类型可以通过操作类型标识指示。其中,读操作可以是仅需从数据库中读取与业务请求关联的业务信息的操作;写操作可以是对数据库中的数据执行以下任一种或多种操作:修改、增加、删除。
在实际应用中,业务系统可以通过网络与终端或服务器通信连接。终端或服务器可以生成携带有操作类型的业务请求,并向业务系统发送该业务请求。当接收到业务请求,业务系统可以读取业务请求,从而确定该业务请求对应的操作类型。
或者,在另一示例中,也可以预先在业务系统中存储映射列表,在该列表中可以存储有多种类型的业务请求所对应的操作类型,当业务系统接收到业务请求时,可以通过查询该列表确定业务请求对应的操作类型。在确定业务请求对应的操作类型时,可以根据业务请求对应的业务内容确定,例如,针对包括DML(数据操纵语言,Data ManipulationLanguage)操作的业务请求,可以将该业务请求对应的操作类型确定为写操作。
步骤202,从至少一个数据库中确定出至少一个第一数据库。
作为一示例,第一数据库可以是可响应业务请求进行读操作或写操作的候选数据库。
在确定业务请求对应的操作类型后,可以从至少一个数据库中,确定出可以对业务请求进行响应的至少一个第一数据库,具体而言,当业务请求对应的操作类型为读操作时,第一数据库是可以进行读操作的数据库;当业务请求对应的操作类型为写操作时,第一数据库是可以进行写操作的数据库。
步骤203,从预设的至少一个链接地址中,确定出至少一个目标链接地址。
作为一示例,链接地址也可以称为数据库链接,一个链接地址可以对应一个数据库,通过链接地址可与数据库通信连接并指示数据库执行相应操作。
在本实施例中,可以预先设置至少一个链接地址,当接收到业务请求时,可以从至少一个链接地址中,确定出至少一个目标链接地址。
步骤204,基于所述至少一个目标链接地址,从所述至少一个第一数据库中确定出分别与各个目标链接地址对应的第二数据库。
作为一示例,第二数据库可以是与目标链接地址对应的且能够对业务请求进行响应的数据库。
在本实施例中,由于每个目标链接地址可以与一个数据库对应,在得到至少一个目标链接地址后,可以根据至少一个目标链接地址,从至少一个第一数据库中,分别确定出与各个目标链接地址对应的第二数据库。
步骤205,基于所述操作类型,对所述各个第二数据库中的每一第二数据库分别执行与所述业务请求相应的操作。
在确定出第二数据库后,则可以根据业务请求的操作类型,对第二数据库中的每一个第二数据库,分别执行与业务请求对应的操作。
具体而言,若业务请求对应的操作类型为读操作,则可以对各个第二数据库执行读操作。当第二数据库为一个第二数据库时,可以在同一第二数据库中读取所有与业务请求关联的业务数据;当第二数据库为至少两个数据库时,则可以分别在各个第二数据库中,读取不同的业务数据,例如,业务请求为读取业务订单的下单时间和订单金额,则可以从数据库A读取业务订单的下单时间,以及从数据库B读取业务订单的订单金额。
若业务请求对应的操作类型为写操作,则可以对各个第二数据库执行写操作。当第二数据库为一个第二数据库时,可以在同一第二数据库中对业务请求关联的业务数据执行写操作;当第二数据库为至少两个数据库时,则可以分别在各个第二数据库中执行写操作,在写操作结束后,至少两个第二数据库中的各个第二数据库可以通过数据同步,保证各个第二数据库中存储的数据相同。
在本实施例中,通过接收携带操作类型的业务请求,操作类型可以描述对数据库进行读操作或者写操作,进而从至少一个数据库中确定出至少一个第一数据库,以及,从预设的至少一个链接地址中,确定出至少一个目标链接地址,基于至少一个目标链接地址,从至少一个第一数据库中确定出分别与各个目标链接地址对应的第二数据库,并基于操作类型,对各个第二数据库中的每一第二数据库分别执行与业务请求相应的操作,实现根据业务请求的操作类型分别在不同数据库进行操作,在业务系统响应业务请求时进行读写分离,有效降低数据库的吞吐压力,提高数据库的响应速度和处理效率。
在一个实施例中,所述从至少一个数据库中确定出至少一个第一数据库,可以包括如下步骤:
当所述操作类型为读操作时,将所述至少一个数据库中,可进行读操作的数据库作为第一数据库,得到所述至少一个第一数据库。
在实际应用中,在不同的数据库中,可以执行不同操作类型的数据库操作。数据库可以包括三种类型的数据库,即第一类型数据库、第二类型数据库和第三类型数据库。其中,第一类型数据库可以是仅允许进行读操作的数据库,第二类型数据库可以是允许同时进行读操作或写操作的数据库,第三类型数据库可以是仅允许进行写操作的数据库,本领域技术人员可以根据实际需要设置业务系统中数据库的类型。
在具体实现中,当操作类型为读操作时,可以从至少一个数据库中,确定出可进行读操作的数据库作为第一数据库,得到至少一个第一数据库。当第一数据库为一个第一数据库时,第一数据库可以是第一类型数据库或第二类型数据库中的任一种;当第二数据库为至少两个第一数据库时,第一数据库可以是第一类型数据库和/或第二类型数据库。
在另一个示例中,在操作类型为读操作时,可以优先将第一类型数据库作为第一数据库,即优先在仅允许进行读操作的数据库中,进行业务请求对应的读操作,避免在第二类型数据库中读取数据,实现交易读写分离。当各个第一类型数据库均处于繁忙状态时,则可以将第二类型数据库确定为第一数据库,从而在第一类型数据库繁忙时,及时对业务请求进行响应。
在本实施例中,当操作类型为读操作时,可以将至少一个数据库中可进行读操作的数据库作为第一数据库,为后续对数据库执行读操作提供基础。
在一个实施例中,所述从预设的至少一个链接地址中,确定出至少一个目标链接地址,包括:
基于预设的数据库连接池中的至少一个链接地址,获取所述至少一个链接地址中每个链接地址对应的数据库可进行的操作类型;针对对应数据库可进行读操作的至少一个链接地址中,将处于空闲状态的链接地址作为目标链接地址,得到至少一个目标链接地址。
在实际应用开发中,在对数据库中的数据进行访问前,往往需要经历建立与数据库的链接、打开数据库、存取数据和关闭与数据库的链接等步骤,而与数据库进行链接并打开数据库会耗费部分资源,若频繁发生,容易导致系统性能急剧下降,甚至会导致系统崩溃。而在本实施例中,可以建立数据库连接池,并在数据库连接池中预先设置至少一个链接地址,该链接地址可以是与数据库建立了通信连接的链接地址。
具体的,在接收到业务请求时,针对预设的数据库连接池中的至少一个链接地址,可以获取至少一个链接地址中每个链接地址对应的数据库可进行的操作类型,并从中确定出对应数据库可进行读操作的至少一个链接地址。
由于数据库连接池中的链接地址可供不同使用者使用,针对确定出的至少一个链接地址中的每一链接地址,可以获取链接地址对应的链接状态,该链接状态用于描述描述链接地址处于空闲状态或占用状态。在确定每一链接地址对应的链接状态后,可以将处于空闲状态的链接地址作为目标链接地址,得到至少一个目标链接地址。在一个示例中,在获取链接地址对应的链接状态时,可以采用以下任意一种:轮询方式、随机获取方式、加权最小连接调度方式、最小连接数法。
在本实施例中,基于预设的数据库连接池中的至少一个链接地址,可以获取至少一个链接地址中每个链接地址对应的数据库可进行的操作类型,针对对应数据库可进行读操作的至少一个链接地址中,可以将处于空闲状态的链接地址作为目标链接地址,得到至少一个目标链接地址,实现了将对应数据库可进行读操作并且处于空闲状态的链接地址作为目标链接地址,为及时通过链接地址发送数据读取指令并对数据库进行读操作提供数据基础。
在一个实施例中,所述从至少一个数据库中确定出至少一个第一数据库,可以包括如下步骤:
当所述操作类型为写操作时,将所述至少一个数据库中,可进行写操作的数据库作为第一数据库,得到所述至少一个第一数据库。
在实际应用中,当操作类型为写操作时,可以从至少一个数据库中,确定出可进行写操作的数据库作为第一数据库,得到至少一个第一数据库。当第一数据库为一个第一数据库时,第一数据库可以是第二类型数据库或第三类型数据库中的任一种;当第二数据库为至少两个第一数据库时,第一数据库可以是第二类型数据库和/或第三类型数据库。
在本实施例中,当操作类型为写操作时,可以将至少一个数据库中可进行写操作的数据库作为第一数据库,为后续对数据库执行写操作提供基础。
在一个实施例中,所述从预设的至少一个链接地址中,确定出至少一个目标链接地址,可以包括如下步骤:
基于预设的数据库连接池中的至少一个链接地址,获取所述至少一个链接地址中每个链接地址对应的数据库可进行的操作类型;针对对应数据库可进行写操作的至少一个链接地址,将处于空闲状态的链接地址,作为目标链接地址,得到至少一个目标链接地址。
在接收到操作类型为写操作的业务请求时,针对预设的数据库连接池中的至少一个链接地址,可以获取至少一个链接地址中每个链接地址对应的数据库可进行的操作类型,并从中确定出对应数据库可进行写操作的至少一个链接地址。
由于数据库连接池中的链接地址可供不同使用者使用,针对对应数据库可进行写操作的至少一个链接地址中的每一链接地址,可以获取链接地址对应的链接状态,该链接状态用于描述描述链接地址处于空闲状态或占用状态。在确定每一链接地址对应的链接状态后,可以将处于空闲状态的链接地址作为目标链接地址,得到至少一个目标链接地址。在一个示例中,在获取链接地址对应的链接状态时,可以采用以下任意一种:轮询方式、随机获取方式、加权最小连接调度方式、最小连接数法。
在本实施例中,基于预设的数据库连接池中的至少一个链接地址,通过获取至少一个链接地址中每个链接地址对应的数据库可进行的操作类型,针对对应数据库可进行写操作的至少一个链接地址,将处于空闲状态的链接地址,作为目标链接地址,得到至少一个目标链接地址,实现了将对应数据库可进行写操作并且处于空闲状态的链接地址作为目标链接地址,为及时通过链接地址发送与写操作关联的指令并对数据库进行写操作提供数据基础。
在一个实施例中,所述方法还可以包括如下步骤:
获取至少两个数据库的链接地址;根据至少两个链接地址中的每个链接地址,分别向所述至少两个数据库中的每个数据库发送连接请求;当接收到针对所述连接请求的响应信息时,将发送响应信息的至少两个数据库中每个数据库所对应的链接地址,加入到数据库连接池,以便在接收到业务请求时,从所述数据库连接池中获取链接地址,并对该链接地址对应的数据库,执行与所述业务请求相应的操作。
在本实施例中,业务系统可以获取至少两个数据库各自对应的链接地址。具体的,可以预先在业务系统中保存链接地址,链接地址可以保存在配置文件中,当业务系统启动时,可以从配置文件中获取至少两个数据库的链接地址。或者,业务系统可以与配置中心通信连接,当启动后,业务系统可以从配置中心获取链接地址或者存储有链接地址的配置文件。
在至少两个数据库的链接地址中,可以包括仅允许进行读操作的数据库所对应的链接地址,以及可进行写操作的数据库所对应的链接地址。其中,可以进行写操作的数据库,可以是允许进行写操作和读操作的数据库,和/或,可以是仅允许进行写操作的数据库。
在获取到至少两个数据库的链接地址后,可以根据至少两个链接地址中的每个链接地址,分别向至少两个数据库中的每个数据库发送连接请求,以建立业务系统与数据库之间的通信连接。在发送连接请求时,可以根据至少两个链接地址中的每个链接地址,同时发送与各个链接地址对应的链接请求。或者,也可以根据最小连接数和最大连接数向各个数据库发送连接请求,具体而言,针对每个类型的数据库,例如第一类型数据库、第二类型数据库或第三类型数据库,业务系统可以获取当前数据库连接池中该类型数据库对应的链接地址数量,并判断链接地址数量是否小于最小连接数,若是,业务系统可以根据配置文件中的链接地址继续发送连接请求;若否,业务系统可以停止发送连接请求,或继续发送连接请求,直到数据库连接池包含的链接地址数量达到最大连接数。
当业务系统接收到针对连接请求的响应信息时,可以将发送响应信息的至少两个数据库中每个数据库所对应的链接地址,加入到数据库连接池。在发送响应信息的数据库中,至少包括仅允许进行读操作的数据库,以及,可进行写操作的数据库。则在接收到业务请求时,可以从数据库连接池中获取链接地址,并对该链接地址对应的数据库,执行与业务请求相应的操作。
在一个示例中,在与数据库成功建立通信连接后,业务系统还可以按照预设时间间隔,在数据库中执行检查类型的SQL语句,以判断当前与数据库的通信连接是否有效。
在本实施例中,通过根据至少两个链接地址中的每个链接地址,分别向至少两个数据库中的每个数据库发送连接请求,并在接收到针对连接请求的响应信息时,将发送响应信息的至少两个数据库中每个数据库所对应的链接地址,加入到数据库连接池,构建数据库连接池,无需业务系统反复与数据库建立连接,有效节省对业务系统或数据库的资源消耗,并且为后续及时响应业务请求提供基础。
在一个实施例中,如图3所示,与业务系统通信的数据库集群中,可以包括至少一个主库(即主数据库,master database)1021和至少一个从库(即从属数据库,slavedatabase)1022,主库1021可以与至少一个从库1022通信连接,主库与从库建立数据库连接后,从库可以对主库的数据进行同步。
在本实施例中,读库可以为第一类型数据库,写库可以为第二类型数据库,即在读库中仅对数据进行读操作,而在写库中可以对数据进行度读操作或者写操作。在至少一个第一数据库中,可以包括主库和/或从库,在至少一个第二数据库中,可以包括主库和/或从库。所述方法还可以包括如下步骤:
步骤301,从主库中获取至少一个从库状态信息;所述至少一个从库状态信息,为所述主库从通信连接的至少一个从库中获取的从库的状态信息。
作为一示例,从库状态信息为描述从库当前工作状态的状态信息,通过从库状态信息,可以确定从库是否正常运行、运行异常或运行繁忙。
在具体实现中,业务系统可以从主库中获取至少一个从库状态信息,其中,至少一个从库状态信息中的每个从库状态信息,可以是主库从通信连接的至少一个从库中获取的从库对应的状态信息。
在实际应用中,当主库与至少一个从库建立连接后,主库可以按照预设时间间隔获取至少一个从库对应的从库状态信息,并将至少一个从库状态信息存储到主库预设的从库状态列表中。例如,业务系统可以通过心跳机制从主库中获取从库状态信息,即主库可以按照预设时间间隔向业务系统发送心跳信息,该心跳信息中包含了主库按照预设时间间隔获取的从库状态信息。
在一示例中,从库状态列表中还可以包括更新者、更新时间或备注信息中的任一项或多项,如下表1所示:
字段 | 字段类型 | 中文描述 |
SlaveDbSts | varchar2(1) | 从库状态 |
updateBy | varchar 2(64) | 更新者 |
updateTm | timestamp | 更新时间 |
remark | varchar 2(64) | 备注信息 |
步骤302,从所述至少一个从库中,确定出链接地址待更新的至少一个待更新从库。
在实际应用中,数据库连接池中可以存储有至少一个从库对应的链接地址,业务系统可以对数据库连接池中的链接地址进行维护。具体的,在获取至少一个从库状态信息后,针对至少一个从库状态信息中的每个从库状态信息,业务系统可以根据该从库状态信息,确定是否对该从库状态信息对应从库的链接地址进行更新,进而可以从对应的至少一个从库中,确定出链接地址待更新的至少一个待更新从库。
步骤303,根据所述至少一个待更新从库中每个待更新从库对应的链接地址,对数据库连接池中的链接地址进行更新。
在确定出至少一个待更新从库后,则可以根据至少一个待更新从库中每个待更新从库对应的链接地址,对数据库连接池中的链接地址进行更新,例如移除或新增,例如,可以将待更新从库对应的链接地址,从数据库连接池中移除,或者,将待更新从库对应的链接地址,添加到数据库连接池中。
在本实施例中,通过从主库中获取至少一个从库状态信息;并根据从库状态信息,从至少一个从库中,确定出链接地址待更新的至少一个待更新从库,进而可以根据至少一个待更新从库中每个待更新从库对应的链接地址,对数据库连接池中的链接地址进行更新,能够对数据库连接池中的链接地址进行及时维护,并且,业务系统通过从主库获取从库状态信息,可对各个从库的状态进行实时监控。
在一个实施例中,所述根据所述至少一个待更新从库中每个待更新从库对应的链接地址,对数据库连接池中的链接地址进行更新,可以包括如下步骤:
将从库状态信息为繁忙状态信息或异常状态信息的从库,作为目标从库;将所述目标从库对应的链接地址从所述数据库连接池中移除。
作为一示例,繁忙状态信息用于指示从库处于繁忙状态,例如频繁进行数据读取,数据处理量高;异常状态信息用于指示从库处于异常状态,例如从库无法正常响应指令。
具体的,在获取到至少一个从库状态信息后,可以确定至少一个从库状态信息中每个从库状态信息的具体类型,针对从库状态信息为繁忙状态信息或异常状态信息的从库,可以将其对应的从库确定为目标从库,并将该目标从库对应的链接地址从数据库连接池中移除。
在另一示例中,若从库状态信息从繁忙状态信息转变为正常状态信息,或者从异常状态信息转变为正常状态信息,则可以该从库状态信息对应从库的链接地址,重新添加到数据库连接池中。
在本实施例中,通过将从库状态信息为繁忙状态信息或异常状态信息的从库作为目标从库,并将目标从库对应的链接地址从所述数据库连接池中移除,能够在保持业务系统与从库的通信连接时,避免业务系统访问处于繁忙状态或异常状态的从库,而是根据维护后的链接地址,访问处于正常状态的从库,提高有效提高业务请求的响应效率。
为了使本领域技术人员能够更好地理解上述步骤,以下通过一个例子对本申请实施例加以示例性说明,但应当理解的是,本申请实施例并不限于此。
如图4所示,主库可以与从库1、从库2……从库N等至少一个从库连接,通过主库与从库共同组成高可用数据库集群,当与至少一个从库建立连接后,主库可以通过心跳机制,获取至少一个从库按照预设时间间隔发送的从库状态信息,并将从库状态信息存储到从库状态列表中。
在业务系统启动后,业务系统可以根据配置文件中存储的链接地址,与从库建立连接,并将对应的链接地址存储到数据库连接池中,同时,业务系统还可以与主库建立连接,获取主库按照预设时间间隔发送的从库状态列表,根据从库列表中的从库状态信息,对各个从库的状态进行检查,进而可以将根据从库状态信息对数据库连接池中从库的链接地址进行维护,将处于正常状态的从库对应的链接地址继续保留在数据库连接池中,针对处于异常状态或繁忙状态的从库,将其对应的链接地址从数据库连接池中移除。
当接收到业务请求时,业务系统可以从业务请求中读取交易码,并根据交易码确定操作类型,当操作类型为读操作时,可以从数据库连接池中获取从库对应的链接地址,并根据该链接地址对从库进行访问。当操作类型为写操作时,可以从数据库连接池中获取主库对应的链接地址,并根据主库对应的链接地址,向主库发送数据写指令。在一个示例中,可以根据业务请求的紧急程度,确定访问的数据库,例如,针对写操作,虽然可以在主库或从库中进行,在紧急程度低于阈值时,可以在从库中执行该操作。
应该理解的是,虽然图1-4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-4中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图5所示,提供了一种数据库访问装置,应用于业务系统,所述装置包括:
业务请求接收模块501,用于接收业务请求,所述业务请求携带操作类型;所述操作类型用于描述对数据库进行读操作或者写操作;
第一数据库确定模块502,用于从至少一个数据库中确定出至少一个第一数据库;
目标链接地址确定模块503,用于从预设的至少一个链接地址中,确定出至少一个目标链接地址;
第二数据库确定模块504,用于基于所述至少一个目标链接地址,从所述至少一个第一数据库中确定出分别与各个目标链接地址对应的第二数据库;
操作执行模块505,用于基于所述操作类型,对所述各个第二数据库中的每一第二数据库分别执行与所述业务请求相应的操作。
在一个实施例中,所述第一数据库确定模块502,包括:
读操作数据库确定子模块,用于当所述操作类型为读操作时,将所述至少一个数据库中,可进行读操作的数据库作为第一数据库,得到所述至少一个第一数据库。
在一个实施例中,所述目标链接地址确定模块503,包括:
第一操作类型确定子模块,用于基于预设的数据库连接池中的至少一个链接地址,获取所述至少一个链接地址中每个链接地址对应的数据库可进行的操作类型;
第一链接地址确定子模块,用于针对对应数据库可进行读操作的至少一个链接地址中,将处于空闲状态的链接地址作为目标链接地址,得到至少一个目标链接地址。
在一个实施例中,所述第一数据库确定模块502,包括:
写操作数据库确定子模块,用于当所述操作类型为写操作时,将所述至少一个数据库中,可进行写操作的数据库作为第一数据库,得到所述至少一个第一数据库。
在一个实施例中,所述目标链接地址确定模块503,包括:
第二操作类型确定子模块,用于基于预设的数据库连接池中的至少一个链接地址,获取所述至少一个链接地址中每个链接地址对应的数据库可进行的操作类型;
第二链接地址确定子模块,用于针对对应数据库可进行写操作的至少一个链接地址,将处于空闲状态的链接地址,作为目标链接地址,得到至少一个目标链接地址。
在一个实施例中,所述至少一个第二数据库中包括主库和/或从库,所述主库与至少一个所述从库通信连接,所述装置还包括:
从库状态信息获取模块,用于从主库中获取至少一个从库状态信息;所述至少一个从库状态信息为所述主库从通信连接的至少一个从库中获取的从库的状态信息;
待更新从库确定模块,用于从所述至少一个从库中,确定出链接地址待更新的至少一个待更新从库;
链接地址更新模块,用于根据所述至少一个待更新从库中每个待更新从库对应的链接地址,对数据库连接池中的链接地址进行更新。
在一个实施例中,所述链接地址更新模块,包括:
目标从库确定子模块,用于将从库状态信息为繁忙状态信息或异常状态信息的从库,作为目标从库;
链接地址移除子模块,用于将所述目标从库对应的链接地址从所述数据库连接池中移除。
在一个实施例中,所述装置还包括:
链接地址获取模块,用于获取至少两个数据库的链接地址;
连接请求模块,用于根据至少两个链接地址中的每个链接地址,分别向所述至少两个数据库中的每个数据库发送连接请求;
连接池构建模块,用于当接收到针对所述连接请求的响应信息时,将发送响应信息的至少两个数据库中每个数据库所对应的链接地址,加入到数据库连接池,以便在接收到业务请求时,从所述数据库连接池中获取链接地址,并对该链接地址对应的数据库,执行与所述业务请求相应的操作。
关于一种数据库访问装置的具体限定可以参见上文中对于一种数据库访问方法的限定,在此不再赘述。上述一种数据库访问装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储业务数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据库访问方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现如上所述方法的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上所述方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (11)
1.一种数据库访问方法,其特征在于,所述方法包括:
接收业务请求,所述业务请求携带操作类型;所述操作类型用于描述对数据库进行读操作或者写操作;
从至少一个数据库中确定出至少一个第一数据库;
从预设的至少一个链接地址中,确定出至少一个目标链接地址;
基于所述至少一个目标链接地址,从所述至少一个第一数据库中确定出分别与各个目标链接地址对应的第二数据库;
基于所述操作类型,对所述各个第二数据库中的每一第二数据库分别执行与所述业务请求相应的操作。
2.根据权利要求1所述的方法,其特征在于,所述从至少一个数据库中确定出至少一个第一数据库,包括:
当所述操作类型为读操作时,将所述至少一个数据库中,可进行读操作的数据库作为第一数据库,得到所述至少一个第一数据库。
3.根据权利要求2所述的方法,其特征在于,所述从预设的至少一个链接地址中,确定出至少一个目标链接地址,包括:
基于预设的数据库连接池中的至少一个链接地址,获取所述至少一个链接地址中每个链接地址对应的数据库可进行的操作类型;
针对对应数据库可进行读操作的至少一个链接地址中,将处于空闲状态的链接地址作为目标链接地址,得到至少一个目标链接地址。
4.根据权利要求1所述的方法,其特征在于,所述从至少一个数据库中确定出至少一个第一数据库,包括:
当所述操作类型为写操作时,将所述至少一个数据库中,可进行写操作的数据库作为第一数据库,得到所述至少一个第一数据库。
5.根据权利要求4所述的方法,其特征在于,所述从预设的至少一个链接地址中,确定出至少一个目标链接地址,包括:
基于预设的数据库连接池中的至少一个链接地址,获取所述至少一个链接地址中每个链接地址对应的数据库可进行的操作类型;
针对对应数据库可进行写操作的至少一个链接地址,将处于空闲状态的链接地址,作为目标链接地址,得到至少一个目标链接地址。
6.根据权利要求3或5所述的方法,其特征在于,所述至少一个第二数据库中包括主库和/或从库,所述主库与至少一个所述从库通信连接,所述方法还包括:
从主库中获取至少一个从库状态信息;所述至少一个从库状态信息为所述主库从通信连接的至少一个从库中获取的从库的状态信息;
从所述至少一个从库中,确定出链接地址待更新的至少一个待更新从库;
根据所述至少一个待更新从库中每个待更新从库对应的链接地址,对数据库连接池中的链接地址进行更新。
7.根据权利要求6所述的方法,其特征在于,所述根据所述至少一个待更新从库中每个待更新从库对应的链接地址,对数据库连接池中的链接地址进行更新,包括:
将从库状态信息为繁忙状态信息或异常状态信息的从库,作为目标从库;
将所述目标从库对应的链接地址从所述数据库连接池中移除。
8.根据权利要求3或5所述的方法,其特征在于,还包括:
获取至少两个数据库的链接地址;
根据至少两个链接地址中的每个链接地址,分别向所述至少两个数据库中的每个数据库发送连接请求;
当接收到针对所述连接请求的响应信息时,将发送响应信息的至少两个数据库中每个数据库所对应的链接地址,加入到数据库连接池,以便在接收到业务请求时,从所述数据库连接池中获取链接地址,并对该链接地址对应的数据库,执行与所述业务请求相应的操作。
9.一种数据库访问装置,其特征在于,所述装置包括:
业务请求接收模块,用于接收业务请求,所述业务请求携带操作类型;所述操作类型用于描述对数据库进行读操作或者写操作;
第一数据库确定模块,用于从至少一个数据库中确定出至少一个第一数据库;
目标链接地址确定模块,用于从预设的至少一个链接地址中,确定出至少一个目标链接地址;
第二数据库确定模块,用于基于所述至少一个目标链接地址,从所述至少一个第一数据库中确定出分别与各个目标链接地址对应的第二数据库;
操作执行模块,用于基于所述操作类型,对所述各个第二数据库中的每一第二数据库分别执行与所述业务请求相应的操作。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011581118.XA CN112711606A (zh) | 2020-12-28 | 2020-12-28 | 数据库访问方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011581118.XA CN112711606A (zh) | 2020-12-28 | 2020-12-28 | 数据库访问方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112711606A true CN112711606A (zh) | 2021-04-27 |
Family
ID=75545824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011581118.XA Pending CN112711606A (zh) | 2020-12-28 | 2020-12-28 | 数据库访问方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112711606A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113312395A (zh) * | 2021-06-23 | 2021-08-27 | 中国农业银行股份有限公司 | 数据访问方法及设备 |
CN114500628A (zh) * | 2021-12-30 | 2022-05-13 | 天翼云科技有限公司 | 一种连接选择方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622427A (zh) * | 2012-02-27 | 2012-08-01 | 杭州闪亮科技有限公司 | 读写分离数据库的方法及系统 |
CN106649857A (zh) * | 2016-12-30 | 2017-05-10 | 北京恒华伟业科技股份有限公司 | 一种基于读写分离的数据库操作方法及装置 |
CN107665210A (zh) * | 2016-07-28 | 2018-02-06 | 南京中兴新软件有限责任公司 | 数据处理方法及装置 |
-
2020
- 2020-12-28 CN CN202011581118.XA patent/CN112711606A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622427A (zh) * | 2012-02-27 | 2012-08-01 | 杭州闪亮科技有限公司 | 读写分离数据库的方法及系统 |
CN107665210A (zh) * | 2016-07-28 | 2018-02-06 | 南京中兴新软件有限责任公司 | 数据处理方法及装置 |
CN106649857A (zh) * | 2016-12-30 | 2017-05-10 | 北京恒华伟业科技股份有限公司 | 一种基于读写分离的数据库操作方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113312395A (zh) * | 2021-06-23 | 2021-08-27 | 中国农业银行股份有限公司 | 数据访问方法及设备 |
CN114500628A (zh) * | 2021-12-30 | 2022-05-13 | 天翼云科技有限公司 | 一种连接选择方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108509462B (zh) | 一种同步活动事务表的方法及装置 | |
CN110196759B (zh) | 分布式事务处理方法和装置、存储介质及电子装置 | |
CN110445828A (zh) | 一种基于Redis的数据分布式处理方法及其相关设备 | |
CN112711606A (zh) | 数据库访问方法、装置、计算机设备和存储介质 | |
CN113111038B (zh) | 文件存储方法、装置、服务器及存储介质 | |
CN113111036A (zh) | 一种基于hdfs的小文件处理方法、装置、介质及电子设备 | |
CN112613993A (zh) | 交易数据处理方法、装置、计算机设备和存储介质 | |
CN112395157A (zh) | 审计日志的获取方法、装置、计算机设备和存储介质 | |
CN111885184A (zh) | 高并发场景下热点访问关键字处理方法和装置 | |
CN112306383B (zh) | 执行作业的方法、计算节点、管理节点及计算设备 | |
CN114237989B (zh) | 数据库服务部署、容灾方法及装置 | |
CN111522870A (zh) | 数据库访问方法、中间件和可读存储介质 | |
US8359601B2 (en) | Data processing method, cluster system, and data processing program | |
CN109271869B (zh) | 人脸特征值提取方法、装置、计算机设备及存储介质 | |
CN112905676A (zh) | 一种数据文件的导入方法及装置 | |
CN112765126B (zh) | 数据库事务的管理方法、装置、计算机设备和存储介质 | |
CN117520278A (zh) | 一种分布式文件系统多客户端高精度目录配额控制方法 | |
CN113094431A (zh) | 读写分离方法、装置及服务器 | |
CN113672173B (zh) | 一种存储卷扩容方法、系统、设备及可读存储介质 | |
CN111399753A (zh) | 写入图片的方法和装置 | |
CN112527561B (zh) | 基于物联网云存储的数据备份方法及装置 | |
CN114840488A (zh) | 一种基于超融合结构的分布式存储方法、系统及存储介质 | |
CN114722261A (zh) | 一种资源的处理方法、装置、电子设备及存储介质 | |
CN117390040B (zh) | 基于实时宽表的业务请求处理方法、设备及存储介质 | |
CN117010022B (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 |