CN107451202B - 一种数据访问方法及设备 - Google Patents
一种数据访问方法及设备 Download PDFInfo
- Publication number
- CN107451202B CN107451202B CN201710548205.7A CN201710548205A CN107451202B CN 107451202 B CN107451202 B CN 107451202B CN 201710548205 A CN201710548205 A CN 201710548205A CN 107451202 B CN107451202 B CN 107451202B
- Authority
- CN
- China
- Prior art keywords
- data
- database
- access
- databases
- routing
- 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
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/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
-
- 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/22—Indexing; Data structures therefor; Storage structures
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据访问方法及设备,用于提高数据访问的成功率。其中的数据访问方法包括:接收终端发送的数据访问请求;其中,所述数据访问请求用于请求访问第一数据,所述第一数据分割成的多个分片分散存储在多个主数据库,所述多个主数据库对应多个备份数据库,所述备份数据库用于对所述主数据库的数据进行备份;根据所述数据访问请求计算路由结果;其中,所述路由结果用于指示存储所述第一数据所包括的多个分片的至少一个主数据库,及至少一个备份数据库;在根据所述路由结果访问所述至少一个主数据库中的部分或全部数据库失败时,访问所述至少一个备份数据库中与访问失败的主数据库对应的备份数据库,获得所述第一数据。
Description
技术领域
本发明涉及数据库技术领域,特别涉及一种数据访问方法及设备。
背景技术
随着计算机和网络应用的日益广泛以及不同领域的业务种类的日益丰富,网络应用系统的数据量越来越大,数据的种类也越来越多,网络应用系统对数据的访问也越来越频繁。
由于数据库的数据经常被用于备份或数据统计等操作,那么就无法保证数据库在任何时刻都是可以提供服务的,例如,在数据库发生故障,网络发生故障,系统发生故障,例如磁盘满等的情况下,数据库就无法提供服务,那么终端就无法成功访问第一数据,从而导致数据访问的成功率较低。
发明内容
本发明实施例提供一种数据访问方法及设备,用于提高数据访问的成功率。
第一方面,本发明一实施例提供了一种数据访问方法,所述数据访问方法包括:
接收终端发送的数据访问请求;其中,所述数据访问请求用于请求访问第一数据,所述第一数据分割成的多个分片分散存储在多个数据库,所述多个主数据库对应多个备份数据库,所述备份数据库用于对所述主数据库的数据进行备份;
根据所述数据访问请求计算路由结果;其中,所述路由结果用于指示存储所述第一数据所包括的多个分片的至少一个主数据库,及至少一个备份数据库;
在根据所述路由结果访问所述至少一个主数据库中的部分或全部数据库失败时,访问所述至少一个备份数据库中与访问失败的主数据库对应的备份数据库,获得所述第一数据。
可选的,还包括:
在根据所述路由结果访问所述至少一个主数据库中的部分或全部数据库失败时,将访问失败的主数据库上报给其他设备,以维护所述访问失败的主数据库。
可选的,根据所述数据访问请求计算路由结果,包括:
将所述数据访问请求携带的请求访问参数输入设定的第三方程序,并接收所述第三方程序输出的路由结果;其中,所述第三方程序通过运行脚本文件的方式实现。
可选的,所述第三方程序是根据分片规则进行编辑的程序;其中,所述分片规则为所述第一数据分割成多个分片所依据的规则。
可选的,在根据所述路由结果访问所述至少一个主数据库中的部分或全部数据库之前,还包括:
检测所述至少一个主数据库中的每个数据库是否有效,对有效的数据库进行访问。
可选的,检测所述至少一个数据库中的每个数据库是否有效,包括:
检测所述路由结果中包括的至少一个主数据库中的每个数据库是否有效;
或,
周期性地检测所述多个数据库中的每个数据库是否有效。
第二方面,本发明一实施例提供了一种数据访问设备,所述数据访问设备包括:
接收模块,用于接收终端发送的数据访问请求;其中,所述数据访问请求用于请求访问第一数据,所述第一数据分割成的多个分片分散存储在多个主数据库,所述多个主数据库对应多个备份数据库,所述备份数据库用于对所述主数据库的数据进行备份;
计算模块,用于根据所述数据访问请求计算路由结果;其中,所述路由结果用于指示存储所述第一数据所包括的多个分片的至少一个主数据库,及至少一个备份数据库;
访问模块,用于在根据所述路由结果访问所述至少一个主数据库中的部分或全部数据库失败时,访问所述至少一个备份数据库中与访问失败的主数据库对应的备份数据库,获得所述第一数据。
可选的,还包括发送模块,所述发送模块用于:
在根据所述路由结果访问所述至少一个主数据库中的部分或全部数据库失败时,将访问失败的主数据库上报给其他设备,以维护所述访问失败的主数据库。
可选的,所述计算模块根据所述数据访问请求计算路由结果,包括:
将所述数据访问请求携带的请求访问参数输入设定的第三方程序,并接收所述第三方程序输出的路由结果;其中,所述第三方程序通过运行脚本文件的方式实现。
可选的,所述第三方程序是根据分片规则进行编辑的程序;其中,所述分片规则为所述第一数据分割成多个分片所依据的规则。
可选的,还包括检测模块,所述检测模块用于:在根据所述路由结果访问所述至少一个主数据库中的部分或全部数据库之前,检测所述至少一个主数据库中的每个数据库是否有效,对有效的数据库进行访问。
可选的,所述检测模块用于检测所述至少一个主数据库中的每个数据库是否有效,包括:
检测所述路由结果中包括的至少一个主数据库中的每个数据库是否有效;
或,
周期性地检测所述多个主数据库中的每个数据库是否有效。
本发明实施例提供一种数据访问方法,可以将第一数据分割成的多个分片所在的多个主数据库进行备份,即设置了备份数据库,在对第一数据进行访问时,首先访问主数据库,如果访问失败,那么有可能主数据库发生了故障,此时可以访问备份数据库,以获得第一数据,从而提高了数据访问的成功率。
附图说明
图1是本发明实施例提供的数据访问方法流程图;
图2为本发明实施例提供的数据访问设备的一种结构示意图;
图3为本发明实施例提供的数据访问设备的一种结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
下面结合说明书附图介绍本发明实施例提供的技术方案。
请参见图1,本发明实施例提供一种数据访问方法,该方法的流程描述如下:
S101:接收终端发送的数据访问请求;其中,数据访问请求用于请求访问第一数据,第一数据分割成的多个分片分散存储在多个主数据库,多个主数据库对应多个备份数据库,备份数据库用于对所述主数据库的数据进行备份;
S102:根据数据访问请求计算路由结果;其中,路由结果用于指示存储第一数据所包括的多个分片的至少一个主数据库,及至少一个备份数据库;
S103:在根据路由结果访问至少一个主数据库中的部分或全部数据库失败时,访问至少一个备份数据库中与访问失败数据库对应的备份数据库,获得第一数据。
本发明实施例中,第一数据可以理解为待访问的数据,通常情况下,第一数据以数据表的形式存储,该数据表存储在数据库,数据库存储在服务器上。如果第一数据都存储在一张数据表,对第一数据访问时就需要对整张数据表进行操作,如果第一数据的数据量较大,这样显然会增加数据库的负担。为了减轻数据库的负担,通常将第一数据的数据库总表按照一定的分片规则进行分片,分割成多个分片,再将多个分片分散存储在多个数据库。例如,针对一年的订单数据表,可以按照时间规则,例如以月为单位将该订单数据表进行分割,可以分割成12个子订单数据表,其中的子订单数据表可以称为数据库。多个数据库可以存储在一台服务器上,也可以存储在多台服务器上。本发明实施例中,第一数据分割成的多个分片所在的多个数据库称为主数据库。
对第一数据进行访问,就是对一台或多台服务器上的多个主数据库中的数据进行访。在访问之前,可以通过分片路由按照与分片规则对应的路由规则计算出第一数据所在的主数据库有哪些,从而对计算出的主数据库进行访问,获得第一数据。
由于数据库有时可能发生故障,那么就无法保证数据库在任何时刻都是可以提供服务的,例如,数据库发生故障,网络发生故障,系统发生故障,磁盘满等,导致的数据库无法提供服务,在这种情况下,终端就无法成功访问第一数据,从而造成数据访问的成功率较低。
鉴于此,本发明实施例在初始时,对每个主数据库进行备份,每个主数据库都相应设置一份或多份备份数据库,对主数据库进行备份获得的数据库称为备份数据库。其中备份数据库中的数据可以通过数据复制工具实现与主数据库中的数据一致。
用户可以通过终端访问第一数据,终端要访问第一数据,就需要知道第一数据存储在哪张数据表,这张数据表存储在哪个数据库。在一种实施方式中,终端访问第一数据时,可以向分片路由发送数据访问请求,该数据访问请求可以用于请求访问第一数据。其中,分片路由可以设置在终端中,也可以设置在服务器中,或者也可以独立于终端和服务器,设置于终端和服务器之间。
分片路由接收数据访问请求,可以根据数据访问请求计算出路由结果,也就是第一数据所包括的多个分片的至少一个主数据库列表。其中,至少一个主数据库列表包括第一数据所在的数据表的列表,和/或数据表所存储的地址的列表。分片路由根据数据访问请求及分片路由内的路由规则计算出路由结果后,可以将计算的路由结果反馈给终端,从而使得终端根据接收的路由结果获得第一数据所在的数据表列表,也获得每个数据表所存储的地址,去访问第一数据。
现有技术中,路由结果只包括至少一个主数据库,如果至少一个主数据库发生故障,那么就有可能导致第一数据的访问失败。而本发明实施例中,路由结果不止包括至少一个主数据库,还包括与至少一个主数据库对应的至少一个备份数据库。这样当终端在访问至少一个主数据库中的部分或者全部数据库失败时,那么可以认为有的主数据库当前是不可以提供服务的。此时,终端就可以访问路由结果中的至少一个备份数据库中与访问失败的主数据库对应的备份数据库,从而获得第一数据,通过该实施例可以提高访问数据的成功率。
数据库一般都用于存储比较重要的数据,且通常也是优先访问主数据库,所以如果终端在访问至少一个主数据库中的部分或者全部数据库失败时,那么可以确定访问失败的主数据库可能发生了故障,此时,终端就可以将访问失败的主数据库上报给其他设备,或者输出访问失败的主数据库的信息,用于提示管理人员有主数据库发生故障。这样管理人员就可以维护访问失败的主数据库,使得主数据库后续可以正常使用。
再者,由于数据库的数据可能发生故障,那么就无法保证数据库在任何时刻都是有效的,例如,数据库存储的数据表实际上是不存在的,导致的数据库无法被访问,即使访问了该数据库也得不到第一数据,即数据访问的成功率较低。在这种情况下,终端就无法成功访问第一数据,这就需要终端再次访问数据库,请求获得第一数据,不可避免地,终端与分片路由交互的次数就较多,导致数据访问的效率较低。
为了避免终端与分片路由交互的次数较多,以提高数据访问的效率,在本发明实施例中,在对多个主数据库进行访问时,可以检测这多个主数据库中每个主数据库是否有效。这里主数据库有效指的是主数据库可访问,从而使得终端只对有效的主数据库进行访问,对于无效的主数据库直接放弃访问,从而减少了访问时的交互次数,达到提高访问效率的目的。
本发明实施例中,检测多个主数据库中每个数据库是否有效可以检测每个主数据库所对应的网络端口是否可访问,可以检查每个主数据库本身是否可访问,或者也可以检查每个主数据库中的要访问的数据表是否在数据库中存在,且该数据表本身也可以访问。如果一个主数据库所对应的网络端口可以访问,则可以认为该主数据库有效,同样地,如果一个主数据库本身可以访问,则该主数据库也是有效的。以上三种检测情况只是举例说明,本发明实施例中,检测每个主数据库是否有效,也可以将三种情况都考虑进去,一次将以上三种情况都进行检测,这样可以进一步确定有效的数据库,以尽量减小访问无效的数据库的可能性。当然,数据库有效不限于以上几种情况,还包括其他可能的情况。
本发明实施例中的分片路由检测多个主数据库中的每个主数据库是否有效可以在以下两种情况下进行。
第一种情况:分片路由可以在计算出路由结果后进行检测,以只检测所要待访问的主数据库的有效性,所检测的数据库的数量较少,检测效率较高,也可以减轻检测负担。本发明实施例中,除了分片路由,还可以由终端在计算出路由结果后进行检测,此时就需要分片路由在计算出路由结果时告知终端,由终端对路由结果所包括的主数据库的有效性进行检测。当然,本发明实施例中,对路由结果所包括的主数据库的有效性的检测不限于通过分片路由和终端实现,也可以通过其他可能的设备,例如服务器实现。
第二种情况:分片路由也可以针对服务器上所存储的所有数据库进行周期性地检测,以周期性地对所有数据库进行监控,在发现有无效的数据库时,便于及时对无效的数据库进行维护。周期的设定可以根据经验设置,例如数据库发生故障的频率是每30分钟/次,那么可以设定周期就是30分钟。周期的设定也可以根据实际实验测量所得,对此,本发明不作限制。
在这种检测方式下,一旦分片路由计算出路由结果后,可以将计算出的路由结果所包括的主数据库与周期性检测得到的有效数据库进行比较,如果路由结果所包括的主数据库中的某个或某些主数据库不在周期性检测得到的有效数据库范围内,则可以认为某个或某些主数据库为无效的数据库。分片路由向终端反馈的路由结果可以包括计算出的全部的主数据库,也可以只包括有效的主数据库。只包括有效的主数据库时,即将无效数据库去除后,再反馈给终端,不需要终端进一步对接收的分片路由反馈的路由结果进行判断,减轻终端的负担。
另外,确定了存在无效的主数据库,那么也就可以认为存储在无效的主数据库中的第一数据的部分数据是访问不到的,也就是终端最终得到的第一数据是不全的。因此,在这种情况下,终端可以访问备份数据库中与无效的主数据库对应的备份数据库,以尽量获取完整的第一数据,以尽量提高访问数据的成功率。同样地,在对备份数据库进行访问前,也可以检测要访问的备份数据库是否有效。检测备份数据库是否有效的方法与检测主数据库是否有效的方法一样,这里不再赘述。
另外,分片路由是根据数据访问请求及分片路由内的路由规则计算出路由结果后,再将计算的路由结果反馈给终端,从而使得终端根据接收的路由结果去访问第一数据。在现有技术中,分片路由的路由规则是预先设定好的,一旦路由规则发生了变化,就需要重新将变化后的路由规则烧写至分片路由中,否则无法继续通过分片路由对数据进行访问。
鉴于此,本发明实施例,分片路由中的路由规则是通过运行第三方程序获得的,第三方程序是根据第一数据分割成多个分片依据的规则进行编辑的程序,并通过运行脚本文件的方式。可能的实施方式中,在java运行环境中执行JavaScript脚本语言,以得到脚本文件。当第一数据分割成多个分片依据的规则,也就是分片规则发生了变化,例如新增加分片规则,或者放弃已有的分片规则,或者在原有的分片规则上作了改进,对应地路由规则也就发生了变化,而第三方程序可以根据第一数据分割成多个分片依据的规则进行编辑的程序,那么就可以实现路由规则的更新,比较灵活。第三方程序可以通过运行脚本文件的方式实现,当路由规则发生了变化,只需要对应地修改脚本文件中的代码,然后运行脚本文件即可实现更新路由规则。现有技术中,在需要更新路由规则时,需要通过烧写器将新的路由规则重新烧录至所有的分片路由,操作繁琐。本发明实施例中,脚本文件可以独立部署,可以热加载执行脚本文件,而不需要提前编译,较为灵活。这样就不需要通过烧写器将新的路由规则重新烧录至分片路由,避免操作上的繁琐,容易实现路由规则的扩展。
下面介绍分片路由根据数据访问请求及第三方程序计算路由结果的实现方式。
分片路由接收终端发送的数据访问请求,可以将数据访问请求携带的请求访问参数输入设定的第三方程序,通过第三方程序计算出路由结果,也就是第一数据所包括的多个分片的至少一个主数据库列表,及至少一个备份数据库列表。其中,至少一个主数据库列表包括第一数据所在的数据表的列表,和/或数据表所在的主数据库的列表。至少一个备份数据库列表包括第一数据所在的数据表的列表,和/或数据表所在的备份数据库的列表。
由于不同类型的数据,对应的分片规则也有所不同,对应的路由规则也有所不同,因此,对应的脚本文件也有所不同。本发明实施例中,不同类型的数据可以通过逻辑表名来体现,那么可以认为不同的逻辑表名对应的脚本文件不同,即根据逻辑表名可以确定要访问的数据对应的路由规则。其中,逻辑表名可以用于标识第一数据所在数据表的名称,例如订单表,可以通过order的形式来表示。订单表t_order数据量很大,要做分片,可以按日期拆为t_order201705、t_order201706、t_order201707……等,其中,t_order就是逻辑表名,带日期后缀的表名,例如t_order201705可以称为实体表名。在对第一数据进行访问时,首先要确定第一数据是否在t_order中,如果第一数据在t_order,还需要进一步确定第一数据在t_order下的哪个子表中。
本发明实施例中,数据访问请求携带有请求访问参数,请求访问参数可以包括结构化查询语言(Structured Query Language,SQL)语句、分片字段及逻辑表名,其中,分片字段用于标识待访问数据的访问条件,例如,日期。继续以上一段的例子为例,分片字段可以是201705、201706、201707等。
分片路由从数据访问请求中获取请求访问参数后,首先可以根据请求访问参数中的逻辑表名确定相应的脚本文件,以确定要使用的路由规则。确定了脚本文件后,分片路由运行脚本文件,并将请求访问参数中的分片字段的值作为脚本文件的输入参数,脚本文件的输出就是路由结果。例如,计算订单表t_order的路由信息,首先通过t_order确定需要采用的脚本文件t_order.js的路由规则,再将分片字段date的值作为输入参数传输给t_order.js,执行t_order.js输出路由结果,该路由结果包括库表信息,即既包括第一数据所在的数据表信息,例如实体表名t_order201705,也包括t_order201705所在的数据库信息。
进一步地,本发明实施例考虑到海量的数据包括各种类型的数据,对此,各种类型的数据进行分片所依据的规则,即分片规则也包括多种。那么当服务器上存储多种类型的数据的多个分片。终端在访问第一数据前,首先要获取第一数据的分片规则,从而编辑与分片规则对应的脚本文件,那么当终端需要访问其他数据时,就需要重新编辑与其他数据的分片规则对应的脚本文件,每次重新编辑,操作繁琐。
鉴于此,在本发明实施例中,终端可以根据服务器上存储的数据常用的记载分片规则事先编辑对应的多个脚本文件,其中一个脚本文件对应一种路由规则。终端可以存储事先编辑的多个脚本文件,在对服务器上存储的数据进行访问时,只要调用对应的脚本文件即可。这样即使服务器新增加了存储的数据,只要新增加的数据的分片规则不变,就不需要重新编辑脚本文件,实现了脚本文件的复用,避免了频繁编辑脚本文件的操作。
进一步地,本发明实施例中的分片路由可以通过运行脚本文件的方式实现较为复杂的路由规则。现有技术中,分片路由所存储的路由规则是通过路由表的方式实现,通常情况下,结构化的路由表存储结构很难满足复杂的路由规则设置。例如,在多种路由规则组合的情况下,例如,第一数据先按照日期字段按时间段分片,以时间段为第一结果,在根据某字段进行哈希运算,最终将第一数据进行分片,这样的路由规则较为复杂,而路由表很难实现这样的规则。本发明实施例中,一个脚本文件可以包括两级或两级以上的路由规则,还是以上述例子为例,本发明实施例提供的脚本文件既可以包括首先根据时间段分片的规则,又可以包括根据时间段分片的基础上,再根据某字段进行哈希运算的规则,即本发明实施例中的分片路由可以通过运行脚本文件的方式实现较为复杂的路由规则,应用更为广泛。当然,一个脚本文件包括两级路由规则仅是举例,可能的实施方式中,一个脚本文件可以包括三级、甚至三级以上的路由规则。
在现有技术中,当终端需要访问第一数据时,发送数据访问请求,分片路由根据接收的数据访问请求中携带的参数,例如结构化查询语言(Structured Query Language,SQL)语句,先解析SQL语句,根据路由表判断是否有分片字段和分片规则,如果有分片字段和分片规则,再确定数据分片。即在现有技术中,分片路由首先需要访问路由表,再计算路由结果,而访问路由表就需要耗费时间,这样就导致了分片路由的计算效率较低。且在某些情况下,分片路由通过路由表的方式进行一次计算可能无法得出路由结果,需要进行两次或者两次以上的计算才能得出路由结果。例如,请参见表1,表1为第一数据的分片规则的示意表,以按照时间段的规则对第一数据进行分片为例。分片字段,例如起始日期,结束日期date,根据该分片字段按月做分片,在数据库中配置通常如表1所示,随着时间的延续,该表的配置项还需要增加,因此仅通过一条无法配置该路由规则。
表1-第一数据的分片规则的示意表
如果要访问的第一数据在表1中所示的T201705和T201707中存在,那么通过现有技术中的路由表的方式实现,就需要计算两次,而每次都需要访问路由表,这样分片路由计算路由结果时需要耗费访问路由表的时间,导致分片路由的计算效率较低。而在本发明实施例中,分片路由直接运行脚本文件计算路由结果,不需要访问路由表,也就节约了访问路由表的时间,从而提高了分片路由的计算效率。
当终端接收分片路由反馈的路由结果后,根据路由结果访问至少一个数据库中的部分或全部数据库,获得第一数据。其中终端可以访问路由结果中的数据库的数据表,获得第一数据。有可能第一数据存在多张数据表中,而用户只需要其中的某些数据表所包括的第一数据,此时终端就只需要访问其中的某些数据表,而不需要访问全部的数据表,以节约访问时间,提供访问效率。终端访问至少一个数据库中的部分或全部数据库时,可以直接在部分或全部数据库进行操作,比如查询操作,修改操作,删除操作等,当然这些操作可以通过SQL语句实现。
本发明实施例中,终端在对第一数据所包括的多个分片所在的主数据库中的至少一个主数据库进行访问失败时,继续对访问失败的主数据库对应的备份数据库进行访问,从而提高了数据访问的成功率。
本发明实施例中,分片路由的路由规则通过第三方程序,也就是脚本文件的方式实现,在路由规则发生变化时,无需重新通过烧写器将新的路由规则烧写至分片路由,能够实现各种新的路由规则,易于扩展路由规则,应用范围较为广泛,脚本文件不需要事先编译,可以直接热加载执行,实施过程较为方便。
下面结合附图介绍本发明实施例所提供的设备。
请参见图2,基于同一发明构思,本发明实施例提供一种数据访问设备,该数据访问设备可以包括存储器201和处理器202,存储器301可以通过总线200与处理器202相连接(图2以此为例),或者也可以通过专门的连接线与处理器202连接。其中,存储器201可以用于存储指令。
处理器202可以执行存储器201存储的指令,用于:
接收终端发送的数据访问请求,其中,数据访问请求用于请求访问第一数据,第一数据分割成的多个分片分散存储在多个主数据库,多个主数据库对应多个备份数据库,备份数据库用于对主数据库的数据进行备份;
根据数据访问请求计算路由结果,其中,路由结果用于指示存储第一数据所包括的多个分片的至少一个主数据库,及至少一个备份数据库;
在根据路由结果访问至少一个主数据库中的部分或全部数据库失败时,访问至少一个备份数据库中与访问失败的主数据库对应的备份数据库,获得第一数据。
可选的,处理器202还用于:
在根据路由结果访问至少一个主数据库中的部分或全部数据库失败时,将访问失败的主数据库上报给其他设备,以维护访问失败的主数据库。
可选的,处理器202根据数据访问请求计算路由结果,包括:
将数据访问请求携带的请求访问参数输入设定的第三方程序,并接收第三方程序输出的路由结果;其中,第三方程序通过运行脚本文件的方式实现。
可选的,第三方程序是根据分片规则进行编辑的程序;其中,分片规则为第一数据分割成多个分片所依据的规则。
可选的,处理器202还可以用于:
在根据路由结果访问所述至少一个主数据库中的部分或全部数据库之前,检测至少一个主数据库中的每个数据库是否有效,对有效的主数据库进行访问。
可选的,处理器202用于检测至少一个主数据库中的每个主数据库是否有效,包括:
检测路由结果中包括的至少一个主数据库中的每个主数据库是否有效;
或,
周期性地检测多个数据库中的每个主数据库是否有效。
图2中所示的数据访问设备的各个功能单元所实现的功能等可参考图1所示的实施例中的介绍,不多赘述。
请参见图3,基于同一发明构思,本发明实施例还提供一种数据访问设备,该数据访问设备可以包括接收模块301、计算模块302和访问模块303。
其中,接收模块301可以用于接收终端发送的数据访问请求,其中,数据访问请求用于请求访问第一数据,第一数据分割成的多个分片分散存储在多个主数据库,多个主数据库对应多个备份数据库,备份数据库用于对主数据库的数据进行备份。
计算模块302可以用于根据数据访问请求计算路由结果,其中,路由结果用于指示存储第一数据所包括的多个分片的至少一个主数据库,及至少一个备份数据库。
访问模块303可以用于在根据路由结果访问至少一个主数据库中的部分或全部数据库失败时,访问至少一个备份数据库中与访问失败的主数据库对应的备份数据库,获得第一数据。
可选的,还包括发送模块,发送模块用于:
在根据路由结果访问至少一个主数据库中的部分或全部数据库失败时,将访问失败的主数据库上报给其他设备,以维护访问失败的主数据库。
可选的,计算模块302根据数据访问请求计算路由结果,包括:
将数据访问请求携带的请求访问参数输入设定的第三方程序,并接收第三方程序输出的路由结果;其中,第三方程序通过运行脚本文件的方式实现。
可选的,第三方程序是根据分片规则进行编辑的程序;其中,分片规则为第一数据分割成多个分片所依据的规则。
可选的,还包括检测模块,检测模块可以用于:在根据路由结果访问至少一个主数据库中的部分或全部数据库之前,检测至少一个主数据库中的每个主数据库是否有效,对有效的主数据库进行访问。
可选的,检测模块304用于检测至少一个主数据库中的每个主数据库是否有效,包括:
检测路由结果中包括的至少一个主数据库中的每个主数据库是否有效;
或,
周期性地检测多个数据库中的每个主数据库是否有效。
可选的,接收模块301、计算模块302和访问模块303所对应的实体设备均可以是图2中的处理器202。
本发明实施例提供一种数据访问方法,可以将第一数据分割成的多个分片所在的多个主数据库进行备份,即设置了备份数据库,在对第一数据进行访问时,首先访问主数据库,如果访问失败,那么有可能主数据库此时是不能提供服务的,那么可以通过访问备份数据库,以获得第一数据,从而提高了数据访问的成功率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:通用串行总线闪存盘(Universal Serial Bus flash disk)、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种数据访问方法,其特征在于,包括:
接收终端发送的数据访问请求;其中,所述数据访问请求用于请求访问第一数据,所述第一数据分割成的多个分片分散存储在多个主数据库,所述多个主数据库对应多个备份数据库,所述备份数据库用于对所述主数据库的数据进行备份;
根据所述数据访问请求计算路由结果;其中,所述路由结果用于指示存储所述第一数据所包括的多个分片的至少一个主数据库,及至少一个备份数据库;
在根据所述路由结果访问所述至少一个主数据库中的部分或全部数据库失败时,访问所述至少一个备份数据库中与访问失败的主数据库对应的备份数据库,获得所述第一数据;
其中,根据所述数据访问请求计算路由结果,包括:
将所述数据访问请求携带的请求访问参数输入设定的第三方程序,并接收所述第三方程序输出的路由结果;其中,所述第三方程序通过运行脚本文件的方式实现。
2.如权利要求1所述的方法,其特征在于,还包括:
在根据所述路由结果访问所述至少一个主数据库中的部分或全部数据库失败时,将访问失败的主数据库上报给其他设备,以维护所述访问失败的主数据库。
3.如权利要求1所述的方法,其特征在于,所述第三方程序是根据分片规则进行编辑的程序;其中,所述分片规则为所述第一数据分割成多个分片所依据的规则。
4.如权利要求1-2任一所述的方法,其特征在于,在根据所述路由结果访问所述至少一个主数据库中的部分或全部数据库之前,还包括:
检测所述至少一个主数据库中的每个主数据库是否有效,对有效的主数据库进行访问。
5.如权利要求4所述的方法,其特征在于,检测所述至少一个数据库中的每个主数据库是否有效,包括:
检测所述路由结果中包括的至少一个主数据库中的每个主数据库是否有效;
或,
周期性地检测所述多个主数据库中的每个主数据库是否有效。
6.一种数据访问设备,其特征在于,包括:
接收模块,用于接收终端发送的数据访问请求;其中,所述数据访问请求用于请求访问第一数据,所述第一数据分割成的多个分片分散存储在多个主数据库,所述多个主数据库对应多个备份数据库,所述备份数据库用于对所述主数据库的数据进行备份;
计算模块,用于根据所述数据访问请求计算路由结果;其中,所述路由结果用于指示存储所述第一数据所包括的多个分片的至少一个主数据库,及至少一个备份数据库;
访问模块,用于在根据所述路由结果访问所述至少一个主数据库中的部分或全部数据库失败时,访问所述至少一个备份数据库中与访问失败的主数据库对应的备份数据库,获得所述第一数据;
所述计算模块具体用于:
将所述数据访问请求携带的请求访问参数输入设定的第三方程序,并接收所述第三方程序输出的路由结果;其中,所述第三方程序通过运行脚本文件的方式实现。
7.如权利要求6所述的设备,其特征在于,还包括发送模块,所述发送模块用于:
在根据所述路由结果访问所述至少一个主数据库中的部分或全部数据库失败时,将访问失败的主数据库上报给其他设备,以维护所述访问失败的主数据库。
8.如权利要求6所述的设备,其特征在于,所述第三方程序是根据分片规则进行编辑的程序;其中,所述分片规则为所述第一数据分割成多个分片所依据的规则。
9.如权利要求6-7任一所述的设备,其特征在于,还包括检测模块,所述检测模块用于:在根据所述路由结果访问所述至少一个主数据库中的部分或全部数据库之前,检测所述至少一个主数据库中的每个主数据库是否有效,对有效的主数据库进行访问。
10.如权利要求9所述的设备,其特征在于,所述检测模块用于检测所述至少一个主数据库中的每个主数据库是否有效,包括:
检测所述路由结果中包括的至少一个主数据库中的每个主数据库是否有效;
或,
周期性地检测所述多个主数据库中的每个主数据库是否有效。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710548205.7A CN107451202B (zh) | 2017-07-06 | 2017-07-06 | 一种数据访问方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710548205.7A CN107451202B (zh) | 2017-07-06 | 2017-07-06 | 一种数据访问方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107451202A CN107451202A (zh) | 2017-12-08 |
CN107451202B true CN107451202B (zh) | 2020-06-19 |
Family
ID=60488777
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710548205.7A Active CN107451202B (zh) | 2017-07-06 | 2017-07-06 | 一种数据访问方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107451202B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109739184A (zh) * | 2018-11-27 | 2019-05-10 | 福建省嘉泰智能装备有限公司 | 一种机床设备数据采集系统 |
CN110795502A (zh) * | 2019-10-12 | 2020-02-14 | 苏州浪潮智能科技有限公司 | 一种数据访问方法、装置、电子设备及可读存储介质 |
CN111538605B (zh) * | 2020-04-24 | 2023-04-11 | 北京思特奇信息技术股份有限公司 | 一种分布式数据访问层中间件及命令执行方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105528373A (zh) * | 2014-10-21 | 2016-04-27 | 阿里巴巴集团控股有限公司 | 数据库故障处理方法、装置、系统及服务器 |
US9576020B1 (en) * | 2012-10-18 | 2017-02-21 | Proofpoint, Inc. | Methods, systems, and computer program products for storing graph-oriented data on a column-oriented database |
CN106897281A (zh) * | 2015-12-17 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 一种日志分片方法和装置 |
-
2017
- 2017-07-06 CN CN201710548205.7A patent/CN107451202B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9576020B1 (en) * | 2012-10-18 | 2017-02-21 | Proofpoint, Inc. | Methods, systems, and computer program products for storing graph-oriented data on a column-oriented database |
CN105528373A (zh) * | 2014-10-21 | 2016-04-27 | 阿里巴巴集团控股有限公司 | 数据库故障处理方法、装置、系统及服务器 |
CN106897281A (zh) * | 2015-12-17 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 一种日志分片方法和装置 |
Non-Patent Citations (1)
Title |
---|
基于MongoDB和Asio的传感器数据存储系统设计;李晓;《电子技术与软件工程》;20160503;第200+253页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107451202A (zh) | 2017-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11163731B1 (en) | Autobuild log anomaly detection methods and systems | |
CN108388604B (zh) | 用户权限数据管理装置、方法及计算机可读存储介质 | |
EP3477914B1 (en) | Data recovery method and device, and cloud storage system | |
US20110225582A1 (en) | Snapshot management method, snapshot management apparatus, and computer-readable, non-transitory medium | |
CN107451202B (zh) | 一种数据访问方法及设备 | |
US8392904B2 (en) | Apparatus, system, and method for efficient code update | |
CN108984544B (zh) | 一种分布式系统修改配置信息的方法和装置 | |
EP3547145A2 (en) | Systems and methods for reducing storage required for code coverage results | |
CN110990420A (zh) | 数据查询方法、装置 | |
CN105573859A (zh) | 一种数据库的数据恢复方法和设备 | |
JP6633642B2 (ja) | 分散データベースにおけるデータブロックを処理する方法およびデバイス | |
CN111737227B (zh) | 数据修改方法及系统 | |
US11822912B2 (en) | Software installation through an overlay file system | |
CN112835885B (zh) | 一种分布式表格存储的处理方法、装置及系统 | |
CN116501700B (zh) | 一种app格式化文件离线存储方法、装置、设备及存储介质 | |
CN111385613B (zh) | 一种电视系统修复方法、存储介质及应用服务器 | |
US9304753B2 (en) | Handling data access requests in computer program updates | |
CN113900663B (zh) | 一种数据处理方法及装置 | |
CN112148762A (zh) | 一种实时数据流的统计方法和装置 | |
CN114490196A (zh) | 数据库切换方法、系统、设备及介质 | |
US9158817B2 (en) | Enhancing online querying service using client memorization | |
CN110807037B (zh) | 一种数据修改方法、装置、电子设备及存储介质 | |
CN113010208A (zh) | 一种版本信息的生成方法、装置、设备及存储介质 | |
TWI444824B (zh) | 虛擬機器記憶體的鑑識方法與電腦系統 | |
JP6568232B2 (ja) | 計算機システム、及び、装置の管理方法 |
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 |