CN111522870A - 数据库访问方法、中间件和可读存储介质 - Google Patents
数据库访问方法、中间件和可读存储介质 Download PDFInfo
- Publication number
- CN111522870A CN111522870A CN202010273142.0A CN202010273142A CN111522870A CN 111522870 A CN111522870 A CN 111522870A CN 202010273142 A CN202010273142 A CN 202010273142A CN 111522870 A CN111522870 A CN 111522870A
- Authority
- CN
- China
- Prior art keywords
- database
- request
- data
- candidate
- priority
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000005070 sampling Methods 0.000 claims description 46
- 238000012545 processing Methods 0.000 claims description 25
- 230000004044 response Effects 0.000 claims description 24
- 230000001360 synchronised effect Effects 0.000 claims description 21
- 238000004891 communication Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 description 8
- 238000012544 monitoring process Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000013467 fragmentation Methods 0.000 description 2
- 238000006062 fragmentation reaction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
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/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
-
- 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
- G06F16/24552—Database cache management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例涉及数据库领域,公开了一种数据库访问方法、中间件和可读存储介质。本发明中,上述数据库访问方法包括:接收数据请求;若所述数据请求为数据读取请求,则确定所述数据读取请求的请求类型;获取所述数据读取请求的请求类型对应的候选数据库集合;在所述候选数据库集合中确定目标数据库,并将所述数据读取请求发送至所述目标数据库,由所述目标数据库响应所述数据读取请求,使得可以实现对数据请求所请求的数据的快速返回,有利于提高数据请求的效率。
Description
技术领域
本发明实施例涉及数据库领域,特别涉及一种数据库访问方法、中间件和可读存储介质。
背景技术
应用系统在运行的过程中通常需要访问数据库,比如在数据库中读取或写入数据。目前,为了访问数据库可以采取的方式主要有:应用系统和数据库直连,比如通过相应数据库提供的接口进行直连,或者通过中间件使应用系统和数据库间接连接。不同的数据库存储数据有不同的优缺点,开发人员根据经验选择合适的数据库处理来自应用系统的数据请求。
然而,发明人发现相关技术中至少存在如下问题:开发人员根据经验选择的数据库,在一定程度上缺乏合理性,导致数据请求的效率较低。
发明内容
本发明实施方式的目的在于提供一种数据库访问方法、中间件和可读存储介质,使得可以在实现不同类型数据库之间的自动访问的同时,对数据请求所请求的数据的快速返回,有利于提高数据请求的效率。
为解决上述技术问题,本发明的实施方式提供了一种数据库访问方法,包括以下步骤:接收数据请求;若所述数据请求为数据读取请求,则确定所述数据读取请求的请求类型;获取所述数据读取请求的请求类型对应的候选数据库集合;在所述候选数据库集合中确定目标数据库,并将所述数据读取请求发送至所述目标数据库,由所述目标数据库响应所述数据读取请求。
本发明的实施方式还提供了一种中间件,包括:应用通讯组件,用于接收数据请求;解析组件,用于解析所述数据请求,并在解析出所述数据请求为数据读取请求时,确定所述数据读取请求的请求类型;数据库选择器,用于获取所述数据读取请求的请求类型对应的候选数据库集合,并在所述候选数据库集合中确定目标数据库;数据库连接池,用于将所述数据读取请求发送至所述目标数据库,由所述目标数据库响应所述数据读取请求。
本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述的数据库访问方法。
本发明实施方式相对于现有技术而言,对于接收到的数据读取请求,确定数据读取请求的请求类型,获取数据读取请求的请求类型对应的候选数据库集合,从而可以在候选数据库集合中确定目标数据库,并将数据读取请求发送至目标数据库由目标数据库响应。即本发明实施方式中可以根据数据读取请求的请求类型,选择与该请求类型适配的数据库处理该数据读取请求,以实现不同类型数据库之间的自动访问,有利于避免对人工经验的依赖。而且,在候选数据库集合中,在一定程度上有利于选择出可以快速响应该数据读取请求的目标数据库,从而可以提高数据请求的效率。
另外,所述在所述候选数据库集合中确定目标数据库,包括:获取所述候选数据库集合的优先级;其中,所述候选数据库集合的优先级为所述候选数据库集合中的各候选数据库的优先级,所述优先级用于表征所述各候选数据库对属于所述请求类型的请求的处理效率;根据所述优先级从所述候选数据库集合中确定目标数据库。由于优先级用于表征请求类型对应的候选数据库集合中的各候选数据库对属于该请求类型的请求的处理效率,因此,根据优先级有利于合理的确定出处理效率高的数据库作为目标数据库。将数据读取请求发送至基于优先级确定的目标数据库,使得目标数据库可以快速响应该数据读取请求,实现对该数据读取请求所请求的数据的快速返回,有利于提高数据请求的效率。
另外,所述中间件中缓存有不同请求类型对应的候选数据库集合的优先级;所述获取所述候选数据库集合的优先级,包括:从缓存的所述不同请求类型对应的候选数据库集合的优先级中,选择所述数据读取请求的请求类型对应的候选数据库集合的优先级。直接从缓存的不同请求类型对应的候选数据库集合的优先级中,选择出数据读取请求的请求类型对应的候选数据库集合的优先级,提高了优先级的确定速度,有利于进一步提高对该数据读取请求所请求的数据的快速返回。
另外,所述中间件中缓存的不同请求类型对应的候选数据库集合的优先级,通过以下方式确定:获取所述不同请求类型对应的候选数据库集合中各候选数据库的特征数据;其中,所述特征数据至少包括以下之一:数据量、请求连接数、对属于所述不同请求类型的请求的响应时长;根据所述特征数据,确定所述不同请求类型对应的候选数据库集合的优先级。提供了一种优先级的确定方式,通过响应时长、数据量、请求连接数等特征数据,有利于合理的衡量各候选数据库的处理效率,从而合理的确定候选数据库集合的优先级。
另外,所述对属于所述不同请求类型的请求的响应时长,通过以下方式获取:根据预设的抽样率对接收的请求进行抽样,得到抽样请求;将所述抽样请求发送至所述抽样请求的请求类型对应的候选数据库集合中的各候选数据库;获取所述抽样请求的请求类型对应的候选数据库集合中的各候选数据库对所述抽样请求的响应时长,并将获取的响应时长,作为与所述抽样请求属于相同请求类型的请求的响应时长。提供了一种响应时长的获取方式,将通过抽样得到的抽样请求发送至各候选数据库,方便了对各候选数据库对抽样请求的响应时长的统计,而且由于抽样请求是根据据预设的抽样率对接收的请求进行抽样得到,即只有确定当前请求为抽样请求才将该抽样请求发送至各候选数据库,有利于在获取响应时长的同时尽量不影响各候选数据库的正常处理效率。
另外,在所述接收数据请求之后,还包括:若所述数据请求为数据写入请求,则解析所述数据写入请求,并根据解析结果确定所要写入的数据对应的数据库类型;确定与所述数据库类型对应的首选数据库;若所述首选数据库的使用状态为不可用状态,则在与所述中间件连接的若干个数据库中选择备选数据库;其中,所述使用状态包括可用状态和不可用状态;将所述所要写入的数据写入所述备选数据库。提供了一种支持异构数据库互为主备的功能,使得即使首选数据库为不可用状态,也可以通过选择出的备选数据库完成写入数据的操作。
另外,所述在与所述中间件连接的若干个数据库中选择备选数据库,包括:获取所述若干个数据库的操作日志和所述操作日志对应的时间戳;根据所述操作日志和所述时间戳,选择具有最新数据的数据库作为备选数据库。通过将具有最新数据的数据库作为备选数据库,使得备选数据库中能够连续的记录最新的数据,有利于避免数据丢失。
另外,在所述将所述所要写入的数据写入所述备选数据库之后,还包括:根据预设的同步规则,确定与所述备选数据库进行数据同步的同步数据库;将所述所要写入的数据同步至所述同步数据库。通过将所要写入的数据同步至所述同步数据库,使得一旦请求备选数据库的操作出错时,可以通过同步数据库恢复数据,避免对数据请求的影响。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定。
图1是根据本发明第一实施方式中的数据库访问方法的流程图;
图2是根据本发明第一实施方式中的中间件的架构示意图;
图3是根据本发明第二实施方式中的数据库访问方法的流程图;
图4是根据本发明第二实施方式中的中间件的架构示意图;
图5是根据本发明第三实施方式中的中间件的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
本发明的第一实施方式涉及一种数据库访问方法,应用于中间件,应用系统通过中间件访问中间件连接的各数据库;其中,中间件连接的多个数据库可以为异构数据库,比如:关系型数据库(例如:mysql,oracle)、大数据存储数据库(例如:Elastic Search)和非结构化存储数据库(例如:HDFS)等。本实施方式中,中间件可以根据应用系统发出的数据请求,自动选择适配的数据库来处理数据请求。下面对本实施方式的数据库访问方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。
本实施方式中的数据库访问方法的流程图如图1所示,具体包括:
步骤101:接收数据请求。
具体的说,数据请求来自于应用系统,中间件可以与应用系统连接,从而接收来自应用系统的数据请求。其中,接收的数据请求可以为结构化查询语言(Structured QueryLanguage,简称:SQL语句),SQL语句是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理数据库。在具体实现中,数据请求可以为数据读取请求或是数据写入/更新请求,由于数据写入/更新请求在从本质上说都是表示要在数据库中写入数据,因此,下文将写入/更新统称为写入。
步骤102:若数据请求为数据读取请求,则确定数据读取请求的请求类型。
具体的说,可以通过对数据请求进行语义解析,得到该数据请求对应的关键字,根据解析得到的关键字,确定数据请求为数据读取请求还是数据写入请求。若确定数据请求为数据读取请求,则再根据解析得到的关键字确定数据读取请求的请求类型。其中,解析得到关键字,例如可包括表名、库名、请求类型以及其他相关信息。数据读取请求的请求类型可以分为:单表查询、关联查询、嵌套查询等不同的查询分类。
在具体实现中,可以通过使用Druid组件对数据请求即SQL语句进行语义解析,获取SQL语句中的关键字(表名、库名、其他相关信息),并根据关键字确定请求类型即SQL分类(单表查询、关联查询、嵌套查询等不同的查询分类)。
步骤103:获取数据读取请求的请求类型对应的候选数据库集合。
在一个例子中,候选数据库集合的确定方式可以如下:首先,基于对数据请求进行语义解析得到的关键字,确定要读取的数据所存储的数据库;其中,若预先配置有路由规则,则还可以结合路由规则确定要读取的数据存储的数据库。然后,根据要读取的数据所存储的数据库的使用状态,滤除掉使用状态为不可用的数据库;其中,使用状态为不可用的数据库可以理解为该数据库出现故障无法返回数据。接着,将滤除后的数据库作为候选数据库。在具体实现中,还可以进一步根据滤除后的数据库的操作时间戳判断数据库是否具有最新数据,将具有最新数据的数据库作为候选数据库,最终得到的多个候选数据库组成候选数据库集合。
在另一个例子中,中间件中可以预存请求类型与候选数据库集合的对应关系,从而可以直接根据预存的对应关系获取数据读取请求的请求类型对应的候选数据库集合。在具体实现中,候选数据库集合中包括至少两个候选数据库。不同的请求类型对应的候选数据库集合可以相同或者部分相同,也可以完全不同,本实施方式对此不做限定。
步骤104:在候选数据库集合中确定目标数据库,将数据读取请求发送至目标数据库,由目标数据库响应数据读取请求。
在一个例子中,可以根据候选数据库集合中的各候选数据库的当前数据量和当前请求连接数,确定目标数据库。比如,可以将各候选数据库中当前数据量和当前请求连接数最小的候选数据库确定为目标数据库。
在另一个例子中,可以先获取候选数据库集合的优先级,然后根据所述优先级从候选数据库集合中确定目标数据库。其中,候选数据库集合的优先级为候选数据库集合中的各候选数据库的优先级,优先级用于表征各候选数据库对属于数据读取请求的请求类型的请求的处理效率。比如优先级越高,表明处理效率越高,数据读取请求的请求类型对应的候选数据库集合中的各候选数据库中具有数据读取请求所要读取的数据。在具体实现中,不同的请求类型可以均具有各自对应的候选数据库集合,以及候选数据库集合的优先级。比如,单表查询具有单表查询对应的候选数据库集合的优先级,关联查询具有关联查询对应的候选数据库集合的优先级。
在一个例子中,优先级的获取方式可以为:中间件中可以缓存有不同请求类型对应的候选数据库集合的优先级,中间件可以从缓存的不同请求类型对应的候选数据库集合的优先级中,选择数据读取请求的请求类型对应的候选数据库集合的优先级。直接从缓存的不同请求类型对应的候选数据库集合的优先级中,选择出数据读取请求的请求类型对应的候选数据库集合的优先级,提高了优先级的确定速度,有利于进一步提高对该数据读取请求所请求的数据的快速返回。
在一个例子中,中间件中缓存的不同请求类型对应的候选数据库集合的优先级,可以通过以下方式确定:
首先,获取不同请求类型对应的候选数据库集合中各候选数据库的特征数据;其中,特征数据至少包括以下之一:数据量、请求连接数、对属于不同请求类型的请求的响应时长。响应时长可以理解为:在预设时间段内各候选数据库对属于同一请求类型的请求的平均查询消耗时长,比如,在预设时间段内各候选数据库对单表查询类的请求的平均查询消耗时长、对关联查询类的请求的平均查询消耗时长,其中预设时长可以根据实际需要进行设置,本实施方式对此不做限定。数据量可以理解为:候选数据库中已经存储的数据量,请求连接数可以理解为:候选数据库在处理的数据请求的个数,可以用1秒内有多少个请求连接数衡量。在具体实现中,数据量和请求连接数可以为在需要缓存优先级的时刻获取的数据量和请求连接数。
然后,根据特征数据,确定不同请求类型对应的候选数据库集合的优先级。比如,根据预设的加权系数对响应时长、数据量、请求连接数进行加权处理得到不同请求类型对应的候选数据库集合中的各候选数据库的优先级,作为该候选数据库集合的优先级;其中,预设的加权系数可以根据实际需要进行设置,本实施方式对此不做限定。
在一个例子中,对属于不同请求类型的请求的响应时长,可以通过以下方式获取:
首先,根据预设的抽样率对接收的请求进行抽样,得到抽样请求。其中,抽样率可以根据实际需要进行设置,比如对于接收的10条数据请求中,将其中3条抽样出来作为抽样请求。可以理解的是,由于是对属于不同请求类型的请求进行抽样,则可以对接收的请求进行分类,对属于同一请求类型的请求进行抽样,比如对于接收的10条嵌套查询类的数据请求中,将其中3条抽样出来作为嵌套查询类的抽样请求。在具体实现中,对于不属于抽样请求的请求,可以获取缓存的该请求的请求类型对应的候选数据库的优先级,基于该优先级选择一个目标数据库请求数据。另外考虑到初次时,中间件是未保存候选数据库的优先级,因此,初次时可以基于候选数据库的处理压力,选择处理压力小的数据库请求数据,并可以记录下该数据库的响应时长供后续进行优先级排序。
接着,将抽样请求发送至抽样请求的请求类型对应的候选数据库集合中的各候选数据库,由各候选数据库对接收的抽样请求进行处理,各候选数据库在处理完成后向中间件返回处理结果。比如,抽样请求的请求类型为单表查询,则将抽象请求发送至单表查询对应的候选数据库集合中的各候选数据库,抽样请求的请求类型为关联查询,则将抽象请求发送至关联查询对应的候选数据库集合中的各候选数据库。
然后,获取抽样请求的请求类型对应的候选数据库集合中的各候选数据库对抽样请求的响应时长,并将获取的响应时长,作为与抽样请求属于相同请求类型的请求的响应时长。比如,中间件可以根据发送抽样请求的时间点和接收到各候选数据库返回的处理结果的时间点,确定各候选数据库对抽样请求的响应时长。可以理解的是,抽样请求的数量通常大于1,因此,候选数据库对抽样请求的响应时长可以为候选数据库对多条抽样请求的平均响应时长。
在另一个例子中,优先级的获取方式可以为:获取数据读取请求的请求类型对应的候选数据库的当前数据量和当前请求连接数,根据当前数据量和当前请求连接数实时获取候选数据库的优先级。
在一个例子中,根据优先级从候选数据库集合中确定目标数据库的方式可以为:可以根据候选数据库集合的优先级,在候选数据库集合中优先级较高的几个候选数据库中任选一个作为目标数据库,也可以选择优先级最高的一个候选数据库作为目标数据库。在具体实现中,若优先级是通过中间件中缓存的数据获取,则还可以结合候选数据库当前的资源占用情况,确定目标数据库。也就是说,结合候选数据库的优先级和候选数据库当前的资源占用情况确定目标数据库,有利于结合历史数据和当前数据,从而选择出具有更高处理效率的目标数据库,有利于进一步提高数据请求的效率。
在确定了目标数据库后,可以通过数据库连接池建立中间件与目标数据库的连接,根据数据库连接池建立的连接,将数据读取请求发送至目标数据库,由目标数据库对数据读取请求进行处理,并向中间件返回处理结果,中间件再将处理结果返回至应用系统,从而实现应用系统基于发送的数据读取请求得到处理结果。
为方便理解,通过下图2对本实施方式中接收到数据读取请求后的处理流程进行举例说明:
图2中,中间件200包括:SQL语义解析器201、数据库选择器202、抽样统计器203、监控器204。
SQL语义解析器201,用于对接收的数据读取请求即SQL语句进行解析,获取得到SQL语句中的关键字(表名、库名、其他相关信息),并根据关键字确定数据读取请求的请求类型即SQL分类,SQL分类包括单表查询、关联查询、嵌套查询等不同的查询分类。
数据库选择器202,用户根据SQL分类和监控器204中存储的不同SQL分类对应的候选数据库的优先级,选择合适的数据库处理接收的数据读取请求即SQL语句。其中,初次时,监控器204中是未保存候选数据库的优先级的,可以在候选数据库中选择处理压力小的数据库处理SQL语句,并记录该数据库的处理时长存储于监控器中。
抽样统计器203,用于通过配置的抽样率,对需要抽样的SQL语句,执行查询消耗时长的记录以及候选数据库中数据量的统计,并将记录的查询时长和候选数据库中数据量交给监控器204进行统计和计算。
监控器204,用于统计候选数据库的请求数量,将统计候选数据库的请求数量和抽样统计得到的数据进行加权得到候选数据库的优先级,即将候选数据库中的各个数据库按照处理效率的高低进行排序。
在一个例子中,监控器204记录的数据可以如下表1所示,
表1
数据库 | 平均查询消耗时长 | SQL分类 | 数据量 | 请求数 |
MYSQL | 83毫秒 | 单表查询 | 100万 | 50/s |
MYSQL | 97毫秒 | 单表查询 | 200万 | 100/s |
MYSQL | 132毫秒 | 关联查询 | 200万 | 150/s |
MYSQL | 356毫秒 | 关联查询 | 400万 | 200/s |
ES | 144毫秒 | 关联查询 | 400万 | 200/s |
可以理解的是,对于同类SQL语句,数据量、请求数、平均查询消耗时长越小的数据库优先级越高。后续在进行同类SQL语句查询时,可以利用优先级较高的数据库进行查询。
需要说明的是,本实施方式中的上述各示例均为为方便理解进行的举例说明,并不对本发明的技术方案构成限定。
与现有技术相比,本实施方式,对于接收到的数据读取请求,确定数据读取请求的请求类型,获取数据读取请求的请求类型对应的候选数据库集合,从而可以在候选数据库集合中确定目标数据库,并将数据读取请求发送至目标数据库由目标数据库响应。即本发明实施方式中可以根据数据读取请求的请求类型,选择与该请求类型适配的数据库处理该数据读取请求,以实现不同类型数据库之间的自动访问,有利于避免对人工经验的依赖。而且,在候选数据库集合中,在一定程度上有利于选择出可以快速响应该数据读取请求的目标数据库,从而可以提高数据请求的效率。
本发明的第二实施方式涉及一种数据库访问方法。下面对本实施方式的数据库访问方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。
本实施方式中的数据库访问方法的流程图如图3所示,具体包括:
步骤301:接收数据请求。
其中,步骤301与第一实施方式中步骤101大致相同,为避免重复,此处不再赘述。
步骤302:若数据请求为数据写入请求,则解析数据写入请求,并根据解析结果确定所要写入的数据对应的数据库类型。
具体的说,可以通过对数据请求进行语义解析,得到该数据请求对应的关键字,根据解析得到的关键字确定数据请求是否为数据写入请求。需要说明的是,由于数据写入/更新请求在从本质上说都是表示要在数据库中写入数据,因此,本实施方式中将写入/更新统称为写入。
其中,数据库类型可以包括:关系型、大数据存储型和非结构化存储型等。在具体实现中,不同的应用系统通常设置有默认的数据库类型,可以通过对数据写入请求的解析,确定发送该数据写入请求的应用系统,将发送该数据写入请求的应用系统设置的默认的数据库类型,确定为所要写入的数据对应的数据库类型。可以理解的是,通过对数据写入请求的解析也可以确定所要写入的数据。
步骤303:确定与数据库类型对应的首选数据库。
具体的说,与数据库类型对应的首选数据库可以理解为:发送数据写入请求的应用系统原始使用的数据库,该原始使用的数据库通常为应用系统预先配置的数据库。
步骤304:若首选数据库的使用状态为不可用状态,则在与中间件连接的若干个数据库中选择备选数据库。
其中,上述使用状态包括可用状态和不可用状态。首选数据库为可用状态可以理解为首选数据库可以正常工作,能够正常写入和读取数据,反之首选数据库为不可用状态可以理解为首选数据库不可以正常工作出现故障,不能够正常写入和读取数据。
在一个例子中,可以获取与中间件连接的若干个数据库的操作日志和操作日志对应的时间戳,根据操作日志和时间戳,选择具有最新数据的数据库作为备选数据库。可以理解的是,在具体实现中,如果配置了路由规则进行了分库分表,在接收到数据写入请求时中间件会根据路由规则确定数据要写入的数据库,然后通过数据库连接池操作该数据库,操作成功后可以记录对该数据库的操作日志和时间戳(lastModify)作为判断数据库是否具备最新数据的依据。
在另一个例子中,如果与中间件连接的若干个数据库均没有操作日志和时间戳,则可以将与中间件连接的若干个数据库都作为备选数据库,或者选择处理压力小的数据库作为备选数据库。
步骤305:将所要写入的数据写入备选数据库。
也就是说,若首选数据库的使用状态为可用状态,则将所要写入的数据写入首选数据库,若首选数据库的使用状态为不可用状态,则将所要写入的数据写入备选数据库。
在具体实现中,在执行完步骤305后,还可以根据预设的同步规则,确定与备选数据库进行数据同步的同步数据库,将所要写入的数据同步至同步数据库。其中,预设的同步规则可以根据实际需要进行设置,用来选择哪些数据库来同步数据。通常同步数据库的数量为多个,因此在将所要写入的数据同步至同步数据库时可以将所要写入的数据异步写入多个同步数据库中,以提高写入速度。在具体实现中,为节省数据库的存储资源,可以控制选择的与备选数据库进行数据同步的同步数据库的数量,使其数量不至于过多,避免过多的数据库存储相同的内容。
在一个例子中,还可以定时对备选数据库和同步数据库中的数据进行对比,若存在差异,则重新进行同步操作,确保备选数据库和同步数据库中的数据相同。还可以在对比完成后对同步数据库进行标记,该标记用于表明同步数据库与备选数据库中的数据是否存在差异,使得在数据库操作进行异常时可以选择标记有不存在差异的数据库进行操作。
可以理解的是,若将所要写入的数据写入首选数据库,则可以根据预设的同步规则,确定与首选数据库进行数据同步的同步数据库,将所要写入的数据同步至同步数据库。上述的定时对比也可以应用在首选数据库与同步数据库之间,为避免重复此处不再赘述。
在一个例子中,本实施方式中的数据库访问方法的架构图可以如图4所示,中间件400用于连接应用系统和不同类型的数据库:
应用通讯组件401,可以通过Java NIO实现应用系统和中间件400的通讯,接收来自应用系统的数据请求。数据通讯实现可以依据SQL92标准(数据传输采用SQL92标准,也可以为其他SQL标准)。再基于监控管理模块407中对该数据请求对应的Application租户所配置的数据请求连接数量,对数据请求对应Application租户的连接资源进行管控。其中,一个Application租户可以理解为一个应用系统,即一个应用程序的后台服务器。例如,监控管理模块407监控到,某一Application租户配置的最大允许连接数量为10,当连接请求发起时候,确定当前请求数超过配置连接数,则会根据配置直接拒绝该Application租户的第11个请求。
SQL解析组件402,可以通过使用Druid组件进行SQL解析,解析结果的输出为关键字,例如可包括表名、库名、SQL分类以及其他相关字段。
SQL路由组件403,可以根据SQL解析组件402输出的关键字进行数据的写入和读取处理,即上述数据读取请求和数据写入请求的处理。
数据同步组件404,在写入或更新数据时,根据预设的同步规则,将数据异步写入对应的用于同步数据的数据库,记录操作SQL作为日志。当数据库操作出错时,通过记录的日志来进行redo操作保证数据完整一致性,操作完成后记录时间戳。
数据库连接池405,用于统一管理和释放数据库连接,提高对数据库操作的性能。
日志和备份模块406,用于记录数据库的操作日志,当数据库操作异常时,进行redo操作,根据配置启动定时任务进行数据库备份指令作为快照,快照是一种便捷高效的数据容灾手段,常用于数据备份、制作自定义镜像、应用容灾等。还可以根据定时任务,定时对需要同步数据的多个数据库进行数据差异对比,如果有数据差异,则进行数据同步操作。在具体实现中,还可以定时记录中间件连接的各数据库的使用状态,包含Table的数据量,活动连接数等。
管理监控模块407,用于提供中间件的各种配置和监控,通过JMX和Manager系统进行通讯和实时操作。提供数据库新增、修改、移除,增加数据库状态监控。如果修改了分片规则,中间件将通过数据同步组件404将备份数据自动按修改后的分片规则进行数据分片存放。管理监控模块407还提供进行数据定义语言(data definition language,简称:DDL)的操作接口。
Manager模块408,提供页面用于管理中间件功能系统。
在具体实现中,中间件结合其他组件可以集群化以实现中间件的高可用且提升性能。上述中间件可以满足不同场景业务需求,自动选择最合理的数据库获取数据,提高数据返回的效率,提高应用系统的性能和可用性。而且,通过中间件日志和备份管理实现了异构数据库互为主(首选数据库)备(备选数据库)的功能。
与现有技术相比,本实施方式中提供了一种支持异构数据库互为主备的功能,使得即使首选数据库为不可用状态,也可以通过选择出的备选数据库完成写入数据的操作。通过将所要写入的数据同步至所述同步数据库,使得一旦请求备选数据库的操作出错时,可以通过同步数据库恢复数据,避免对数据请求的影响。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明第三实施方式涉及一种中间件,如图5所示,包括:应用通讯组件501,用于接收数据请求;解析组件502,用于解析所述数据请求,并在解析出所述数据请求为数据读取请求时,确定所述数据读取请求的请求类型;数据库选择器503,用于获取所述数据读取请求的请求类型对应的候选数据库集合,并在所述候选数据库集合中确定目标数据库;数据库连接池504,用于根据所述优先级从所述候选数据库中确定目标数据库,并将所述数据读取请求发送至所述目标数据库,由所述目标数据库响应所述数据读取请求。
不难发现,本实施方式为与第一或二实施方式相对应的装置实施例,本实施方式可与第一或二实施方式互相配合实施。第一或二实施方式中提到的相关技术细节和技术效果在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一或二实施方式中。
值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
本发明第四实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (10)
1.一种数据库访问方法,其特征在于,应用于中间件,包括:
接收数据请求;
若所述数据请求为数据读取请求,则确定所述数据读取请求的请求类型;
获取所述数据读取请求的请求类型对应的候选数据库集合;
在所述候选数据库集合中确定目标数据库,并将所述数据读取请求发送至所述目标数据库,由所述目标数据库响应所述数据读取请求。
2.根据权利要求1所述的数据库访问方法,其特征在于,所述在所述候选数据库集合中确定目标数据库,包括:
获取所述候选数据库集合的优先级;其中,所述候选数据库集合的优先级为所述候选数据库集合中的各候选数据库的优先级,所述优先级用于表征所述各候选数据库对属于所述请求类型的请求的处理效率;
根据所述优先级从所述候选数据库集合中确定目标数据库。
3.根据权利要求2所述的数据库访问方法,其特征在于,所述中间件中缓存有不同请求类型对应的候选数据库集合的优先级;所述获取所述候选数据库集合的优先级,包括:
从缓存的所述不同请求类型对应的候选数据库集合的优先级中,选择所述数据读取请求的请求类型对应的候选数据库集合的优先级。
4.根据权利要求3所述的数据库访问方法,其特征在于,所述中间件中缓存的不同请求类型对应的候选数据库集合的优先级,通过以下方式确定:
获取所述不同请求类型对应的候选数据库集合中各候选数据库的特征数据;其中,所述特征数据至少包括以下之一:数据量、请求连接数、对属于所述不同请求类型的请求的响应时长;
根据所述特征数据,确定所述不同请求类型对应的候选数据库集合的优先级。
5.根据权利要求4所述的数据库访问方法,其特征在于,所述对属于所述不同请求类型的请求的响应时长,通过以下方式获取:
根据预设的抽样率对接收的请求进行抽样,得到抽样请求;
将所述抽样请求发送至所述抽样请求的请求类型对应的候选数据库集合中的各候选数据库;
获取所述抽样请求的请求类型对应的候选数据库集合中的各候选数据库对所述抽样请求的响应时长,并将获取的响应时长,作为与所述抽样请求属于相同请求类型的请求的响应时长。
6.根据权利要求1所述的数据库访问方法,其特征在于,在所述接收数据请求之后,还包括:
若所述数据请求为数据写入请求,则解析所述数据写入请求,并根据解析结果确定所要写入的数据对应的数据库类型;
确定与所述数据库类型对应的首选数据库;
若所述首选数据库的使用状态为不可用状态,则在与所述中间件连接的若干个数据库中选择备选数据库;其中,所述使用状态包括可用状态和不可用状态;
将所述所要写入的数据写入所述备选数据库。
7.根据权利要求6所述的数据库访问方法,其特征在于,所述在与所述中间件连接的若干个数据库中选择备选数据库,包括:
获取所述若干个数据库的操作日志和所述操作日志对应的时间戳;
根据所述操作日志和所述时间戳,选择具有最新数据的数据库作为备选数据库。
8.根据权利要求5所述的数据库访问方法,其特征在于,在所述将所述所要写入的数据写入所述备选数据库之后,还包括:
根据预设的同步规则,确定与所述备选数据库进行数据同步的同步数据库;
将所述所要写入的数据同步至所述同步数据库。
9.一种中间件,其特征在于,包括:
应用通讯组件,用于接收数据请求;
解析组件,用于解析所述数据请求,并在解析出所述数据请求为数据读取请求时,确定所述数据读取请求的请求类型;
数据库选择器,用于获取所述数据读取请求的请求类型对应的候选数据库集合,并在所述候选数据库集合中确定目标数据库;
数据库连接池,用于将所述数据读取请求发送至所述目标数据库,由所述目标数据库响应所述数据读取请求。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的数据库访问方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010273142.0A CN111522870B (zh) | 2020-04-09 | 2020-04-09 | 数据库访问方法、中间件和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010273142.0A CN111522870B (zh) | 2020-04-09 | 2020-04-09 | 数据库访问方法、中间件和可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111522870A true CN111522870A (zh) | 2020-08-11 |
CN111522870B CN111522870B (zh) | 2023-12-08 |
Family
ID=71901379
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010273142.0A Active CN111522870B (zh) | 2020-04-09 | 2020-04-09 | 数据库访问方法、中间件和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111522870B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112905709A (zh) * | 2021-03-31 | 2021-06-04 | 中国工商银行股份有限公司 | 一种Druid数据库数据查询方法、装置和计算机设备 |
CN113254421A (zh) * | 2021-05-31 | 2021-08-13 | 重庆富民银行股份有限公司 | 基于数据库双写的跨库账户迁移方法 |
CN113377784A (zh) * | 2021-08-13 | 2021-09-10 | 成都市维思凡科技有限公司 | 一种基于中间件的数据处理方法、系统和存储介质 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002247315A (ja) * | 2001-02-13 | 2002-08-30 | Fuji Xerox Co Ltd | データ蓄積装置及び画像記録装置 |
US20040215626A1 (en) * | 2003-04-09 | 2004-10-28 | International Business Machines Corporation | Method, system, and program for improving performance of database queries |
KR20080010568A (ko) * | 2006-07-27 | 2008-01-31 | 박영호 | 셀프-클린칭 타입 파스너 및 그 제조방법 |
WO2009018644A1 (en) * | 2007-08-07 | 2009-02-12 | Breken Technologies Group | Community database optimization, management and maintenance |
CN103577407A (zh) * | 2012-07-19 | 2014-02-12 | 国际商业机器公司 | 用于分布式数据库的查询方法及查询装置 |
CN106126600A (zh) * | 2016-06-21 | 2016-11-16 | 浪潮电子信息产业股份有限公司 | 一种执行读写分离的方法、装置及系统 |
CN106815218A (zh) * | 2015-11-27 | 2017-06-09 | 华为技术有限公司 | 数据库访问方法、装置和数据库系统 |
CN107273506A (zh) * | 2017-06-19 | 2017-10-20 | 西安电子科技大学 | 一种数据库多表联合查询的方法 |
CN108009239A (zh) * | 2017-11-29 | 2018-05-08 | 杭州有赞科技有限公司 | 数据库访问方法及系统 |
CN108897658A (zh) * | 2018-05-31 | 2018-11-27 | 康键信息技术(深圳)有限公司 | 主数据库监控方法、装置、计算机设备和存储介质 |
CN109344157A (zh) * | 2018-09-20 | 2019-02-15 | 深圳市牛鼎丰科技有限公司 | 读写分离方法、装置、计算机设备及存储介质 |
CN110198327A (zh) * | 2018-03-05 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种数据传输方法及相关设备 |
CN110362625A (zh) * | 2019-05-30 | 2019-10-22 | 杭州数梦工场科技有限公司 | 数据库读写分离方法、装置、电子设备及存储介质 |
-
2020
- 2020-04-09 CN CN202010273142.0A patent/CN111522870B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002247315A (ja) * | 2001-02-13 | 2002-08-30 | Fuji Xerox Co Ltd | データ蓄積装置及び画像記録装置 |
US20040215626A1 (en) * | 2003-04-09 | 2004-10-28 | International Business Machines Corporation | Method, system, and program for improving performance of database queries |
KR20080010568A (ko) * | 2006-07-27 | 2008-01-31 | 박영호 | 셀프-클린칭 타입 파스너 및 그 제조방법 |
WO2009018644A1 (en) * | 2007-08-07 | 2009-02-12 | Breken Technologies Group | Community database optimization, management and maintenance |
CN103577407A (zh) * | 2012-07-19 | 2014-02-12 | 国际商业机器公司 | 用于分布式数据库的查询方法及查询装置 |
CN106815218A (zh) * | 2015-11-27 | 2017-06-09 | 华为技术有限公司 | 数据库访问方法、装置和数据库系统 |
CN106126600A (zh) * | 2016-06-21 | 2016-11-16 | 浪潮电子信息产业股份有限公司 | 一种执行读写分离的方法、装置及系统 |
CN107273506A (zh) * | 2017-06-19 | 2017-10-20 | 西安电子科技大学 | 一种数据库多表联合查询的方法 |
CN108009239A (zh) * | 2017-11-29 | 2018-05-08 | 杭州有赞科技有限公司 | 数据库访问方法及系统 |
CN110198327A (zh) * | 2018-03-05 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种数据传输方法及相关设备 |
CN108897658A (zh) * | 2018-05-31 | 2018-11-27 | 康键信息技术(深圳)有限公司 | 主数据库监控方法、装置、计算机设备和存储介质 |
CN109344157A (zh) * | 2018-09-20 | 2019-02-15 | 深圳市牛鼎丰科技有限公司 | 读写分离方法、装置、计算机设备及存储介质 |
CN110362625A (zh) * | 2019-05-30 | 2019-10-22 | 杭州数梦工场科技有限公司 | 数据库读写分离方法、装置、电子设备及存储介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112905709A (zh) * | 2021-03-31 | 2021-06-04 | 中国工商银行股份有限公司 | 一种Druid数据库数据查询方法、装置和计算机设备 |
CN113254421A (zh) * | 2021-05-31 | 2021-08-13 | 重庆富民银行股份有限公司 | 基于数据库双写的跨库账户迁移方法 |
CN113254421B (zh) * | 2021-05-31 | 2023-07-14 | 重庆富民银行股份有限公司 | 基于数据库双写的跨库账户迁移方法 |
CN113377784A (zh) * | 2021-08-13 | 2021-09-10 | 成都市维思凡科技有限公司 | 一种基于中间件的数据处理方法、系统和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111522870B (zh) | 2023-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111522870B (zh) | 数据库访问方法、中间件和可读存储介质 | |
US7721288B2 (en) | Organizing transmission of repository data | |
CN109710388B (zh) | 数据读取方法、装置、电子设备以及存储介质 | |
US9235590B1 (en) | Selective data compression in a database system | |
US20100153431A1 (en) | Alert triggered statistics collections | |
CN111159252A (zh) | 事务执行方法、装置、计算机设备及存储介质 | |
CN111881011A (zh) | 日志管理方法、平台、服务器及存储介质 | |
CN111414403B (zh) | 数据访问方法和装置、数据存储方法和装置 | |
CN112084161B (zh) | 基于数据库的数据处理方法、装置以及可读存储介质 | |
CN111581234B (zh) | Rac多节点数据库查询方法、装置及系统 | |
CN108228322B (zh) | 一种分布式链路跟踪、分析方法及服务器、全局调度器 | |
CN114356921A (zh) | 数据处理方法、装置、服务器及存储介质 | |
CN113111036A (zh) | 一种基于hdfs的小文件处理方法、装置、介质及电子设备 | |
CN111314158B (zh) | 大数据平台监控方法、装置及设备、介质 | |
CN114090580A (zh) | 数据处理方法、装置、设备、存储介质及产品 | |
CN112084206A (zh) | 数据库的事务请求处理方法、相关设备及存储介质 | |
CN113760640A (zh) | 监控日志处理方法、装置、设备及存储介质 | |
CN114116762A (zh) | 一种离线数据模糊搜索方法、装置、设备和介质 | |
CN108228432A (zh) | 一种分布式链路跟踪、分析方法及服务器、全局调度器 | |
CN115080666A (zh) | 数据同步方法、系统、电子设备及存储介质 | |
CN114328749A (zh) | 业务数据处理方法及其装置、计算机可读存储介质 | |
CN107590199B (zh) | 一种面向内存的多线程数据库设计方法 | |
CN112711606A (zh) | 数据库访问方法、装置、计算机设备和存储介质 | |
CN117743459A (zh) | 增量数据的同步方法、装置、系统、电子设备及可读介质 | |
CN115114012B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |