CN110362625A - 数据库读写分离方法、装置、电子设备及存储介质 - Google Patents
数据库读写分离方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN110362625A CN110362625A CN201910462601.7A CN201910462601A CN110362625A CN 110362625 A CN110362625 A CN 110362625A CN 201910462601 A CN201910462601 A CN 201910462601A CN 110362625 A CN110362625 A CN 110362625A
- Authority
- CN
- China
- Prior art keywords
- database
- data
- request
- write
- incremental
- 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
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
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (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是根据本发明一个实施例的数据库读写分离装置的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参考附图描述本发明实施例的数据库读写分离方法、装置、电子设备及非临时性计算机存储介质。针对上述背景技术中提到的不同类型的数据库由于开发商或者后台机制等原因无法实现数据同步,导致数据库读写的适用性较低、无法满足用户的使用需求,本发明提供了一种数据库读写分离方法,在该方法中,将读请求和写请求发送给不同数据库,实现读与写的业务逻辑分离的同时,一旦检测到数据库存在由写操作生成的增量数据,可以实时对不同类型的数据库间的数据增量进行同步处理,提高数据库的适用性,有效满足用户的使用需求,实现不同类型的数据库间的读写分离和数据同步。
具体而言,图1为本发明实施例所提供的一种数据库读写分离方法的流程示意图。
如图1所示,该数据库读写分离方法包括以下步骤:
在步骤S101中,获取客户端的数据请求。
可以理解的是,如图2所示,数据请求的类型可以包括读请求和写请求,即在客户端(如应用或者用户)访问时,接收客户端发送的读请求或者写请求。
在步骤S102中,如果数据请求为写请求,则将写请求发送至第一数据库;如果数据请求为读请求,则将读请求发送至与第一数据库类型不同的第二数据库。
在本发明的实施例中,第一数据库可以作为主数据库,以执行数据库的写操作,第二数据库可以作为从数据库,以用于执行数据库的读操作,从而将读请求和写请求发送给不同数据库,实现读与写的业务逻辑分离,通过将对数据库的读写操作分别对应到不同的数据库,能够有效地减轻数据库的访问压力和IO压力,有效提升用户体验。
可选地,在本发明的一个实施例中,如图2所示,第一数据库为事务型数据库,第二数据库为分析型数据库。
举例而言,在本发明的实施例中,若第二数据库和第一数据库的类型不同,如第一数据库(主数据库)为事务型数据库,第二数据库(从数据库)为分析型数据库,那么将对数据库的读写操作分别对应到不同的数据库的同时,本发明实施例还可以对不同类型的数据库实现数据同步,如事务型数据库和分析型数据库间的数据同步,除了可以解决读写分离以外,还可以对多种类型的数据库实现统一的连接,更好地满足用户需求,如对应用和用户同时提供传统事务能力和高性能的大数据分析能力。下面将会对不同类型的数据库如何进行数据同步进行详细描述。
在步骤S103中,检测到第一数据库存在增量数据时,同步第一数据库的增量数据至第二数据库。
在执行完步骤S102后,本发明实施例进一步检测第一数据库是否存在增量数据,若存在增量数据,那么表明第一数据库执行完写操作,新增了数据,进而将新增的增量数据同步至第二数据库,下面实施例会对如何实现数据同步进行详细描述。
应理解,在读写过程中,检测并识别数据请求的类型,若数据请求为读请求,则选择第二数据库(如一从数据库),若数据请求为写请求,则选择第一数据库(如一主数据库),并且在收到第一数据库的反馈信号后,可以根据反馈信号判断第一数据库的写操作是否成功,如果反馈信号表明写操作成功,则可以进一步发送反馈信号至客户端,也可以由数据库直接发送反馈信号至客户端,在此不作具体限制。
具体地,随着互联网技术的高度发展,现有的数据库能力越来越无法满足性能的要求,特别是大数据发展后,需要现有数据库提供更强的大数据量分析能力,如现有的事务型数据库的分库分表和读写分离虽然能解决部分问题,但是依然解决不了根本的性能问题,即传统的事务型数据库分析能力的瓶颈,而是需要配合不同类型的数据库满足用户的多种需求,如事务型数据库主要是实时的,面向应用的数据库,响应及时性要求很高,只关注最近一段时间的数据,就是平时搭建的服务都叫事务型数据库,而分析型数据库主要是用于在大量数据中分析规律的,一般存储的数据时间跨度长,数据量大,对实时性要求不高,通过查询分析规律趋势,用于产品决策等,两者所面向的目标不一样,使得类型不一样,满足用户的需求也不一样。
基于上述问题,本发明实施例不但可以对不同类型的数据库进行读写分离,并且针对无法使用同一种数据库自身的同步功能,其可以触发第三方导入工具进行实时数据增量同步的处理,如事务型数据库和分析型数据库,使用户可以实时进行大数据分析,除了可以解决读写分离以外,还可以通过统一的连接对应用和用户同时提供传统事务能力和高性能的大数据分析能力,有效满足用户的使用需求,提升使用体验。
下面以一个具体实施例对如何实现数据同步进行详细描述。
在本发明的以下部分将对不同类型的数据库如何进行数据同步进行详细描述。虽然以下实施例以事务型数据库和分析型数据库为例,但是本领域技术人员应当理解的是,对于任何类型的数据库都可以通过以下类似的方式进行配置。需要说明的是,如图2所示,作为主数据库的第一数据库为事务型数据库,作为从数据库的第二数据库为分析型数据库。
如图2所示,对于写操作,本发明实施例可以包括:
步骤S1:接收应用或用户的写请求;
步骤S2:选择事务型数据库的系统操作写入数据;
步骤S3:将事务型数据库的增量数据同步至分析型数据库。
进一步地,对于读操作,本发明实施例可以包括:
步骤S1:接收应用或用户的读请求;
步骤S2:选择分析型数据库的系统操作读取数据。
进一步地,下面对如何触发同步导入数据进行详细描述。
其中,在本发明的一个实施例中,检测到第一数据库存在增量数据时,同步第一数据库的增量数据至第二数据库,包括:通过中间件检测第一数据库是否存在增量数据;当检测到第一数据库存在增量数据时,通过中间件触发预设的导入工具,同步第一数据库的增量数据至第二数据库。
可以理解的是,本发明实施例可以通过中间件实现对增量数据的检测和对导入工具(下面会进行详细描述)的触发。具体地,通过中间件判断第一数据库是否存在增量数据,如果中间件判定第一数据库存在增量数据,则通过中间件控制导入工具同步数据;如果中间件判定第一数据库不存在增量数据,则不控制导入工具同步数据。
其中,在本发明的一个实施例中,通过中间件检测第一数据库是否存在增量数据,包括:判断第一数据库的日志信息的日志时间是否发生更改;如果日志时间发生更改,则确定存在增量数据。
进一步地,在本发明的一个实施例中,通过中间件检测所述第一数据库是否存在增量数据,还包括:判断第一数据库的当前语句是否存在结构化查询语言SQL语句;如果存在SQL语句,则确定存在增量数据。
可以理解的是,对于有日志信息的数据库,中间件可以根据日志信息触发导入工具执行同步操作,而对于没有日志信息的数据库,中间件可以根据数据库的SQL语句触发导入工具执行同步操作。
进一步地,在本发明的一个实施例中,通过中间件触发预设的导入工具,同步第一数据库的增量数据至第二数据库,包括:在确定存在增量数据后,将中间件生成的同步信号发送至导入工具,以控制导入工具将增量数据同步导入至第二数据库。
具体而言,如图2所示,数据库访问的中间件可以调用导入工具的接口,从而发送同步信号以告知导入工具有增量数据,其可以包括新增数据和修改数据,并传入对应的SQL语句,从而触发导入工具下发主从库同步任务,进而导入工具在接受同步信号后可以主动监听主数据库的日志等信息,例如mysql、oracle数据库的日志,当日志有修改时就解析日志里的数据,再而导入工具同步导入主数据库的增量数据至从数据库。具体地,在判断触发数据库同步的条件时,中间件可以通过对数据库日志的文件时间或者当前语句做检测判断日志是否有修改,当文件时间有修改即可进行增量同步。
综上,中间件可以检测第一数据库的日志时间或者当前语句,一旦日志时间发生更改,或者当前语句中存在SQL语句,表明存在增量数据,需要同步数据,那么控制中间件发送同步指令至导入工具,以使导入工具可以解析日志信息或者SQL语句的数据,得到增量数据,并将得到的增量数据同步导入至第二数据库。
在本发明的一个实施例中,本发明实施例的方法还包括:判断第一数据库和第二数据库是否处于异常状态;如果第一数据库处于异常状态,则将写请求发送至第一数据库的备用数据库;如果第二数据库处于异常状态,则将读请求发送至第二数据库的备用数据库。
进一步地,在本发明的一个实施例中,本发明实施例的方法还包括:判断第一数据库和第二数据库是否处于异常状态;如果第一数据库或第二数据库是否处于异常状态,则将写请求或读请求发送至处于正常状态的另一数据库。
另外,在本发明的一个实施例中,本发明实施例的方法还包括:在第一数据库或第二数据库处于异常状态时,向预设终端发送修复提醒。
可以理解的是,当第一数据库或者第二数据库异常如发生故障时,本发明实施例可以向后台服务器或者客户端实时发送修复提醒,以便技术人员对数据库进行维护的同时,可以通过预设的故障数据库的备用数据库继续执行写操作或读操作,如第一数据库故障,则将第一数据库的备用数据库作为新的第一数据库,继续执行写操作,避免影响用户体验;或者将写请求或者读请求均发送至正常的另一数据库,如第二数据库故障,则将读请求发送至第一数据库,由第一数据库执行读操作,避免影响用户体验。
因此,对于上述的导入工具可以根据以下要求进行预先设置:
第一:可以支持全量和增量的导入,在从数据库的系统全新部署时,将主数据库全量导入从数据库,在系统实时使用时,通过增量方式将主数据库的变化数据导入从数据库;
第二:当有从数据库的主机出现故障或异常时,作为第三方的导入工具服务由于独立于主数据库和从数据库的系统,因此不会受数据库的影响而崩溃,此时再进行增量导入时会报错,但是也不影响主数据库的使用,从而不会影响业务,只是降低了读性能。此时可以将宕机的从数据库物理机修复或者重新创建从库数据库或表,再全量导入数据进行同步,从而修复整个系统的数据分析能力,有效提高数据库的可靠性;
第三:对外提供API(Application Programming Interface,应用程序编程接口)接口等,以支持触发操作下发同步任务,通过中间件调用请求触发增量同步,或者具备主动监听主库日志变动的能力,以使本发明实施例的中间件可以准确判断是否满足同步触发条件,进而可以通过解析日志将数据同步到从数据库。
第四:导入同步数据的性能要求,降低影响主从库数据同步的延迟,其中,若是使用定时器轮训等方式,将会影响主从库的同步。
进一步地,在本发明的一个实施例中,判断第一数据库和第二数据库是否处于异常状态,包括:检测写请求或读请求的响应时间;在响应时间大于预设时间时,确定第一数据库或第二数据库处于异常状态。
可以理解的是,除了根据数据库主动发送的故障信号确认数据库是否异常外,本发明实施例还可以根据响应时间判断数据库出否出现异常,并且在确认异常后,及时将写请求发送至第一数据库或备用数据库,或者及时将读请求发送至第二数据库或备用数据库,如分析型数据库出现异常,无法实现读功能时,及时将读请求发送给事务型数据库,避免出现无法读取数据的情况,且事务型数据库同理,有效保证用户体验。需要说明的是,预设时间可以由本领域技术人员根据实际情况进行设置,在此不做具体限制。
具体而言,对于实现本发明实施例的方法的中间件可以具有以下要求:
第一:需要支持将select等读请求转到分析型数据库进行访问操作。由于当前的数据库访问中间件一般都只支持事务型的数据库,因此可以对源码做些修改,引入对应分析型数据库的lib依赖等,实现JDBC(Java DataBase Connectivity,java数据库连接)或ODBC(Open Database Connectivity,开放数据库连接)等连接;
第二:写请求后可以支持触发导入工具的同步操作。由于当前的数据库访问中间件没有对应功能,因此可以做额外修改添加调用导入工具的API进行触发;
第三:对应用和用户提供统一的访问接口,用户不感知底层数据库实现。当前中间件基本都具有代理功能,可以提供区别于主从库的独立的连接串信息供应用和用户连接使用;
第四:当从数据库出现异常时,能够检测到读操作超时,将读请求转到事务型数据库的主数据库进行平滑访问;在从数据库修复或重建后,通过设置能够重新将读请求转到分析型数据库的从数据库进行平滑访问。
综上,针对于不同类型的数据库由于开发商或者后台机制等原因无法实现数据同步,导致数据库的读写分离只能适用于相同类型的数据库,本发明实施例可以对不同类型的数据库实现数据同步,提高数据库读写的适用性,如当前的数据库访问中间件服务都是基于事务型数据库做读写分离,没有连接分析型数据库的能力,而本发明实施例除了可以解决读写分离以外,还可以通过统一的连接对应用和用户同时提供传统事务能力和高性能的大数据分析能力,有效满足用户的使用需求。另外,当前分析型数据库都依赖于从业务库即事务型数据库中异步导入数据后再进行分析,做不到实时或接近实时的分析能力,而本发明实施例可以使用第三方导入工具通过触发进行实时数据增量同步导入处理,使用户可以实时进行大数据分析,提升用户使用体验。
本发明的实施例中,应用和用户不需要同时访问两个数据库系统,只用一个链接进行访问,即可实现不同类型数据库的对应能力,如事务性数据库和分析型数据库的数据库事务和分析能力,读写分离的从数据库可以为不同于主数据库的数据库类型,如从数据库可以用分析型数据库提升读分析能力,同时写请求后可以实时触发增量导入,从而实现不同类型的数据库的数据实时同步,而且支持不同类型主数据库和从数据库的平滑切换。
为了实现上述实施例,本发明还提出了一种数据库读写分离装置,图3是根据本发明一个实施例的数据库读写分离装置的结构示意图。如图3所示,该数据库读写分离装置10包括:获取模块100、发送模块200和同步模块300。
其中,获取模块100用于获取客户端的数据请求。发送模块200用于在数据请求为写请求时,将读请求发送至第一数据库,并且在数据请求为读请求时,将读请求发送至与第一数据库类型不同的第二数据库。同步模块300用于检测到第一数据库存在增量数据时,同步第一数据库的增量数据至第二数据库。本发明实施例的分离装置10可以对不同类型的数据库实现数据同步,提高数据库读写的适用性较低、有效满足用户的使用需求。
进一步地,在本发明的一个实施例中,同步模块300包括:检测单元和同步单元。其中,检测单元用于通过中间件检测第一数据库是否存在增量数据。同步单元用于当检测到第一数据库存在增量数据时,通过中间件触发预设的导入工具,同步第一数据库的增量数据至第二数据库。
进一步地,在本发明的一个实施例中,同步模块300包括:第一子判断单元。其中,第一子判断单元用于判断第一数据库的日志信息的日志时间是否发生更改,并在日志时间发生更改时,确定存在增量数据。
进一步地,在本发明的一个实施例中,同步模块300包括:第二子判断单元。其中,第二子判断单元用于判断第一数据库的当前语句是否存在SQL语句,并且在存在SQL语句时,确定存在增量数据。
进一步地,在本发明的一个实施例中,同步模块300还包括:发送单元。其中,发送单元用于在确定存在所述增量数据后,将中间件生成的同步信号发送至导入工具,以控制导入工具将增量数据同步导入至所述第二数据库。
进一步地,在本发明的一个实施例中,本发明实施例的装置10还包括:第一判断模块。其中,第一判断模块用于判断第一数据库和第二数据库是否处于异常状态,使得发送模块在第一数据库处于异常状态时,将写请求发送至第一数据库的备用数据库,并且在第二数据库处于异常状态时,将读请求发送至第二数据库的备用数据库。
进一步地,在本发明的一个实施例中,本发明实施例的装置10还包括:第二判断模块。其中,第二判断模块用于判断第一数据库和第二数据库是否处于异常状态,使得发送模块在第一数据库或第二数据库是否处于异常状态时,将写请求或读请求发送至处于正常状态的另一数据库。
进一步地,在本发明的一个实施例中,本发明实施例的装置10还包括:提醒模块。其中,提醒模块用于在第一数据库或第二数据库是否处于异常状态时,向预设终端发送修复提醒。
进一步地,在本发明的一个实施例中,本发明实施例的装置10还包括:检测模块。其中,检测模块用于检测写请求或读请求的响应时间,以在响应时间大于预设时间时,确定第一数据库或第二数据库处于异常状态。
需要说明的是,前述实施例中对数据库读写分离方法的解释说明,也适用于本发明实施例的数据库读写分离装置,其实现原理类似,在此不再赘述
为了实现上述实施例,本发明还提出了一种电子设备,包括:至少一个处理器和存储器。其中,存储器与至少一个处理器通信连接,其中,存储器存储有可被至少一个处理器执行的指令,指令被设置为用于执行上述实施例的数据库读写分离方法,如以用于:
获取客户端的数据请求。
如果数据请求为写请求,则将写请求发送至第一数据库。
如果数据请求为读请求,则将读请求发送至与第一数据库类型不同的第二数据库。
检测到第一数据库存在增量数据时,同步第一数据库的增量数据至第二数据库。
为了实现上述实施例,本发明还提出了一种非临时性计算机可读存储介质,其存储计算机指令,计算机指令用于使计算机执行上述实施例的数据库读写分离方法
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (21)
1.一种数据库读写分离方法,其特征在于,包括:
获取客户端的数据请求;
如果所述数据请求为写请求,则将所述写请求发送至第一数据库;
如果所述数据请求为读请求,则将所述读请求发送至与所述第一数据库类型不同的第二数据库;以及
检测到所述第一数据库存在增量数据时,同步所述第一数据库的增量数据至所述第二数据库。
2.根据权利要求1所述的方法,其特征在于,所述检测到所述第一数据库存在增量数据时,同步所述第一数据库的增量数据至所述第二数据库,包括:
通过中间件检测所述第一数据库是否存在所述增量数据;
当检测到所述第一数据库存在所述增量数据时,通过所述中间件触发预设的导入工具,同步所述第一数据库的增量数据至所述第二数据库。
3.根据权利要求2所述的方法,其特征在于,所述通过中间件检测所述第一数据库是否存在所述增量数据,包括:
判断所述第一数据库的日志信息的日志时间是否发生更改;
如果所述日志时间发生更改,则确定存在所述增量数据。
4.根据权利要求2所述的方法,其特征在于,所述通过中间件检测所述第一数据库是否存在所述增量数据,还包括:
判断所述第一数据库的当前语句是否存在结构化查询语言SQL语句;
如果存在所述SQL语句,则确定存在所述增量数据。
5.根据权利要求2所述的方法,其特征在于,所述通过所述中间件触发预设的导入工具,同步所述第一数据库的增量数据至所述第二数据库,包括:
在确定存在所述增量数据后,将所述中间件生成的同步信号发送至所述导入工具,以控制所述导入工具将所述增量数据同步导入至所述第二数据库。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
判断所述第一数据库和所述第二数据库是否处于异常状态;
如果所述第一数据库处于所述异常状态,则将所述写请求发送至所述第一数据库的备用数据库;
如果所述第二数据库处于所述异常状态,则将所述读请求发送至所述第二数据库的备用数据库。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
判断所述第一数据库和所述第二数据库是否处于异常状态;
如果所述第一数据库或所述第二数据库处于所述异常状态,则将所述写请求或所述读请求发送至处于正常状态的另一数据库。
8.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:
在所述第一数据库或所述第二数据库处于异常状态时,向预设终端发送修复提醒。
9.根据权利要求6或7所述的方法,其特征在于,所述判断所述第一数据库和所述第二数据库是否处于异常状态,包括:
检测所述写请求或所述读请求的响应时间;
在所述响应时间大于预设时间时,确定所述第一数据库或所述第二数据库处于所述异常状态。
10.根据权利要求1所述的方法,其特征在于,所述第一数据库为事务型数据库,所述第二数据库为分析型数据库。
11.一种数据库读写分离装置,其特征在于,包括:
获取模块,用于获取客户端的数据请求;
发送模块,用于在所述数据请求为写请求时,将所述读请求发送至第一数据库,并且在所述数据请求为读请求时,将所述读请求发送至与所述第一数据库类型不同的第二数据库;以及
同步模块,用于检测到所述第一数据库存在增量数据时,同步所述第一数据库的增量数据至所述第二数据库。
12.根据权利要求11所述的装置,其特征在于,所述同步模块包括:
检测单元,用于通过中间件检测所述第一数据库是否存在所述增量数据;
同步单元,用于当检测到所述第一数据库存在所述增量数据时,通过所述中间件触发预设的导入工具,同步所述第一数据库的增量数据至所述第二数据库。
13.根据权利要求12所述的装置,其特征在于,所述检测单元包括:
第一判断子单元,用于判断所述第一数据库的日志信息的日志时间是否发生更改,并在所述日志时间发生更改时,确定存在所述增量数据。
14.根据权利要求12所述的装置,其特征在于,所述同步模块还包括:
第二判断子单元,用于判断所述第一数据库的当前语句是否存在SQL语句,并且在存在所述SQL语句时,确定存在所述增量数据。
15.根据权利要求12所述的装置,其特征在于,所述同步模块还包括:
发送单元,用于在确定存在所述增量数据后,将所述中间件生成的同步信号发送至所述导入工具,以控制所述导入工具将所述增量数据同步导入至所述第二数据库。
16.根据权利要求11所述的装置,其特征在于,所述装置还包括:
第一判断模块,用于判断所述第一数据库和所述第二数据库是否处于异常状态,使得所述发送模块在所述第一数据库处于所述异常状态时,将所述写请求发送至所述第一数据库的备用数据库,并且在所述第二数据库处于所述异常状态时,将所述读请求发送至所述第二数据库的备用数据库。
17.根据权利要求11所述的装置,其特征在于,所述装置还包括:
第二判断模块,用于判断所述第一数据库和所述第二数据库是否处于异常状态,使得所述发送模块在所述第一数据库或所述第二数据库是否处于所述异常状态时,将所述写请求或所述读请求发送至处于正常状态的另一数据库。
18.根据权利要求16或17所述的装置,其特征在于,所述装置还包括:
提醒模块,用于在所述第一数据库或所述第二数据库是否处于异常状态时,向预设终端发送修复提醒。
19.根据权利要求16或17所述的装置,其特征在于,所述装置还包括:
检测模块,用于检测所述写请求或所述读请求的响应时间,以在所述响应时间大于预设时间时,确定所述第一数据库或所述第二数据库处于所述异常状态。
20.一种电子设备,其特征在于,包括:
至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行上述权利要求1-10任一项所述的数据库读写分离方法。
21.一种非临时性计算机可读存储介质,其特征在于,所述非临时性计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行权利要求1-10任一项所述的数据库读写分离方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910462601.7A CN110362625A (zh) | 2019-05-30 | 2019-05-30 | 数据库读写分离方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910462601.7A CN110362625A (zh) | 2019-05-30 | 2019-05-30 | 数据库读写分离方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110362625A true CN110362625A (zh) | 2019-10-22 |
Family
ID=68214956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910462601.7A Pending CN110362625A (zh) | 2019-05-30 | 2019-05-30 | 数据库读写分离方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110362625A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716923A (zh) * | 2019-12-12 | 2020-01-21 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、节点设备及存储介质 |
CN111078802A (zh) * | 2019-12-31 | 2020-04-28 | 叮当快药科技集团有限公司 | 数据库的读写方法及相关装置 |
CN111522870A (zh) * | 2020-04-09 | 2020-08-11 | 咪咕文化科技有限公司 | 数据库访问方法、中间件和可读存储介质 |
CN111552637A (zh) * | 2020-04-20 | 2020-08-18 | 北京顺达同行科技有限公司 | 数据库状态的检测方法、装置、电子设备及其存储介质 |
CN111581238A (zh) * | 2020-04-01 | 2020-08-25 | 北京奇艺世纪科技有限公司 | 信息查询方法及装置、电子设备、计算机可读存储介质 |
CN111597160A (zh) * | 2020-04-21 | 2020-08-28 | 中国人民财产保险股份有限公司 | 分布式数据库系统、分布式数据处理方法和装置 |
CN111949726A (zh) * | 2020-06-07 | 2020-11-17 | 中信银行股份有限公司 | 一种基于区块链的关系型数据库同步方法及同步系统 |
CN113934760A (zh) * | 2021-10-15 | 2022-01-14 | 珠海百丰网络科技有限公司 | 基于人工智能模型的金融数据识别与传输系统及其方法 |
CN114253770A (zh) * | 2021-12-17 | 2022-03-29 | 苏州浪潮智能科技有限公司 | 一种数据库的主从备份系统 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591964A (zh) * | 2011-12-30 | 2012-07-18 | 北京新媒传信科技有限公司 | 数据读写分离机制的实现方法和装置 |
CN102622427A (zh) * | 2012-02-27 | 2012-08-01 | 杭州闪亮科技有限公司 | 读写分离数据库的方法及系统 |
CN103699638A (zh) * | 2013-12-23 | 2014-04-02 | 国云科技股份有限公司 | 一种基于配置参数实现跨数据库类型同步数据的方法 |
CN104504145A (zh) * | 2015-01-05 | 2015-04-08 | 浪潮(北京)电子信息产业有限公司 | 一种实现数据库读写分离的方法和设备 |
CN105808643A (zh) * | 2016-02-25 | 2016-07-27 | 浪潮通信信息系统有限公司 | 一种Redis内存数据库刷新的方法 |
US20160239523A1 (en) * | 2015-02-13 | 2016-08-18 | Andre Haferkorn | Simultaneous Operation Of Multiple Versions Of An Application Using Bidirectional Synchronization And Separated Read Write Channels |
CN106959951A (zh) * | 2016-01-08 | 2017-07-18 | 北京国双科技有限公司 | 数据库的处理方法和装置 |
CN107404540A (zh) * | 2017-09-01 | 2017-11-28 | 北京奇虎科技有限公司 | 数据的同步方法及装置 |
CN107665210A (zh) * | 2016-07-28 | 2018-02-06 | 南京中兴新软件有限责任公司 | 数据处理方法及装置 |
CN108399256A (zh) * | 2018-03-06 | 2018-08-14 | 北京慧萌信安软件技术有限公司 | 异构数据库内容同步方法、装置及中间件 |
CN108595605A (zh) * | 2018-04-20 | 2018-09-28 | 上海蓥石汽车技术有限公司 | 一种车联网平台数据库的构建方法 |
CN111949726A (zh) * | 2020-06-07 | 2020-11-17 | 中信银行股份有限公司 | 一种基于区块链的关系型数据库同步方法及同步系统 |
-
2019
- 2019-05-30 CN CN201910462601.7A patent/CN110362625A/zh active Pending
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591964A (zh) * | 2011-12-30 | 2012-07-18 | 北京新媒传信科技有限公司 | 数据读写分离机制的实现方法和装置 |
CN102622427A (zh) * | 2012-02-27 | 2012-08-01 | 杭州闪亮科技有限公司 | 读写分离数据库的方法及系统 |
CN103699638A (zh) * | 2013-12-23 | 2014-04-02 | 国云科技股份有限公司 | 一种基于配置参数实现跨数据库类型同步数据的方法 |
CN104504145A (zh) * | 2015-01-05 | 2015-04-08 | 浪潮(北京)电子信息产业有限公司 | 一种实现数据库读写分离的方法和设备 |
US20160239523A1 (en) * | 2015-02-13 | 2016-08-18 | Andre Haferkorn | Simultaneous Operation Of Multiple Versions Of An Application Using Bidirectional Synchronization And Separated Read Write Channels |
CN106959951A (zh) * | 2016-01-08 | 2017-07-18 | 北京国双科技有限公司 | 数据库的处理方法和装置 |
CN105808643A (zh) * | 2016-02-25 | 2016-07-27 | 浪潮通信信息系统有限公司 | 一种Redis内存数据库刷新的方法 |
CN107665210A (zh) * | 2016-07-28 | 2018-02-06 | 南京中兴新软件有限责任公司 | 数据处理方法及装置 |
CN107404540A (zh) * | 2017-09-01 | 2017-11-28 | 北京奇虎科技有限公司 | 数据的同步方法及装置 |
CN108399256A (zh) * | 2018-03-06 | 2018-08-14 | 北京慧萌信安软件技术有限公司 | 异构数据库内容同步方法、装置及中间件 |
CN108595605A (zh) * | 2018-04-20 | 2018-09-28 | 上海蓥石汽车技术有限公司 | 一种车联网平台数据库的构建方法 |
CN111949726A (zh) * | 2020-06-07 | 2020-11-17 | 中信银行股份有限公司 | 一种基于区块链的关系型数据库同步方法及同步系统 |
Non-Patent Citations (5)
Title |
---|
吴高峰 等: ""基于JMS的分布式数据同步"", 《计算机系统应用》 * |
李红雷: ""基于JMS的分布式异构数据库间的数据同步"", 《福建电脑》 * |
王伟卿 等: ""基于Java消息服务的消息中间件的应用研究"", 《计算机技术与发展》 * |
琚春华 等: "《浙江省港口大宗商品交易平台运行机制研究》", 31 January 2017, 杭州:浙江工商大学出版社 * |
蒋朝惠 等: "《信息安全原理与技术》", 31 May 2009, 北京:中国铁道出版社 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716923A (zh) * | 2019-12-12 | 2020-01-21 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、节点设备及存储介质 |
CN111078802A (zh) * | 2019-12-31 | 2020-04-28 | 叮当快药科技集团有限公司 | 数据库的读写方法及相关装置 |
CN111581238B (zh) * | 2020-04-01 | 2023-10-24 | 北京奇艺世纪科技有限公司 | 信息查询方法及装置、电子设备、计算机可读存储介质 |
CN111581238A (zh) * | 2020-04-01 | 2020-08-25 | 北京奇艺世纪科技有限公司 | 信息查询方法及装置、电子设备、计算机可读存储介质 |
CN111522870A (zh) * | 2020-04-09 | 2020-08-11 | 咪咕文化科技有限公司 | 数据库访问方法、中间件和可读存储介质 |
CN111522870B (zh) * | 2020-04-09 | 2023-12-08 | 咪咕文化科技有限公司 | 数据库访问方法、中间件和可读存储介质 |
CN111552637A (zh) * | 2020-04-20 | 2020-08-18 | 北京顺达同行科技有限公司 | 数据库状态的检测方法、装置、电子设备及其存储介质 |
CN111597160A (zh) * | 2020-04-21 | 2020-08-28 | 中国人民财产保险股份有限公司 | 分布式数据库系统、分布式数据处理方法和装置 |
CN111949726A (zh) * | 2020-06-07 | 2020-11-17 | 中信银行股份有限公司 | 一种基于区块链的关系型数据库同步方法及同步系统 |
CN113934760B (zh) * | 2021-10-15 | 2022-06-17 | 珠海百丰网络科技有限公司 | 基于人工智能模型的金融数据识别与传输系统及其方法 |
CN113934760A (zh) * | 2021-10-15 | 2022-01-14 | 珠海百丰网络科技有限公司 | 基于人工智能模型的金融数据识别与传输系统及其方法 |
CN114253770A (zh) * | 2021-12-17 | 2022-03-29 | 苏州浪潮智能科技有限公司 | 一种数据库的主从备份系统 |
CN114253770B (zh) * | 2021-12-17 | 2023-12-26 | 苏州浪潮智能科技有限公司 | 一种数据库的主从备份系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110362625A (zh) | 数据库读写分离方法、装置、电子设备及存储介质 | |
US20210240736A1 (en) | Method and Apparatus for Monitoring an In-memory Computer System | |
US20190340166A1 (en) | Conflict resolution for multi-master distributed databases | |
US10031830B2 (en) | Apparatus, system, and method for database management extensions | |
CN108959564A (zh) | 数据仓库元数据管理方法、可读存储介质和计算机设备 | |
CN112131237B (zh) | 数据同步方法、装置、设备及计算机可读介质 | |
US6047353A (en) | Method and apparatus for monitoring of host activities relating to an attached storage device | |
CN108319617B (zh) | 确定数据库主从差异的方法、装置及切换控制方法、装置 | |
US8065280B2 (en) | Method, system and computer program product for real-time data integrity verification | |
CN110334156A (zh) | 一种数据库同步方法、装置、服务器和存储介质 | |
KR101545626B1 (ko) | Dds-db 연동 시스템 | |
CN110221905A (zh) | 定时任务监测方法、装置、系统、设备和存储介质 | |
CN110191168A (zh) | 在线业务数据的处理方法、装置、计算机设备和存储介质 | |
CN114356921A (zh) | 数据处理方法、装置、服务器及存储介质 | |
RU2711348C1 (ru) | Способ и система для обработки запросов в распределенной базе данных | |
CN110019469A (zh) | 分布式数据库数据处理方法、装置、存储介质及电子装置 | |
CN105117382A (zh) | 一种文档协同方法及装置 | |
US20210410255A1 (en) | Lighting control method, system and device for nvme backboard, and medium | |
CN114154035A (zh) | 一种动环监控的数据处理系统 | |
CN115757626A (zh) | 一种数据质量检测方法、装置、电子设备及存储介质 | |
CN114428820A (zh) | 分布式数据实时同步的方法、系统和数据同步设备 | |
CN106547670A (zh) | 远程读、写嵌入式Linux应用程序内存变量值的方法及装置 | |
CN108733808A (zh) | 大数据软件系统切换方法、系统、终端设备及存储介质 | |
CN111522870B (zh) | 数据库访问方法、中间件和可读存储介质 | |
CN109597706B (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 |