CN103729373B - 一种数据库代理方法和装置 - Google Patents
一种数据库代理方法和装置 Download PDFInfo
- Publication number
- CN103729373B CN103729373B CN201210390622.0A CN201210390622A CN103729373B CN 103729373 B CN103729373 B CN 103729373B CN 201210390622 A CN201210390622 A CN 201210390622A CN 103729373 B CN103729373 B CN 103729373B
- Authority
- CN
- China
- Prior art keywords
- database
- connection
- pool
- thread
- 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.)
- Active
Links
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库代理方法和装置,其中数据库代理方法包括:为多个数据库中的每个数据库建立连接池;接收数据库应用端发送的请求;按接收的请求,调取连接池中的数据库连接进行数据库操作;将执行结果返回给数据库应用端;其中,所述调取连接池中的数据库连接进行数据库操作包括:解析请求中的信息获得数据库操作命令;根据数据库操作命令和配置信息确定作为操作对象的数据库,其中所述配置信息包含所述多个数据库的数据库类型;从所确定的数据库所对应的连接池中调取数据库连接,应用该数据库连接将数据库操作命令发送给所确定的数据库,并从该数据库接收执行结果。
Description
技术领域
本发明涉及数据库技术领域,特别涉及一种数据库代理方法和装置。
背景技术
数据库代理是处于底层数据库和用户应用系统之间的,主要用于屏蔽异构数据库的底层细节问题的中间件,是应用服务器与后台的数据库之间进行通讯的桥梁。应用服务器需要对某个数据库执行操作请求,例如SQL请求时,通过数据库中间件搜索匹配的数据库连接,并将SQL请求转发给对应的数据库,通过数据库中间件对数据库进行操作。其主要作用是封装复杂繁琐的数据库应用接口和数据库操作过程,简化应用程序的数据库操作,提高应用程序开发效率。
但是目前很多数据库代理软件没有做后端数据库读写分离的处理,或者多个数据库使用同一个连接池,对于数据库操作频繁、数据量大的请求,增加了数据库压力,数据库响应时间增加,影响系统性能,因此,亟需一种查询效率高、响应时间短的数据库代理方法和装置。
发明内容
本发明提供一种数据库代理方法和装置,以达到查询效率高、响应时间短的效果。为达到上述目的,本发明采用如下技术方案:
本发明公开了一种数据库代理方法,包括:
为多个数据库中的每个数据库建立连接池;
接收数据库应用端发送的请求;
按接收的请求,调取连接池中的数据库连接进行数据库操作;
将执行结果返回给数据库应用端;
其中,所述调取连接池中的数据库连接进行数据库操作包括:
解析请求中的信息获得数据库操作命令;
根据数据库操作命令和配置信息确定作为操作对象的数据库,所述配置信息包含所述多个数据库的数据库类型;
从所确定的数据库所对应的连接池中调取数据库连接,应用该数据库连接将数据库操作命令发送给所确定的数据库,并从该数据库接收执行结果。
其中,该方法还包括在接收请求之前建立线程池,线程池中包括至少一个线程;
所述按接收的请求,调取连接池中的数据库连接进行数据库操作具体包括:调用线程池中一个空闲的线程,所述线程按接收的请求,调取连接池中的数据库连接进行数据库操作;完成数据库操作后,将该线程的状态设置为空闲或删除该线程。
其中,所述数据库包括用于执行数据库写操作的主数据库和用于执行数据库读操作的从数据库;
所述根据数据库操作命令和配置信息确定作为操作对象的数据库具体包括:
判断数据库操作命令是否为执行读的操作,若判断为是,则确定数据库类型为从数据库,若判断为否,则确定数据库类型为主数据库;进而根据配置信息包含的数据库类型,确定作为操作对象的数据库。
其中,当通过数据库连接与数据库通信出现故障时,将所述数据库连接所属的连接池中的数据库连接的状态设置为异常,并定时从该连接池调取一个数据库连接来与数据库重新建立连接,直到正常连接后将所述连接池中的数据库连接的状态设置为正常。
其中,从该数据库接收执行结果完成后,将所调取的数据库连接的状态设置为空闲或删除该数据库连接。
所述为多个数据库中的每个数据库建立连接池具体包括:为每个数据库,创建预设数目的数据库连接;
所述从所确定的数据库所对应的连接池中调取数据库连接具体包括:判断所确定的数据库所对应的连接池中是否有空闲的数据库连接,若判断为是,则直接从连接池中调取空闲的数据库连接,若判断为否,则进一步判断数据库连接的数目是否达到了预设的最大值,若判断为是,则延迟一段预设时间后判断连接池中是否有空闲的数据库连接,若判断为否,则创建新的数据库连接。
本发明还公开了一种数据库代理的装置,该装置与多个数据库连接,并包括连接配置单元、交互单元和操作单元:
连接配置单元,用于为多个数据库中的每个数据库建立连接池;
交互单元,用于接收数据库应用端发送的请求,将执行结果返回给数据库应用端;
操作单元,用于从交互单元接收请求、按接收的请求,调取连接池中的数据库连接进行数据库操作,包括:
解析模块,用于解析请求中的信息获得数据库操作命令,并将数据库操作命令发送给选择模块和执行模块;
选择模块,用于根据数据库操作命令和配置信息确定作为操作对象的数据库,并将确定结果发送给执行模块,所述配置信息包含所述多个数据库的数据库类型;
执行模块,用于从所确定的数据库所对应的连接池中调取数据库连接,应用该数据库连接将数据库操作命令发送给所确定的数据库,并从该数据库接收执行结果,并将执行结果发送给交互单元。
其中,数据库代理装置还包括一个线程配置单元,用于在操作单元接收到请求之前建立一个线程池,线程池中包括至少一个线程;在操作单元接收到请求时,调用线程池中的一个空闲的线程供操作单元按接收的请求,调取连接池中的数据库连接进行数据库操作;在操作单元完成数据库操作之后,将该线程的状态设置为空闲或删除该线程。
其中,所述数据库包括用于执行数据库写操作的主数据库和用于执行数据库读操作的从数据库;
所述连接配置单元,用于在每一个连接池中,创建预设数目的数据库连接;
所述选择模块,用于判断数据库操作命令是否为执行读的操作,若判断为是,则确定数据库类型为从数据库,若判断为否,则确定数据库类型为主数据库;进而根据配置信息包含的数据库类型,确定作为操作对象的数据库。
其中,所述执行模块,进一步用于当通过数据库连接与数据库通信出现故障时,将所述数据库连接所属的连接池中的数据库连接的状态设置为异常,并定时从该连接池调取一个数据库连接来与数据库重新建立连接,直到正常连接后将所述连接池中的数据库连接的状态设置为正常。
其中,所述执行模块,进一步用于判断与所确定的数据库所对应的连接池中是否有空闲的数据库连接,若判断为是,则直接从连接池中调取空闲的数据库连接,若判断为否,则进一步判断数据库连接的数目是否达到了预设的最大值,若判断为是,则延迟一段预设时间后判断连接池中是否有空闲的数据库连接,若判断为否,则发出创建指令给连接配置单元,并得到新创建的数据库连接;
所述连接配置单元,进一步用于在接收到创建指令时,在与所确定的数据库所对应的连接池中创建新的数据库连接;
且所述连接配置单元,进一步用于在所述执行模块从数据库接收执行结果后,将执行模块应用的数据库连接的状态置为空闲或删除该数据库连接。
本发明实施例的有益效果是:通过数据库代理根据数据库操作命令和配置信息选择对应的数据库,从而为数据库操作提供统一的接口;通过对每一个数据库建立一个连接池,在进行数据库操作时使用连接池中的数据库连接,使得响应时间更短、查询效率更高。
附图说明
图1为本发明数据库代理方法的第一较佳实施例的流程图;
图2为第一较佳实施例的详细的流程图;
图3为图2之中步骤S320与S330的具体实施方式的流程图;
图4为本发明数据库代理装置的第一较佳实施例的框图;
图5为本发明数据库代理装置的第二较佳实施例的框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步的详细描述。
图1为本发明数据库代理方法的第一较佳实施例的流程图,接收数据库应用端根据应用需要发送的请求,并将执行结果返回给数据库应用端,该方法包括以下的步骤:
S100、为多个数据库中的每个数据库建立连接池。
S200、接收数据库应用端发送的请求。
S300、按接收的请求,调取连接池中的数据库连接进行数据库操作。
S400、将执行结果返回给数据库应用端。
图2为第一较佳实施例的详细的流程图。图2与图1相比,详细地说明步骤S300,其中,步骤S300具体包括:
S310、解析请求中的信息获得数据库操作命令。
S320、根据数据库操作命令和配置信息确定作为操作对象的数据库,所述配置信息包含所述多个数据库的数据库类型。
S330、从所确定的数据库所对应的连接池中调取数据库连接,应用该数据库连接将数据库操作命令发送给所确定的数据库,并从该数据库接收执行结果。
步骤S100中,与每个数据库进行连接时,相对应地建立一个连接池,连接池中具有预设数目的数据库连接,当然预设数目可以根据实际工作需要使用配置文件进行调整。
通过数据库代理根据数据库操作命令和配置信息选择对应的数据库,从而为数据库操作提供统一的接口;通过为每一个数据库建立一个连接池,在进行数据库操作时使用连接池中的数据库连接,使得响应时间更短、查询效率更高。
在一实施例中,步骤S320之中,数据库包括用于执行数据库写操作的主数据库和用于执行数据库读操作的从数据库,因此配置信息中各数据库的数据库类型为主数据库或从数据库。步骤S320之中根据数据库操作命令确定数据库类型,包括判断数据库操作命令是否为执行读的操作,若判断为是,则确定数据库类型为从数据库,若判断为否,表示执行写的操作,则确定数据库类型为主数据库;进而根据配置信息包含的数据库类型,确定作为操作对象的数据库。
本实施例中,配置信息至少包含数据库类型,也可以包含数据库的名称、IP地址和端口等信息,数据库在连接或断开时,配置信息会被相应地修改,因而能够根据配置信息来判断数据库的类型为主数据库还是从数据库,根据数据库类型确定了使用的数据库之后可以知道所确定的数据库的名称、IP地址和端口等信息,这样就实现了主数据库执行写操作而从数据库执行读操作的读写分离机制。
数据库接收上述步骤S330之中发送的数据库操作命令之后会执行操作命令,如果是由主数据库执行了写操作,则在主数据库和从数据库之间进行数据库同步操作。主从数据库的同步为数据库的惯常操作,采用现有技术便可实现。
采用上述方法,实现了读写分离,减少了读写同时在一个数据库中操作带来的错误,提高数据库操作的成功率。
此外,现实中与数据库的连接可能出现异常情况,如果在步骤S330中,无法将数据库操作命令发送给数据库或者无法从数据库接收执行结果,则判断通过数据库连接与数据库通信出现故障,此时将所述数据库连接所属的连接池中的全部数据库连接的状态设置为异常,并定时从该连接池调取一个数据库连接来与数据库重新建立连接,直到正常连接后将所述连接池中的数据库连接的状态设置为正常。再相应地发送数据库操作命令或接收执行结果,这样的针对数据库连接错误,定时请求连接的机制,能实现纠错。
采用本实施例中技术方案,当与数据库间连接发生异常时,使用一个数据库连接来与数据库重新建立连接,避免了由于连接池中的多个数据库连接同时与一个数据库重建连接,而带来的网络资源浪费和数据库的操作负担。
本实施例的具体实现中可以采用以下方式,数据库操作命令是SQL命令,所述数据库应用端发送的请求,是由数据库应用端调用MYSQL数据库操作接口生成的请求;因为数据库代理与数据库应用端的交互采用最普通的开源MYSQL协议,减小了接口调用的复杂性;对于用户鉴权,加密可以采用MYSQL自带的加密算法。
在一实施例中,步骤S320与S330的具体实施方式如下所述。
图3为图2之中步骤S320与S330的详细的流程图。其中,对于步骤S320和步骤S330,进行进一步详细叙述。
步骤S320,具体包括:
S320A:判断数据库操作命令是否为执行读的操作,若判断为是,则执行步骤S320B,若判断为否,则执行步骤S320C。
S320B:确定一个从数据库作为操作对象。
S320C:确定一个主数据库作为操作对象。
步骤S330具体包括:
S330A:判断所确定的数据库所对应的连接池中是否有空闲的数据库连接,若判断为是,则执行步骤S330B,若判断为否,则执行步骤S330C。
S330B:直接从连接池中调取一个空闲的数据库连接,执行步骤S330F。
S330C:判断数据库连接的数目是否达到了预设的最大值,若判断为是,则执行步骤S330D,若判断为否,则执行步骤S330E。
S330D:延迟一段预设时间后返回步骤S330A以重新判断连接池中是否有空闲的数据库连接。
S330E:创建新的数据库连接,执行步骤S330F。
S330F:应用该数据库连接将数据库操作命令发送给数据库,并从该数据库接收执行结果。
当然对于数据库连接,预设的最大值可以根据实际工作需要使用配置文件进行调整;由于数据库和连接池构成一一对应的关系而且根据实际工作需要设置了允许建立的数据库连接的最大值,因此保证了请求的独立性和处理速度,使得响应时间更短;
步骤S330F之中,从该数据库接收执行结果后,还释放数据库连接,即根据连接池中数据库连接的数目,将该所调取的数据库连接的状态设置为空闲(waiting)以供后续的数据库操作命令使用,或删除该数据库连接以释放系统资源。
本发明第二较佳实施例提供的一种数据库代理方法,接收数据库应用端根据应用需要发送的请求,并将执行结果返回给数据库应用端,第二较佳实施例与第一较佳实施例的方法大致相同,不同之处在于:
还包括在接收请求之前建立线程池,线程池中包括至少一个线程;接收请求后,调用线程池中一个空闲的线程用于进行数据库操作,所述线程按接收的请求,调取连接池中的数据库连接进行数据库操作;以及在完成数据库操作后,释放该线程,即将该线程的状态设置为空闲(waiting)或删除该线程。因此可以实现多线程机制,加快处理速度且可以并行地处理多个请求。
图4为本发明数据库代理装置的第一较佳实施例的框图。该装置与多个数据库连接,并包括:连接配置单元100、交互单元200,和操作单元300。操作单元300包括解析模块310、选择模块320,和执行模块330。
连接配置单元100,用于为多个数据库中的每个数据库建立连接池(ConnectPool),每个连接池中具有至少一个数据库连接;交互单元200,用于接收数据库应用端发送的请求,以及将执行结果返回给数据库应用端;操作单元300,用于从交互单元200接收请求、按接收的请求,调取连接池中的数据库连接进行数据库操作。
其中,解析模块310,用于解析请求中的信息获得数据库操作命令,并将数据库操作命令发送给选择模块320和执行模块330。
选择模块320,用于根据数据库操作命令和配置信息确定作为操作对象的数据库,并将确定结果发送给执行模块330,所述配置信息包含所述多个数据库的数据库类型。
执行模块330,用于从所确定的数据库所对应的连接池中调取数据库连接,应用该数据库连接将数据库操作命令发送给所确定的数据库,并从数据库接收执行结果,并将执行结果发送给交互单元200。
通过数据库代理根据数据库操作命令和配置信息选择对应的数据库,从而为数据库操作提供统一的接口;通过为每一个数据库建立一个连接池,在进行数据库操作时使用连接池中的数据库连接,使得响应时间更短、查询效率更高。
其中,数据库包括用于执行数据库写操作的主数据库和用于执行数据库读操作的从数据库;
连接配置单元100,用于在每一个连接池中,创建预设数目的数据库连接;选择模块320,用于判断数据库操作命令是否为执行读的操作,若判断为是,则确定数据库类型为从数据库,若判断为否,则确定数据库类型为主数据库;进而根据配置信息包含的数据库类型,确定作为操作对象的数据库。
采用上述方法,实现了读写分离,减少了读写同时在一个数据库中操作带来的错误,提高数据库操作的成功率。
其中,执行模块330,用于判断与所确定的数据库所对应的连接池中是否有空闲的数据库连接,若判断为是表示存在空闲的数据库连接,则直接从连接池中调取空闲的数据库连接,若判断为否表示不存在空闲的数据库连接,则进一步判断数据库连接的数目是否达到了预设的最大值,若判断为是,则延迟一段预设时间后判断连接池中是否有空闲的数据库连接,若判断为否,则发出创建指令给连接配置单元100,并得到新创建的数据库连接;连接配置单元100,进一步用于在接收到创建指令时,在与所确定的数据库所对应的连接池中创建新的数据库连接;且连接配置单元100,进一步用于在执行模块330从数据库接收执行结果后,将执行模块330调取的数据库连接的状态置为空闲或删除该数据库连接。
需要说明的是,这里数据库连接的预设的最大值可以通过配置信息来配置,且不同数据库对应的连接池,可以具有不同的预设的最大值,本实施例通过设定最大值,可以避免过度地占用系统资源。连接配置单元100将数据库连接的状态设置为空闲,可以供后续的数据库操作命令使用,删除该数据库连接可以释放系统资源。
本实施例中,执行模块330,发出创建指令之后,经过一段预设的等待间隔,再次判断连接池中是否有空闲的数据库连接,或者是由连接配置单元100针对创建指令发出响应信号通知执行模块330执行调取数据库连接的操作,类似的方法较多,不以本实施例的公开为限。
就本实施例更具体地讲,数据库类型通过配置信息来存储。本实施例中,配置信息可以包含数据库的名称、IP地址和端口,以及数据库类型等信息,数据库连接或断开时,配置信息会被相应地修改,因而能够根据配置信息来判断数据库的类型为主数据库还是从数据库,根据数据库类型确定了使用的数据库之后可以知道所确定的数据库的名称、IP地址和端口等信息,这样就实现了主数据库执行写操作而从数据库执行读操作的读写分离机制。数据库连接配置单元100为各个连接池,创建预设数目的数据库连接,预设数目可以通过数据库的配置信息来配置,且不同数据库对应的连接池,可以具有不同数目的数据库连接。
现实中与数据库的连接可能出现异常情况,如果无法将数据库操作命令发送给数据库,或者无法从数据库接收执行结果,则判断与数据库的连接出现故障,故本实施例还具有以下的纠错机制:当通过数据库连接与数据库通信出现故障时,执行模块330,将该数据库连接所属的连接池中的数据库连接的状态设置为异常,并定时从该连接池调取一个数据库连接来与数据库重新建立连接,直到正常连接后将连接池中的数据库连接的状态设置为正常。与数据库连接正常之后再相应地发送数据库操作命令或接收执行结果,这样的针对数据库连接错误,定时请求重新建立连接的机制,能实现纠错。
采用本实施例中技术方案,当与数据库间连接发生异常时,使用一个数据库连接来与数据库重新建立连接,避免了由于连接池中的多个数据库连接同时与一个数据库重建连接,而带来的网络资源浪费和数据库的操作负担。
本实施例中,数据库操作命令是SQL命令,所述数据库应用端发送的请求,是由数据库应用端调用MYSQL数据库操作接口生成的请求;因为数据库代理与数据库应用端的交互采用最普通的开源MYSQL协议,减小了接口调用的复杂性;对于用户鉴权,加密可以采用MYSQL自带的加密算法。
图5为本发明数据库代理装置的第二较佳实施例的框图。该装置与第一较佳实施例的装置大致相同,不同之处在于:
还包括一个线程配置单元400,用于在操作单元300接收到请求之前建立一个线程池,线程池中具有至少一个线程。本实施例中,是在数据库代理装置启动时建立线程池。
在操作单元300接收到请求时,线程配置单元400调用线程池中的一个空闲的线程供操作单元按接收的请求进行数据库操作,即按接收的请求调取连接池中的数据库连接进行数据库操作;在操作单元完成数据库操作之后,线程配置单元400释放线程,即将该线程的状态设置为空闲(waiting)或删除该线程。本实施例中,操作单元300接收到请求时向线程配置单元400发送调用线程的请求,线程配置单元400可以是在接收到交互单元200发出的上述请求时分配空闲的线程,当然,也可以由交互单元200,在将请求发送给操作单元300时向线程配置单元400发送调用线程的请求。同样地,线程的调度和管理以及线程池中线程的数目,可以根据操作系统的实际状况而调整,不以本实施例的公开为限。
上述连接配置单元、操作单元、线程配置单元可以由处理器来实现,交互单元可以由收发器来实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (6)
1.一种数据库代理方法,其特征在于,该方法包括:
为多个数据库中的每个数据库建立连接池;
接收数据库应用端发送的请求;
按接收的请求,调取连接池中的数据库连接进行数据库操作;
将执行结果返回给数据库应用端;
其中,所述调取连接池中的数据库连接进行数据库操作包括:
解析请求中的信息获得数据库操作命令;
根据数据库操作命令和配置信息确定作为操作对象的数据库,为数据库操作提供统一的接口,所述配置信息包含所述多个数据库的数据库类型;
从所确定的数据库所对应的连接池中调取数据库连接,应用该数据库连接将数据库操作命令发送给所确定的数据库,并从该数据库接收执行结果;
该方法还包括:
在接收请求之前建立线程池,线程池中包括至少一个线程;
所述按接收的请求,调取连接池中的数据库连接进行数据库操作具体包括:
调用线程池中一个空闲的线程,所述线程按接收的请求,调取连接池中的数据库连接进行数据库操作;
在完成数据库操作后,将该线程的状态设置为空闲或删除该线程;
该方法还包括:
当通过数据库连接与数据库通信出现故障时,将所述数据库连接所属的连接池中的数据库连接的状态设置为异常,并定时从该连接池调取一个数据库连接来与数据库重新建立连接,直到正常连接后将所述连接池中的数据库连接的状态设置为正常。
2.根据权利要求1所述的数据库代理方法,其特征在于,
所述数据库包括用于执行数据库写操作的主数据库和用于执行数据库读操作的从数据库;
所述根据数据库操作命令和配置信息确定作为操作对象的数据库具体包括:
判断数据库操作命令是否为执行读的操作,若判断为是,则确定数据库类型为从数据库,若判断为否,则确定数据库类型为主数据库;进而根据配置信息包含的数据库类型,确定作为操作对象的数据库。
3.根据权利要求1所述的数据库代理方法,其特征在于,
所述从该数据库接收执行结果完成后,所述方法还包括:
将所调取的数据库连接的状态设置为空闲或删除该数据库连接。
4.根据权利要求1所述的数据库代理方法,其特征在于,
所述为多个数据库中的每个数据库建立连接池具体包括:为每个数据库,创建预设数目的数据库连接;
所述从所确定的数据库所对应的连接池中调取数据库连接具体包括:
判断所确定的数据库所对应的连接池中是否有空闲的数据库连接,若判断为是,则直接从连接池中调取空闲的数据库连接,若判断为否,则进一步判断数据库连接的数目是否达到了预设的最大值,若判断为是,则延迟一段预设时间后判断连接池中是否有空闲的数据库连接,若判断为否,则创建新的数据库连接。
5.一种数据库代理装置,其特征在于,该装置与多个数据库连接,并包括连接配置单元、交互单元和操作单元:
连接配置单元,用于为多个数据库中的每个数据库建立连接池;
交互单元,用于接收数据库应用端发送的请求,将执行结果返回给数据库应用端;
操作单元,用于从交互单元接收请求、按接收的请求,调取连接池中的数据库连接进行数据库操作,包括:
解析模块,用于解析请求中的信息获得数据库操作命令,并将数据库操作命令发送给选择模块和执行模块;
选择模块,用于根据数据库操作命令和配置信息确定作为操作对象的数据库,为数据库操作提供统一的接口,并将确定结果发送给执行模块,所述配置信息包含所述多个数据库的数据库类型;
执行模块,用于从所确定的数据库所对应的连接池中调取数据库连接,应用该数据库连接将数据库操作命令发送给所确定的数据库,并从该数据库接收执行结果,并将执行结果发送给交互单元;
数据库代理装置还包括一个线程配置单元,
所述线程配置单元用于:
在操作单元接收到请求之前建立一个线程池,线程池中包括至少一个线程;在操作单元接收到请求时,调用线程池中的一个空闲的线程供操作单元按接收的请求,调取连接池中的数据库连接进行数据库操作;
在操作单元完成数据库操作之后,将该线程的状态设置为空闲或删除该线程;
所述执行模块,进一步用于当通过数据库连接与数据库通信出现故障时,将所述数据库连接所属的连接池中的数据库连接的状态设置为异常,并定时从该连接池调取一个数据库连接来与数据库重新建立连接,直到正常连接后将所述连接池中的数据库连接的状态设置为正常。
6.根据权利要求5所述的数据库代理装置,其特征在于,
所述数据库包括用于执行数据库写操作的主数据库和用于执行数据库读操作的从数据库;
所述连接配置单元,用于在每一个连接池中,创建预设数目的数据库连接;
所述选择模块,用于判断数据库操作命令是否为执行读的操作,若判断为是,则确定数据库类型为从数据库,若判断为否,则确定数据库类型为主数据库;进而根据配置信息包含的数据库类型,确定作为操作对象的数据库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210390622.0A CN103729373B (zh) | 2012-10-15 | 2012-10-15 | 一种数据库代理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210390622.0A CN103729373B (zh) | 2012-10-15 | 2012-10-15 | 一种数据库代理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103729373A CN103729373A (zh) | 2014-04-16 |
CN103729373B true CN103729373B (zh) | 2017-08-04 |
Family
ID=50453451
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210390622.0A Active CN103729373B (zh) | 2012-10-15 | 2012-10-15 | 一种数据库代理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103729373B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104539713B (zh) * | 2014-12-31 | 2018-10-09 | 北京奇虎科技有限公司 | 业务请求处理方法和装置 |
CN104572974B (zh) * | 2014-12-31 | 2018-10-12 | 北京奇虎科技有限公司 | 业务请求处理方法和装置 |
CN105677693B (zh) * | 2015-09-18 | 2020-02-18 | 联动优势科技有限公司 | 一种访问数据库的方法及装置 |
CN105488179A (zh) * | 2015-11-30 | 2016-04-13 | 中电科华云信息技术有限公司 | 处理多种数据库及中间件的自动配置连接方法 |
CN105827604A (zh) * | 2016-03-15 | 2016-08-03 | 深圳市游科互动科技有限公司 | 服务器业务处理方法及服务器 |
CN106021375B (zh) * | 2016-05-11 | 2019-11-26 | 深圳市永兴元科技股份有限公司 | 数据库访问方法及数据库代理节点 |
CN105956138B (zh) * | 2016-05-11 | 2019-07-12 | 北京百度网讯科技有限公司 | 数据库连接的控制方法和装置 |
CN106095878B (zh) * | 2016-06-07 | 2019-11-19 | 中国建设银行股份有限公司 | 基于分库分表的数据库操作装置及方法 |
CN106326446B (zh) * | 2016-08-26 | 2019-07-19 | 广州品唯软件有限公司 | 分布式数据库连接方法和装置 |
CN106354801B (zh) * | 2016-08-26 | 2019-12-20 | 广州品唯软件有限公司 | 分布式数据库连接方法和装置 |
CN106970934A (zh) * | 2017-01-16 | 2017-07-21 | 平安银行股份有限公司 | 交易处理控制方法及系统 |
CN107357831A (zh) * | 2017-06-21 | 2017-11-17 | 信雅达系统工程股份有限公司 | 可配置的流程实例数据分布式存储方法及系统 |
CN109542917B (zh) * | 2018-10-18 | 2021-06-29 | 北京新唐思创教育科技有限公司 | 数据读取方法及计算机可读介质 |
CN109815287A (zh) * | 2019-01-30 | 2019-05-28 | 网易(杭州)网络有限公司 | 一种数据库访问系统 |
CN110096552A (zh) * | 2019-05-07 | 2019-08-06 | 广州虎牙信息科技有限公司 | 一种业务数据的读、写方法、装置、设备和存储介质 |
CN111221856B (zh) * | 2020-01-13 | 2021-05-25 | 中科驭数(北京)科技有限公司 | 面向硬件数据库的多用户请求批处理方法及装置 |
CN113934608A (zh) * | 2020-07-13 | 2022-01-14 | 北京金山云网络技术有限公司 | 数据库的故障诊断方法、装置、主机及存储介质 |
CN112699150A (zh) * | 2021-01-04 | 2021-04-23 | 中国银联股份有限公司 | 一种数据库操作框架、方法及系统 |
CN112732441B (zh) * | 2021-01-07 | 2022-12-06 | 众阳健康科技集团有限公司 | 一种多元动态连接池的连接方法、装置及系统 |
CN114500628A (zh) * | 2021-12-30 | 2022-05-13 | 天翼云科技有限公司 | 一种连接选择方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1963821A (zh) * | 2006-12-05 | 2007-05-16 | 华为技术有限公司 | 一种实现数据库访问的方法、系统和装置 |
CN101334778A (zh) * | 2007-06-29 | 2008-12-31 | 国际商业机器公司 | 管理数据库连接的方法和系统 |
CN102722575A (zh) * | 2012-06-05 | 2012-10-10 | 河北世窗信息技术有限公司 | 一种多类型数据库连接池管理系统及管理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7761502B2 (en) * | 2004-12-31 | 2010-07-20 | Bea Systems, Inc. | Callback interface for multipools |
-
2012
- 2012-10-15 CN CN201210390622.0A patent/CN103729373B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1963821A (zh) * | 2006-12-05 | 2007-05-16 | 华为技术有限公司 | 一种实现数据库访问的方法、系统和装置 |
CN101334778A (zh) * | 2007-06-29 | 2008-12-31 | 国际商业机器公司 | 管理数据库连接的方法和系统 |
CN102722575A (zh) * | 2012-06-05 | 2012-10-10 | 河北世窗信息技术有限公司 | 一种多类型数据库连接池管理系统及管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103729373A (zh) | 2014-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103729373B (zh) | 一种数据库代理方法和装置 | |
US20190268451A1 (en) | Reducing network latency | |
CA2241902C (en) | Protocol converter apparatus and method | |
RU2476007C2 (ru) | Способ и устройство для обработки многоканальных запросов в платформе управления услугами | |
US9282443B2 (en) | Short message service (SMS) message segmentation | |
CN106897086A (zh) | 用于升级机器人操作系统的方法、装置及系统 | |
CN107728936A (zh) | 用于传输数据处理请求的方法和装置 | |
CN102799545A (zh) | Usb设备远程控制方法和系统 | |
CN1859355B (zh) | 一种对批量业务进行处理的方法 | |
CN101800712A (zh) | 网关设备、信息通信方法、信息通信程序和信息通信系统 | |
CN102833015A (zh) | 一种卫星自动化测试系统公共软件接口确定方法 | |
CN110096463A (zh) | 适配器装置、电子装置、方法以及主机机台装置 | |
KR20040105032A (ko) | 휴대폰의 원격 기능변경장치 및 그 제어방법 | |
CN102299861B (zh) | 一种报文流量控制方法 | |
CN102404336B (zh) | 一种网络游戏中用户跨区转移的方法 | |
CN110069565A (zh) | 一种分布式数据库数据批量处理的方法及装置 | |
EP2515601B1 (en) | Dial-up connection method and device of mobile data terminal | |
CN106775818A (zh) | 基于can总线的ecu升级方法及ecu升级设备 | |
CN103220260A (zh) | 更新数据的方法、服务器、客户端及系统 | |
CN109800202A (zh) | 一种基于pcie的数据传输系统、方法及装置 | |
CN102571412B (zh) | 嵌入式分布式系统目标机服务器 | |
CN100570547C (zh) | 一种数据回放方法及装置 | |
CN107483271A (zh) | 路由器的升级方法、装置及计算机可读存储介质 | |
KR100738039B1 (ko) | 개방형 모바일 비즈니스 지원 시스템에서의 비즈니스 로직처리 방법 및 장치 | |
US20130054733A1 (en) | File transfer device and method therefor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: Room 810, 8 / F, 34 Haidian Street, Haidian District, Beijing 100080 Patentee after: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd. Address before: 100089 Beijing city Haidian District wanquanzhuang Road No. 28 Wanliu new building 6 storey block A room 602 Patentee before: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd. |