CN112307049A - 数据库的读写分离方法、装置、设备及可读存储介质 - Google Patents
数据库的读写分离方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN112307049A CN112307049A CN202011197570.6A CN202011197570A CN112307049A CN 112307049 A CN112307049 A CN 112307049A CN 202011197570 A CN202011197570 A CN 202011197570A CN 112307049 A CN112307049 A CN 112307049A
- Authority
- CN
- China
- Prior art keywords
- data
- request instruction
- database
- written
- writing
- 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
-
- 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)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及大数据技术领域,公开了一种数据库的读写分离方法,包括:接收数据请求指令;根据所述数据请求指令,确定当前所对应的数据操作类型;当所述数据操作类型为数据写入时,根据所述数据请求指令得到的对应的待写入数据,并将所述待写入数据写入至Oracle数据库中;当所述数据操作类型为数据读取时,根据所述数据请求指令在ES集群中获取对应的目标数据,并进行反馈本申请还提供一种装置、计算机设备和存储介质。实现降低了数据库的请求压力,提升了数据库的请求响应效。
Description
技术领域
本申请涉及大数据技术领域,尤其涉及一种数据库的读写分离方法、数据库的读写分离装置、计算机设备及计算机可读存储介质。
背景技术
目前市场上使用ElasticSearch作为企业分布式日志搜索平台,大部分企业都是大数据平台使用ElasticSearch作为大数据平台数据汇聚业务数据,进行数据的ETL或者data-Aggregate。
随着业务需求的不断提升,关系型数据库Oracle的读写能力在数据量日趋增长的形式下也日渐接近瓶颈,在数据请求压力过大时,依旧采用常规的单点读数据库的方式实现对数据请求指令的响应,使得数据处理效率较低。
因此,现在亟需一种能够有效降低Oracle数据库的请求压力,提升请求响应效率的数据库的读写分离方法。
发明内容
本申请提供了一种数据库的读写分离方法、装置、计算机设备及存储介质,以降低数据库的请求压力,提升数据库的请求响应效率。
第一方面,本申请提供了一种数据库的读写分离方法,所述方法包括:
接收数据读取指令,并根据所述数据读取指令在第一数据库中进行查询;
若确定所述第一数据库中不包含有所述数据读取指令对应的目标数据,则控制所述第一数据库基于所述数据读取指令访问第二数据库,并控制所述第一数据库将所述目标数据进行同步;
当确定数据同步完成时,控制所述第一数据库响应所述数据读取指令,以将所述目标数据进行反馈。
第二方面,本申请还提供了一种数据库的读写分离装置,所述装置包括:
指令接收模块,用于接收数据读取指令,并根据所述数据读取指令在第一数据库中进行查询;
数据查询模块,用于若确定所述第一数据库中不包含有所述数据读取指令对应的目标数据,则控制所述第一数据库基于所述数据读取指令访问第二数据库,并控制所述第一数据库将所述目标数据进行同步;
数据反馈模块,用于当确定数据同步完成时,控制所述第一数据库响应所述数据读取指令,以将所述目标数据进行反馈。
第三方面,本申请还提供了一种计算机设备,所述计算机设备包括存储器和处理器;所述存储器用于存储计算机程序;所述处理器,用于执行所述计算机程序并在执行所述计算机程序时实现如上述的数据库的读写分离方法。
第四方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如上述的数据库的读写分离方法。
本申请公开了一种数据库的读写分离方法、装置、计算机设备及存储介质,在接收到数据请求指令时,通过对数据请求指令进行识别,确定当前所对应的操作类型,在需要进行数据读取时,根据所接收到的数据请求指令在ES集群中进行数据的查询和读取,而在需要进行数据的写入时,将需要写入的数据写入至Oracle数据库中,通过将数据的读写操作分开在不同的端上执行,可以明显的提升Oracle数据库的整体性能,降低数据库的压力,同时还定时的对ES集群和Oracle数据库进行数据同步,保证两者的数据一致性,避免进行数据读取时出现读取异常的情况。提升了整体的数据处理的效率。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一个实施例提供的一种数据库的读写分离方法的流程示意图;
图2为本申请一实施例提供的进行数据写入的步骤的流程示意图;
图3为本申请一实施提供的进行数据读取的步骤的流程示意图;
图4为本申请一实施例提供的数据同步的步骤的流程示意图;
图5为本申请一个实施例中一种数据库的读写分离装置的示意性框图;
图6为本申请一个实施例中计算机设备的结构示意性框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参阅图1,图1为本申请一个实施例提供的一种数据库的读写分离方法的流程示意图。
如图1所示,该数据库的读写分离方法包括步骤S101至步骤S103。
步骤S101、接收数据请求指令。
在用户根据自身需求,需要对所记录存储的数据进行相应的处理时,将会向服务器发送相应的数据请求指令,其中数据请求指令中包含有用户的操作行为,进而使得服务器对所接收到的数据请求指令进行响应,以对数据进行相应的处理。
具体地,数据请求指令是用户根据实际的需求进行响应的操作而发出的,比如在与服务器关联的设备端上,通过相应的触控操作,以向服务器发出数据请求指令。在用户进行操作时,数据请求指令中携带用户的行为意图,因此在进行操作时,确定当前的行为意图,进而形成携带有用户行为意图的数据请求指令,并进行发送。
在对数据库中所记录的数据信息进行处理时,通常是数据的读取和数据的写入,一个是从数据库中获取相关的数据信息,一个是将需要记录存储的数据写入至数据库中。因此对于数据请求指令而言,一般所包含的用户行为意图也就是数据的读取和数据的写入。
在一实施例中,进行数据处理时,通常是存在需要对某一或者某些数据进行处理的情况,比如业务过程发生变化,此时将需要将业务过程中所产生的数据进行记录,或者对需要进行读取的数据进行获取。
在实际应用中,数据库通常会与上下游系统或者设备端关联,进而接收上游或下游系统的数据请求,其中,上游系统和下游系统均为与数据库所在系统相关联的系统,且上游系统和下游系统可以时刻向数据库所在系统发送相应的请求信息,以使得数据库根据所接收道的请求信息进行相应的处理。请求消息中包含有对数据信息的处理,比如数据修改、数据删除以及数据新增等。
在数据库的使用过程中,时刻会存在着数据的读取和写入。数据的读取是在数据库中进行数据的获取和查看,数据的写入是在出现数据变更时对记录在数据库中的数据进行及时的变更,如新增或者删除等。因此,系统会时刻接收上游系统发送的请求消息,通过对请求消息进行相应的分析处理,确定当前是需要进行数据读取还是要进行数据写入。
步骤S102、根据所述数据请求指令,确定当前所对应的数据操作类型。
在接收到数据请求指令之后,服务器将会对数据请求指令进行响应,而在对数据请求指令进行响应时,不同的数据请求指令对应的数据处理方式也会有所不同,比如在数据读取时在相应的数据库中获取当前所要查询的数据,而在数据写入时将当前所需要写入的数据写入至对应的数据库中。因此,在接收到数据请求指令之后,根据数据请求指令确定当前所对应的数据操作类型,进而根据不同的数据操作类型确定所对应的处理方式。
在确定当前所对应的数据操作类型时,数据操作类型包括数据写入和数据读取,其中数据写入可以理解为数据更新,包括数据的新增、数据的删除等。在实际应用过程中,数据库在接收到上游系统发送的数据请求消息之后,根据数据请求消息中所包含的指令信息确定当前所对应的操作类型,其中操作类型包括有数据读取和数据写入。在接收到请求消息时对请求消息中所包含的信息进行获取,进而确定当前所对应的操作类型。
具体地,在接收到的数据请求指令时,识别所述数据请求指令中所包含的操作指令,以根据所述操作指令生成得到对应的操作标签;根据所述操作标签确定所述数据请求指令所对应的数据操作类型。
对于数据请求指令而言,是根据用户的实际操作而生成得到的,在实际的应用过程中,用户可以通过选择想要的操作以生成得到当前所对应的数据请求指令,因此在接收到数据请求指令并确定当前所对应的操作类型时,识别数据请求指令中所包含的操作指令,其中操作指令可以是数据读取和数据写入中的一种,然后根据所得到的操作指令确定当前对应的操作标签,确定当前所对应的数据操作类型。
实际上,在对数据请求指令中所包含的操作指令进行识别时,可以直接确定当前所接收到的数据请求指令所对应的数据操作类型,比如数据请求指令中所包含的操作指令为存储,那么此时所对应的操作类型为数据写入,再比如数据请求指令中所包含的操作指令为读取,那么此时所对应的操作类型为数据读取。
另外,还可以根据数据请求指令中所携带的数据信息来决定,在数据请求指令中携带有数据信息时,那么此时所对应的操作类型为数据写入,而在数据请求指令中未携带有数据信息时,那么此时所对应的操作类型可能就是数据读取。但是仅仅根据数据请求指令中是否包含有数据信息可能会存在判断错误的情况,比如在需要进行数据删除时,此时数据请求指令中包含的是一个操作指令以及对应需要进行删除的数据的数据标签,若是还是根据是否包含的有数据信息,显然会出现判断错误的情况,因此在保证判断正确的情况下,更好的是根据数据请求指令中所包含的操作指令来确定。
若此时依旧根据数据请求指令中是否包含的有数据信息来确定当前所对应的数据操作类型,可以进行进一步的限定,比如确定数据请求指令中是否仅仅包含有数据信息,在包含有数据信息时,说明此时需要进行数据写入,在不包含的数据信息时在对所包含的操作指令进行识别。
需要说明的是,上述所提到以及后续所提到的数据写入,并不单纯指的是将数据写入存储至数据库中,还可以是对数据库中的数据进行新增和删除等更新操作。
在一实施例中,在进行读写分离时,是将数据读取和数据写入的操作,分别在ES集群和Oracle数据库上进行性,其中,ES为ElasticSearch,是一个基于Lucene的搜索服务器,它可以基于RESTful web接口提供了一个分布式多用户能力的全文搜索引擎。能够达到实时搜索,稳定,可靠,快速,安装使用方便。Oracle数据库,是一款关系数据库管理系统。Oracle数据库系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它具有高效率、高可靠性以及适应高吞吐量的特点。
根据ES和Oracle数据库的特点,对于数据的读取和写入,在进行数据写入时,将所需要写入的数据写入至Oracle数据库中,而在进行数据的读取时,ES将会直接响应用户的数据请求指令,以在ES中获取需要读取的数据进行反馈。
步骤S103、当确定所述数据操作类型为数据写入时,根据所述数据请求指令得到对应的待写入数据,并将所述待写入数据写入至Oracle数据库中。
在一实施例中,该数据库的读写分离方案为了将数据的读写分块,以降低数据库的请求压力,以及对数据请求指令的响应速度。因此,对于所接收到的数据请求指令,并不是采用相同的方式实现对数据请求指令的响应,即在接收到数据请求指令时,无论是数据的写入还是读取,都是ES数据库上实现,而是需要根据数据请求指令,选择合适的方式来响应所接收到的数据请求指令。
因此,在确定当前所接收到的数据请求指令所对应的数据操作类型为数据写入,也就是当前需要进行数据写入时,根据数据请求指令确定当前所对应的需要进行写入的待写入数据,进而将所得到的待写入数据写入至关系型数据库Oracle数据库中。
在实际应用中,在确定当前需要进行数据写入时,说明当前存在对数据的变更,其中数据的变更至少包括有数据的删除、数据的修改以及数据的新增,也就是此时需要对所存储的数据进行一定的更新,那么此时对于所更新的数据则需要在Oracle数据库中进行记录存储。
比如一个订单信息,在用户完成下单时会生成得到一个订单信息,此时订单的状态为待支付状态,然后在用户完成支付之后,显然订单中的部分信息将需要进行变更,直接的便是订单的状态需要有待支付状态变为已支付状态,对于处于待支付状态和处于已支付状态的订单而言,其所包含的数据信息显然会发送相应的变化,因此在户完成订单的支用付之后,需要进行数据的写入,将最新的数据信息写入至Oracle数据库中,以便用户可以进行后续的操作。
进一步地,参照图2,图2为本申请一实施例提供的进行数据写入的步骤的流程示意图。其中,步骤S103包括子步骤S201至子步骤S203。
子步骤S201、读取所述数据请求指令中所包含的待写入数据。
在确定当前所对应的数据操作类型为数据写入时,确定当前需要进行数据的写入,此时将会根据所接收到的数据请求指令确定当前需要进行数据写入的待写入数据。
在一实施例中,待写入数据可以携带在数据请求指令中,在通过对数据请求指令中所包含的操作指令进行识别,确定需要进行数据信息的上传时,对数据请求指令中所携带包含的数据信息进行获取,进而将所得到的数据信息进行上传。
另外,对于所需要进行上传的数据信息而言,还可以是后续用户所上传的,具体地,在确定当前所对应的数据操作类型为数据写入时,若此时并不知道所需要上传写入的数据信息,将会进行反馈,以使得用户根据反馈选择或者导入需要进行上传写入的数据信息。
子步骤S202、识别所述待写入数据对应的数据标识,以及获取所述Oracle数据库对应的关系列表,其中所述关系列表存储在区块链节点中。
在得到需要进行写入的待写入数据之后,将待写入数据写入至Oracle数据库中。而在进行数据的写入时,所包括的操作可以是数据的完全写入,还可以是数据的修改,也可以是数据的删除,其中数据的删除是一种特殊的数据写入,可以理解为将一个空白数据写入原数据中。
因此,在确定了待写入数据之后,识别待写入数据对应的数据标识,同时还将获取Oracle数据库所对应的关系列表,进而确定后续如何实现数据的写入。
示例性的,在根据数据请求指令得到待写入数据时,通过对数据请求指令中所包含的数据信息进行读取,由于还需要确定待写入数据对应的需要进行写入的数据对象,因此将获取待写入数据对应的数据标识,进而根据数据标识确定对应的数据对象。而在确定数据对象时,利用所得到的数据标识进行查询匹配,具体通过获取Oracle数据库所对应的关系列表,然后在关系列表中确定是否包含有所得到的数据标识,进而确定待写入数据对应的数据对象,其中关系列表存储在区块链节点中。
在实际应用中,数据对象可以是预先已经存在于Oracle数据库中的,也就是关系列表中包含有所识别得到的数据标识,还可以是不存在于Oracle数据库中的,即关系列表中不包含有所识别得到的数据标识。
其中,在确定数据标识存在于关系列表中时,说明此时是进行数据的更新,比如数据的修改或者删除等,如上述描述的对于一个订单信息有待支付状态变为已支付状态,在确定数据标识不存在于关系列表中时,说明此时可能是需要将一个新数据写入至Oracle数据库中,如生成一个新的订单信息。
子步骤S203、根据所述数据标识以及关系列表,确定所述待写入数据对应的写入路径,并将所述待写入数据基于所述写入路径写入至所述Oracle数据库中。
在得到待写入数据对应的数据标识和Oracle数据库所对应的关系列表之后,将会在关系列表中进行查询,确定数据标识是否存在于关系列表中。
在一实施例中,在得到数据标识和关系列表之后,将会根据数据标识和关系列表确定待写入数据所对应的数据写入的写入路径,进而将待写入数据根据所得到的写入路径写入到Oracle数据库中,以完成对待写入数据的存储。
在关系列表中,记录着不同的数据对应的数据写入路径,在进行查询时,若确定关系列表中存在有所识别得到的数据标识,那么将会得到写入待写入数据时所对应的写入路径,以基于写入路径完成待写入数据的写入。
另外,在确定关系列表中不包含的有所识别得到的数据标识时,此时将不能根据关系列表确定当前所对应的数据写入路径,由于此时所得到的待写入数据是新数据,因此可以创建一个新的写入路径,以使得待写入数据依据所创建的新的写入路径完成数据的写入,同时在完成对待写入数据的写入之后,将会对关系列表进行更新存储。
步骤S104、当所述数据操作类型为数据读取时,根据所述数据请求指令在ES集群中获取对应的目标数据,并进行反馈。
ElasticSearch是一个基于Lucene的搜索服务器。它基于RElasticSearchTfulweb接口提供了一个分布式多用户能力的全文搜索引擎。ES集群是一个包含有若干子服务器,用于同时响应多个数据搜索指令,也就是可以同时实现对多个数据信息的搜索以及读取。因此,基于ES具有的特点,在需要进行数据的读取时,将会在ES上完成对当前所需要的目标数据的读取。
在一实施例中,在确定数据操作类型为数据读取,也就是确定当前需要在相关的数据库中获取数据信息时,将会根据所得到的数据请求指令在ES集群中获取当前所需要的目标数据,并将所得到的目标数据进行反馈。
在进行数据信息的读取时,将会根据所设定或者选择的条件进行查询,或者根据所选择的数据信息的数据特征实现数据的获取,因此在根据数据请求指令在ES集群中获取目标数据时,首先确定目标数据所对应的相关数据特征,进而使得ES集群根据数据特征实现数据的查询和反馈。
进一步地,参照图3,图3为本申请一实施提供的进行数据读取的步骤的流程示意图。其中,步骤S104包括子步骤S301至子步骤S303。
子步骤S301、识别所述数据请求指令所包含的数据查询条件。
子步骤S302、根据所述数据查询条件,在所述ES集群中进行查询,以得到所述数据查询条件对应的待读取数据。
子步骤S303、将所述待读取数据进行展示在相应的数据显示界面上。
在确定当前所对应的数据操作类型为数据读取时,需要确定当前需要读取的数据,进而将所确定的数据进行反馈。具体地,在确定需要进行数据信息的读取时,识别数据请求指令中所包含的数据查询条件,进而根据所得到的数据查询条件,在ES集群中进行查询,确定数据查询条件所对应的待读取数据,进而将所得到的待读取数据进行反馈,比如展示在相应的数据显示界面上。
在一实施例中,数据查询条件携带在数据请求指令中,在确定数据请求指令为数据读取指令时,对数据请求指令中所携带的数据查询条件进行识别,进而利用所得到的数据查询条件,实现对待读取数据的获取。
另外,数据查询条件还可以是用所输入的,在确定数据请求指令为数据读取指令时,可以进行相应的条件输入反馈,以使得用户响应条件输入反馈输入响应的数据查询条件。
而在在得到数据查询条件之后,可以根据数据查询条件所包含的若干条件在ES集群中进行一步步查询,以确定当前所对应的待读取数据。具体地,可以是利用数据查询条件所包含的拖杆条件对数据进行一次次的筛选,以得到满足数据查询条件中的所有条件的数据,进而进行数据反馈。
另外,在进行数据的查询时,还可以是分多次进行查询条件的输入,比如在确定数据请求指令为数据读取指令时,反馈需要输入相应的数据查询条件,此时用户可以不一次性的将所有的查询条件都输入,而是分多次的输入,没输入一次查询条件,完成一次查询并反馈当前所查询到的数据信息,然后用户在根据实际的需求在原条件的基础上再次输入一个条件,以实现对数据的进一步筛选,直至所得到的数据满足用户的需求。
进一步地,基于上述的描述,在ES集群+Oracle数据库的系统中,进行数据写入时将所需要写入的数据写入至Oracle数据库中,而在进行数据读取时则是在ES集群中进行相应的数据查找和获取,也就是对于ES集群和Oracle数据库而言,都存储有相应的数据信息,且通常所包含的数据信息是相同的。但是由于数据读取是在ES集群中所执行的,且数据的写入是在Oracle数据库上所执行的,因此为了保证ES集群中所记录的数据与Oracle数据库中所记录的数据一致,需要进行数据的同步,以使得Oracle数据库中所记录的数据信息可以同步至ES集群中。
在进行数据读取的过程中,由于Oracle数据库中存在有数据信息的写入,因此在没有及时进行数据的同步时,可能在ES集群中查询不到相关的数据信息,因此,此时包括:当根据所述数据请求指令在所述ES集群中并未查询到对应的目标数据时,发出查询异常的反馈信息;当接收到响应所述反馈信息数据的响应信息时,基于所述响应信息在所述ES集群中进行查询,并在查询异常的次数达到预设次数时触发数据同步功能。
在ES集群中进行数据的查询和读取时,若根据所得到的数据查询条件确定ES集群中此时没有相匹配的数据时,将会根据进行查询异常的反馈,以使得用户可以重新输入相应的数据查询条件,也就是响应信息,然后再次根据响应信息进行查询。
当查询异常的次数达到预设次数时,将会反馈查询异常且不再进行查询条件的输入的反馈信息,由于在所设定的预设次数之内依旧没有查询到相关的数据信息,那么此时将会触发系统的数据同步功能,以实现将Oracle数据库中的数据同步至ES集群中。
在实际应用中,若多次的查询条件的数据依旧没有得到相应的待读取数据,且由于Oracle数据库存在有数据的写入,也就是可能会写入新的且ES集群中没有的数据,因此此时将会进行数据信息的同步。并在完成数据信息的同步时,发出同步完成的反馈信息,以使得用户可以及时的进行数据的读取。
需要说明的是,上述描述的步骤S103和步骤S104在实际应用中,对于一个数据请求指令而言,只会执行步骤S103或步骤S104中的一个,并不会同时指令两个步骤。
进一步地,参照图4,图4为本申请一实施例提供的数据同步的步骤的流程示意图。其中该过程包括步骤S401至步骤S402。
步骤S401、当接收到数据同步指令时,创建一个数据更新线程,并获取所述Oracle数据库所包含的目标数据;
步骤S402、将所述目标数据发送至所述ES集群中,以对所述ES集群进行数据同步。
在实际应用中,为了保证Oracle数据库和ES集群中所记录的数据是相同的,以不出现数据混乱的情况,由于Oracle数据库中存在数据写入的情况,因此需要将Oracle数据库中的数据同步至ES集群中。具体地,在接收到数据同步指令时,创建一个用于执行数据更新的线程,以执行数据同步指令,在进行数据同步时,获取Oracle数据库中所记录的目标数据,然后将目标数据发送至ES集群中,以实现对ES集群的数据同步。
数据同步指令是系统自身自动发出的,在需要进行数据同步时便会自动发送数据同步指令,以使得系统对数据同步指令进行响应而完成数据的同步。
当接收到数据同步指令时,将会通过HiveOnElasticSearch大数据平台使得Oracle数据库中的数据覆盖ES集群内数据,以保持Oracle数据库内数据与ES集群中的数据的一致性。
在实际应用过程中,在使用Oracle数据库中的数据覆盖ES集群时,也就是执行ES集群的数据写入,在本方案中,ElasticSearch的数据写入是采用bulk写,也就是定时刷盘策略,进而能够支持大并发的数据读写请求,由于ElasticSearch是采用Write=>RefrElasticSearchh=>Flush的策略,而RefrElasticSearchh动作会引发频繁的segments段合并,且Lucene段的合并会影响数据的写入,因此refrElasticSearchh不宜过于频繁,另外对于flush涉及到的数据刷新到磁盘的过程,也不宜太过频繁,因此在进行ElasticSearch的数据写入时,可以根据自身需求设置合理的参数,比如设定数据同步的周期,以降低在数据同步对数据写入的影响。
在上述描述的数据库的读写分离方法,在接收到数据请求指令时,通过对数据请求指令进行识别,确定当前所对应的操作类型,在需要进行数据读取时,根据所接收到的数据请求指令在ES集群中进行数据的查询和读取,而在需要进行数据的写入时,将需要写入的数据写入至Oracle数据库中,通过将数据的读写操作分开在不同的端上执行,可以明显的提升Oracle数据库的整体性能,降低数据库的压力,同时还定时的对ES集群和Oracle数据库进行数据同步,保证两者的数据一致性,避免进行数据读取时出现读取异常的情况。提升了整体的数据处理的效率。
请参阅图5,图5为本申请一个实施例中一种数据库的读写分离装置的示意性框图,该装置用于执行前述的数据库的读写分离方法。
如图5所示,该数据库的读写分离装置500包括:
指令接收模块501,用于接收数据请求指令;
类型确定模块502,用于根据所述数据请求指令,确定当前所对应的数据操作类型;
数据写入模块503,用于当所述数据操作类型为数据写入时,根据所述数据请求指令得到的对应的待写入数据,并将所述待写入数据写入至Oracle数据库中;
数据读取模块504,用于当所述数据操作类型为数据读取时,根据所述数据请求指令在ES集群中获取对应的目标数据,并进行反馈。
进一步地,在一个实施例中,所述数据库的读写分离装置500具体还用于:
数据初始化,以将所述Oracle数据库中所记录的历史数据信息同步至所述ES集群中。
进一步地,在一个实施例中,所述类型确定模块502具体还用于:
识别所述数据请求指令中所包含的操作指令,以根据所述操作指令生成得到对应的操作标签;
根据所述操作标签确定所述数据请求指令所对应的数据操作类型。
进一步地,在一个实施例中,所述数据写入模块503具体还用于:
读取所述数据请求指令中所包含的待写入数据;
识别所述待写入数据对应的数据标识,以及获取所述Oracle数据库对应的关系列表,其中所述关系列表存储在区块链节点中;
根据所述数据标识以及关系列表,确定所述待写入数据对应的写入路径,并将所述待写入数据基于所述写入路径写入至所述Oracle数据库中。
进一步地,在一个实施例中,所述数据读取模块504具体还用于:
识别所述数据请求指令所包含的数据查询条件;
根据所述数据查询条件,在所述ES集群中进行查询,以得到所述数据查询条件对应的待读取数据;
将所述待读取数据进行展示在相应的数据显示界面上。
进一步地,在一个实施例中,所述数据库的读写分离装置500具体还用于:
当根据所述数据请求指令在所述ES集群中并未查询到对应的目标数据时,发出查询异常的反馈信息;
当接收到响应所述反馈信息数据的响应信息时,基于所述响应信息在所述ES集群中进行查询,并在查询异常的次数达到预设次数时触发数据同步功能。
进一步地,在一个实施例中,所述数据库的读写分离装置500具体还包括数据同步模块,该数据同步模块用于:
当接收到数据同步指令时,创建一个数据更新线程,并获取所述Oracle数据库所包含的目标数据;
将所述目标数据发送至所述ES集群中,以对所述ES集群进行数据同步。
需要说明的是,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和各模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
上述的装置可以实现为一种计算机程序的形式,该计算机程序可以在如图6所示的计算机设备上运行。
请参阅图6,图6为本申请一个实施例中计算机设备的结构示意性框图。该计算机设备可以是服务器。
参阅图6,该计算机设备包括通过系统总线连接的处理器、存储器和网络接口,其中,存储器可以包括非易失性存储介质和内存储器。
非易失性存储介质可存储操作系统和计算机程序。该计算机程序包括程序指令,该程序指令被执行时,可使得处理器执行任意一种数据库的读写分离方法。
处理器用于提供计算和控制能力,支撑整个计算机设备的运行。
内存储器为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行任意一种数据库的读写分离方法。
该网络接口用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
应当理解的是,处理器可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
其中,在一个实施例中,所述处理器用于运行存储在存储器中的计算机程序,以实现如下步骤:
接收数据请求指令;
根据所述数据请求指令,确定当前所对应的数据操作类型;
当所述数据操作类型为数据写入时,根据所述数据请求指令得到的对应的待写入数据,并将所述待写入数据写入至Oracle数据库中;
当所述数据操作类型为数据读取时,根据所述数据请求指令在ES集群中获取对应的目标数据,并进行反馈。
在一个实施例中,所述处理器在实现所述接收数据请求指令之前,还用于实现:
数据初始化,以将所述Oracle数据库中所记录的历史数据信息同步至所述ES集群中。
在一个实施例中,所述处理器在实现所述根据所述数据请求指令,确定当前所对应的数据操作类型时,还用于实现:
识别所述数据请求指令中所包含的操作指令,以根据所述操作指令生成得到对应的操作标签;
根据所述操作标签确定所述数据请求指令所对应的数据操作类型。
在一个实施例中,所述处理器在实现所述根据所述数据请求指令得到的对应的待写入数据,并将所述待写入数据写入至Oracle数据库中时,还用于实现:
读取所述数据请求指令中所包含的待写入数据;
识别所述待写入数据对应的数据标识,以及获取所述Oracle数据库对应的关系列表,其中所述关系列表存储在区块链节点中;
根据所述数据标识以及关系列表,确定所述待写入数据对应的写入路径,并将所述待写入数据基于所述写入路径写入至所述Oracle数据库中。
在一个实施例中,所述处理器在实现所述根据所述数据请求指令在ES集群中获取对应的目标数据,并进行反馈时,还用于实现:
识别所述数据请求指令所包含的数据查询条件;
根据所述数据查询条件,在所述ES集群中进行查询,以得到所述数据查询条件对应的待读取数据;
将所述待读取数据进行展示在相应的数据显示界面上。
在一个实施例中,所述处理器在实现所述当所述数据操作类型为数据读取时,根据所述数据请求指令在ES集群中获取对应的目标数据,并进行反馈之后,还用于实现:
当根据所述数据请求指令在所述ES集群中并未查询到对应的目标数据时,发出查询异常的反馈信息;
当接收到响应所述反馈信息数据的响应信息时,基于所述响应信息在所述ES集群中进行查询,并在查询异常的次数达到预设次数时触发数据同步功能。
在一个实施例中,所述处理器在实现所述当所述操作类型为数据写入时,根据所述数据请求指令得到的对应的待写入数据,并将所述待写入数据写入至Oracle数据库中之后,还用于实现:
当接收到数据同步指令时,创建一个数据更新线程,并获取所述Oracle数据库所包含的目标数据;
将所述目标数据发送至所述ES集群中,以对所述ES集群进行数据同步。
本申请的实施例中还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序中包括程序指令,所述处理器执行所述程序指令,实现本申请实施例提供的任一项数据库的读写分离方法。
其中,所述计算机可读存储介质可以是前述实施例所述的计算机设备的内部存储单元,例如所述计算机设备的硬盘或内存。所述计算机可读存储介质也可以是所述计算机设备的外部存储设备,例如所述计算机设备上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
进一步地,所述计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
另外,本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种数据库的读写分离方法,其特征在于,所述方法包括:
接收数据请求指令;
根据所述数据请求指令,确定当前所对应的数据操作类型;
当所述数据操作类型为数据写入时,根据所述数据请求指令得到的对应的待写入数据,并将所述待写入数据写入至Oracle数据库中;
当所述数据操作类型为数据读取时,根据所述数据请求指令在ES集群中获取对应的目标数据,并进行反馈。
2.根据权利要求1所述的方法,其特征在于,所述接收数据请求指令之前,还包括:
对数据库进行数据初始化,以将所述Oracle数据库中所记录的历史数据信息同步至所述ES集群中。
3.根据权利要求1所述的方法,其特征在于,所述根据所述数据请求指令,确定当前所对应的数据操作类型,包括:
识别所述数据请求指令中所包含的操作指令,以根据所述操作指令生成得到对应的操作标签;
根据所述操作标签确定所述数据请求指令所对应的数据操作类型。
4.根据权利要求1所述的方法,其特征在于,所述根据所述数据请求指令得到的对应的待写入数据,并将所述待写入数据写入至Oracle数据库中,包括:
读取所述数据请求指令中所包含的待写入数据;
识别所述待写入数据对应的数据标识,以及获取所述Oracle数据库对应的关系列表,其中所述关系列表存储在区块链节点中,其中所述关系列表存储在区块链节点中;
根据所述数据标识以及关系列表,确定所述待写入数据对应的写入路径,并将所述待写入数据基于所述写入路径写入至所述Oracle数据库中。
5.根据权利要求1所述的方法,其特征在于,所述根据所述数据请求指令在ES集群中获取对应的目标数据,并进行反馈,包括:
识别所述数据请求指令所包含的数据查询条件;
根据所述数据查询条件,在所述ES集群中进行查询,以得到所述数据查询条件对应的待读取数据;
将所述待读取数据进行展示在相应的数据显示界面上。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述当所述数据操作类型为数据读取时,根据所述数据请求指令在ES集群中获取对应的目标数据,并进行反馈之后,还包括:
当根据所述数据请求指令在所述ES集群中并未查询到对应的目标数据时,发出查询异常的反馈信息;
当接收到响应所述反馈信息数据的响应信息时,基于所述响应信息在所述ES集群中进行查询,并在查询异常的次数达到预设次数时触发数据同步功能。
7.根据权利要求1所述的方法,其特征在于,所述当所述操作类型为数据写入时,根据所述数据请求指令得到的对应的待写入数据,并将所述待写入数据写入至Oracle数据库中之后,还包括:
当接收到数据同步指令时,创建一个数据更新线程,并获取所述Oracle数据库所包含的目标数据;
将所述目标数据发送至所述ES集群中,以对所述ES集群进行数据同步。
8.一种数据库的读写分离装置,其特征在于,所述装置包括:
指令接收模块,用于接收数据请求指令;
类型确定模块,用于根据所述数据请求指令,确定当前所对应的数据操作类型;
数据写入模块,用于当所述数据操作类型为数据写入时,根据所述数据请求指令得到的对应的待写入数据,并将所述待写入数据写入至Oracle数据库中;
数据读取模块,用于当所述数据操作类型为数据读取时,根据所述数据请求指令在ES集群中获取对应的目标数据,并进行反馈。
9.一种计算机设备,其特征在于,包括存储器和处理器:
所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述的数据库的读写分离方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机可读指令被所述处理器执行时,使得一个或多个处理器执行如权利要求1至7中任一项所述的数据库的读写分离方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011197570.6A CN112307049A (zh) | 2020-10-30 | 2020-10-30 | 数据库的读写分离方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011197570.6A CN112307049A (zh) | 2020-10-30 | 2020-10-30 | 数据库的读写分离方法、装置、设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112307049A true CN112307049A (zh) | 2021-02-02 |
Family
ID=74334034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011197570.6A Pending CN112307049A (zh) | 2020-10-30 | 2020-10-30 | 数据库的读写分离方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112307049A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094364A (zh) * | 2021-04-02 | 2021-07-09 | 上海中通吉网络技术有限公司 | 快递网点账单的读写方法、装置、设备及存储介质 |
CN113934760A (zh) * | 2021-10-15 | 2022-01-14 | 珠海百丰网络科技有限公司 | 基于人工智能模型的金融数据识别与传输系统及其方法 |
CN114218968A (zh) * | 2021-11-23 | 2022-03-22 | 深圳市科脉技术股份有限公司 | 非接触式ic卡数据处理方法、装置、计算机设备和介质 |
CN114546276A (zh) * | 2022-02-23 | 2022-05-27 | 华云数据控股集团有限公司 | 高可用的数据存储读写方法、系统、装置及设备 |
-
2020
- 2020-10-30 CN CN202011197570.6A patent/CN112307049A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094364A (zh) * | 2021-04-02 | 2021-07-09 | 上海中通吉网络技术有限公司 | 快递网点账单的读写方法、装置、设备及存储介质 |
CN113934760A (zh) * | 2021-10-15 | 2022-01-14 | 珠海百丰网络科技有限公司 | 基于人工智能模型的金融数据识别与传输系统及其方法 |
CN114218968A (zh) * | 2021-11-23 | 2022-03-22 | 深圳市科脉技术股份有限公司 | 非接触式ic卡数据处理方法、装置、计算机设备和介质 |
CN114546276A (zh) * | 2022-02-23 | 2022-05-27 | 华云数据控股集团有限公司 | 高可用的数据存储读写方法、系统、装置及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112307049A (zh) | 数据库的读写分离方法、装置、设备及可读存储介质 | |
US9710256B2 (en) | Software upgrade method and system for mobile terminal | |
US9372908B2 (en) | Merging an out of synchronization indicator and a change recording indicator in response to a failure in consistency group formation | |
CN103544153B (zh) | 一种基于数据库的数据更新方法和系统 | |
US9037819B2 (en) | Source cleaning cascaded volumes using reference counts | |
WO2020233352A1 (zh) | 区块链数据入链方法、装置、计算机设备和存储介质 | |
CN104040481A (zh) | 用于融合、存储和检索增量式备份数据的方法和系统 | |
US10146633B2 (en) | Data recovery from multiple data backup technologies | |
US10346150B2 (en) | Computerized system and method for patching an application by separating executables and working data using different images | |
CN109542682A (zh) | 一种数据备份方法、装置、设备和存储介质 | |
CN112306993A (zh) | 基于Redis的数据读取方法、装置、设备及可读存储介质 | |
CN107113324A (zh) | 数据备份装置及方法、系统 | |
US20050154786A1 (en) | Ordering updates in remote copying of data | |
US20140122433A1 (en) | Storage device and data backup method | |
CN102098303A (zh) | 实现自动化升级的硬件防火墙及其升级方法 | |
CN106874343B (zh) | 一种时序数据库的数据删除方法及系统 | |
CN106708865B (zh) | 流处理系统中访问窗口数据的方法和装置 | |
US10430400B1 (en) | User controlled file synchronization limits | |
AU2015265599B2 (en) | System and method for the production of job level pre-processed backup of critical data and/or datasets in a mainframe computing environment | |
US8572048B2 (en) | Supporting internal consistency checking with consistency coded journal file entries | |
US20140108367A1 (en) | Client apparatus and database server for resumable transaction and method thereof | |
US10430115B2 (en) | System and method for optimizing multiple packaging operations in a storage system | |
CN111966531B (zh) | 数据快照方法、装置、计算机设备及存储介质 | |
US10599530B2 (en) | Method and apparatus for recovering in-memory data processing system | |
Kang et al. | Per-block-group journaling for improving fsync response time |
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 |