一种数据库扩容方法及装置与流程

文档序号:12465521阅读:239来源:国知局
一种数据库扩容方法及装置与流程
本发明涉及互联网
技术领域
,尤其涉及一种数据库扩容方法及装置。
背景技术
:随着互联网技术的发展,用户可以随时随地接入互联网,导致用户的数据量也大大增加,为了存储用户的数据,常常出现数据库容量不够的问题。为了解决该问题,可以在数据量增加时增加存储数据的数据库,将原数据库中较老的数据迁移到新的库中,从而,为原数据库腾出存储空间,达到扩容的目的。然而,在实践中发现,上述扩容的方式,常常需要手工迁移数据到新的数据库中,导致数据扩容效率低。技术实现要素:本发明实施例提供一种数据库扩容方法及装置,能够实现数据库的动态扩容,提高数据库扩容效率。本发明实施例提供了一种数据库扩容方法,包括:在接收到数据写入请求时,获取待写入数据;根据配置文件中各数据库的库权重为所述待写入数据分配至少一个数据库;利用分配的至少一个数据库的库信息将所述待写入数据分别写入到所述至少一个数据库中;所述配置文件包括各数据库的库信息,所述库信息包括数据库的库身份标识ID、库地址以及库权重;所述数据库的库权重用于指示向所述数据库分配所述待写入数据的比例。相应地,本发明实施例还提供了一种数据库扩容装置,包括:获取模块,用于在接收到数据写入请求时,获取待写入数据,分配模块,用于根据配置文件中各数据库的库权重为所述待写入数据分配至少一个数据库;写入模块,用于利用分配的至少一个数据库的库信息将所述待写入数据分别写入到所述至少一个数据库中;所述配置文件中包括各数据库的库信息,所述库信息包括数据库的库身份标识ID、库地址以及库权重;所述数据库的库权重用于指示向所述数据库分配所述待写入数据的比例。本发明实施例中,服务器在接收到数据写入请求时,获取待写入数据;根据配置文件中各数据库的库权重为所述待写入数据分配至少一个数据库;利用分配的至少一个数据库的库信息将所述待写入数据分别写入到所述至少一个数据库中,其中,库信息包括数据库的库身份标识ID、库地址以及库权重。可见,本发明实施例利用配置文件中设置的库权重实现了数据库的动态扩容,并提高了数据库扩容的效率。附图说明为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例提供的一种数据库扩容方法的流程示意图;图2是本发明实施例提供的另一种数据库扩容方法的流程示意图;图3是本发明实施例提供的一种数据库扩容装置的结构示意图;图4是本发明实施例提供的一种服务器的结构示意图;图5是本发明实施例提供的一种数据处理系统的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例提供了一种数据库扩容方法及装置,能够实现数据库的动态扩容,提高数据库扩容效率。以下进行详细阐述。请参阅图1,图1为本发明实施例提供的一种数据库扩容方法的流程示意图。如图1所示,该数据库扩容方法可以包括以下步骤:S101、服务器在接收到数据写入请求时,获取待写入数据;S102、服务器根据配置文件中各数据库的库权重为所述待写入数据分配至少一个数据库;S103、服务器利用分配的至少一个数据库的库信息将所述待写入数据分别写入到所述至少一个数据库中。本发明实施例中,该配置文件可以包括各数据库的库信息,该库信息包括数据库的库身份标识(Identity,ID)、库地址以及库权重。其中,数据库的库权重用于指示向该数据库分配待写入数据的比例。可选的,待写入数据可以包括将数据写入数据库的多个数据写入请求,相应地,数据库的库权重可以用于指示向该数据库写入的数据所对应的多个数据写入请求的比例。本发明实施例中,库地址可以包括访问数据库所需要的端口号以及网际协议(internetProtocol,IP)地址。本发明实施例中,配置文件可以由配置中心进行配置并下发到服务器。其中,配置中心可以根据各数据库的可用存储量为各数据库分配库权重;另外,配置中心还可以随机或者按顺序来为各数据库分配库ID,从而使得服务器可以根据该配置中心中各数据库的上述库信息为待写入数据分配数据库,并根据各数据库的库地址和库ID将待写入数据写入到所分配的相应数据库中。本发明实施例中,当待写入数据为多个数据写入请求时,服务器可以利用S102为该多个数据写入请求分别分配数据库。例如,服务器可以根据配置文件中各数据库的库权重为该多个数据写入请求分配对应的数据库。本发明实施例中,服务器在S103中利用分配的至少一个数据库的库信息将所述待写入数据分别写入到所述至少一个数据库中,可以包括:利用分配的至少一个数据库中各数据库的库地址和库ID将待写入数据写入到所分配的相应数据库中。举例来说,服务器接收到10个数据写入请求,数据库1的权重为20%;数据库2的权重为80%,则将该10个数据写入请求中2个数据写入请求对应的数据写入到数据库1中,将该10个数据写入请求中剩余的8个数据写入请求对应的数据写入到数据库2中。因此,配置文件中各数据库对应的库权重之和为100%,相应地,可以在配置文件中将已满的数据库的库权重设置为0%,新添加的数据库的库权重设置为100%,从而,实现新写入数据的自动迁移,避免为了数据库路由不变需要手工将已满数据库的数据迁移到其他数据库,再利用之前路由地址写入新的数据的方法,提高了数据库的动态扩容。其中,服务器可以利用库地址中的IP地址、端口号来访问数据库,将待写入数据写入到数据库中。本发明实施例中,数据库的库ID可以是该数据库的名称、编号等,该库标识可以包括但不限于数字、文字、符号。本发明实施例中,服务器可以获取配置文件以及待写入数据,并根据各数据库的库权重为该待写入数据分配至少一个数据库;从而可以利用分配的至少一个数据库的库信息将所述待写入数据分别写入到至少一个数据库中。可见,本发明实施例利用配置文件为待写入数据动态分配数据库,实现了数据库的动态扩容,提高了数据库的扩容效率。请参阅图2,图2为本发明实施例提供的另一种数据库扩容方法的流程示意图。如图2所示,该数据库扩容方法可以包括以下步骤:S201、在接收到数据写入请求时,获取待写入数据。本发明实施例中,服务器可以以加载的方式,从配置中心获取配置文件,并且该服务器可以获取待写入数据。其中,该配置文件中包括各数据库的库信息,该库信息包括数据库的库身份标识ID、库地址以及库权重;该数据库的库权重用于指示向该数据库分配数据的数据量比例。该待写入数据可以包括需要写入的数据的类型、大小、用户账号、类别等信息。S202、服务器查询缓存系统中是否存在该待写入数据的键值对应的库ID。若不存在,则执行S203;若存在,则执行S207。本发明实施例中,用于标识数据的用户账号、类别等也可以称为数据对应的键值,其中,服务器可以利用数据的键值来区别不同的数据。可选的,数据对应的键值也可以为利用消息摘要算法MD5通过对数据的用户账号、类别等进行计算而获得的。缓存系统可以用于存储各数据的键值与各数据库的库ID之间的对应关系,以便服务器查询待写入数据的键值所对应的数据库的库ID。该对应关系用于指示键值指示的数据已写入库ID指示的数据库中。其中,该对应关系可以为一对一的对应关系或者一对多的对应关系,多对一的对应关系、多对多的对应关系。可选的,该缓存系统可以设置在腾讯的CKV云平台。假设各数据的键值为标识数据的用户账号,请参阅表1,表1为本发明实施例提供的一种各数据的键值与各数据库的库ID之间的对应关系表。如表1所示,账号1对应数据库1表示:键值为账号1的数据已被写入到库ID为1指示的数据库中;账号2对应数据库2表示:键值为账号2的数据已被写入到库ID为2指示的数据库中;账号3对应数据库3表示:键值为账号3的数据已被写入到库ID为3指示的数据库中。从而,使得服务器可以利用缓存系统中的上述对应关系查询待写入数据所在的数据库。表1键值数据库的库ID账号11账号22账号33需要说明的是,服务器在获取到待写入数据时,可以查询缓存系统中是否存在该待写入数据的键值对应的库ID。若查询到缓存系统中不存在该待写入数据的键值对应的库ID,则执行S203至S206;若查询到缓存系统中存在该待写入数据的键值对应的库ID,则执行S207、S208。S203、服务器根据配置文件中各数据库的库权重为该待写入数据分配至少一个数据库。S204、服务器确定该待写入数据的各键值以及至少一个数据库的各库ID。S205、服务器将各键值与各库ID的对应关系分别写入到缓存系统中。S206、服务器利用分配的至少一个数据库的库信息将该待写入数据分别写入到该至少一个数据库中。本发明实施例,S206中,服务器可以利用库地址中的IP地址、端口号来访问数据库,将待写入数据写入到数据库中。但当数据库所在的服务器可以包括多个数据库时,服务器则需利用库地址和库ID访问具体的数据库将待写入数据写入到数据库。S207、服务器查询该配置文件中该库ID对应的库地址以及库权重。S208、服务器利用查询的库地址以及库权重将该待写入数据分别写入到该库ID指示的数据库中。本发明实施例中,服务器可以在查询到缓存系统中存在该待写入数据的键值对应的库ID时,可以通过S207查询该配置文件中该库ID对应的库地址以及库权重,并且可以通过S208利用查询的库地址以及库权重将该待写入数据分别写入到该库ID指示的数据库中。举例来说,若待写入数据包括数据4、数据5、数据6,数据4的键值为账号1,数据5的键值为账号2,数据6的键值为账号3。若通过查询缓存系统中上述表1查找到这三个键值所对应的库ID,例如,账号1、账号2、账号3所对应的数据库ID分别为1、2、3,那么服务器将数据4、数据5、数据6分别写到对应的数据库中即可。S209、服务器在接收到待读取操作时,获取待读取数据的键值。S210、服务器查询该缓存系统中该键值对应的库ID。S211、服务器从该库ID指示的数据库中读取该待读取数据。本发明实施例中,服务器还可以执行读取数据的操作,如利用步骤S209至S211根据待读取数据的键值读取待读取数据。其中,已写入数据库中的数据都可以作为待读取数据进行读取。通常来说,终端等设备可以通过端口号及IP地址访问该服务器后,向服务器发送一个数据读取请求,那么服务器就可以接收到终端等设备发出的数据读取请求时,获取待读取数据的键值,查询到该键值对应的库ID,从该库ID指示的数据库中读取该待读取数据。举例来说,若终端向服务器发送了一个数据读取请求,该数据读取请求所请求的待读取数据的键值为账号1,服务器就可以从缓存系统的对应关系表中查询账号1对应的数据库的库ID,例如,查询到账号1对应的数据库的库ID为1,那么服务器就可以从库ID为1指示的数据库中读取该待读取数据,并将该待读取数据发送至终端。本发明实施例中,服务器可以获取配置文件以及待写入数据,并查询该待写入数据的键值在缓存系统中是否有对应的库ID,以根据键值和库ID的对应关系,将所述待写入数据分别写入到至少一个数据库中。并且,服务器还可以根据待读取数据的键值,查询该待读取数据的键值所对应的数据库的库ID,从该库ID指示的数据库中读取待读取数据。可见,本发明实施例利用配置文件为待写入数据动态分配数据库,实现了数据库的动态扩容,提高了数据库的扩容效率。另外,本发明实施例可以在访问或者读取数据时,可以直接查询缓存系统中所访问或读取的数据的键值对应的库ID,利用该库ID标识的数据库的库信息从该数据库中访问或读取数据。请参阅图3,图3是本发明实施例提供的一种数据扩容装置的结构示意图,图3所示的数据扩容装置可以用于实施上述图1及图2所示的发明实施例,如图3所示,该装置可以包括获取模块301、分配模块302、写入模块303,该装置还可以包括确定模块304,查询模块305、读取模块306,具体地:获取模块301,用于获取配置文件以及待写入数据,该配置文件中包括各数据库的库信息,该库信息包括数据库的库身份标识ID、库地址以及库权重;该数据库的库权重用于指示向该数据库分配待写入数据的比例;分配模块302,用于根据该各数据库的库权重为该待写入数据分配至少一个数据库;写入模块303,用于利用分配的至少一个数据库的库信息将该待写入数据分别写入到该至少一个数据库中。本发明实施例中,获取模块301可以获取配置文件以及待写入数据,并由分配模块302根据各数据库的库权重为该待写入数据分配至少一个数据库;从而可以使得写入模块303利用分配的至少一个数据库的库信息将所述待写入数据分别写入到至少一个数据库中。可见,本发明实施例利用配置文件为待写入数据动态分配数据库,实现了数据库的动态扩容,提高了数据库的扩容效率。本发明实施例中,确定模块304,用于确定该待写入数据的各键值以及该至少一个数据库的各库ID。作为一种可选的实施方式,写入模块303,还用于将该各键值与该各库ID的对应关系分别写入到缓存系统中;其中,该对应关系用于指示该键值指示的数据已写入该库ID指示的数据库中。本发明实施例中,查询模块305,用于查询该缓存系统中是否存在该待写入数据的键值对应的库ID。作为一种可选的实施方式,分配模块302,具体用于:若查询模块查询到该缓存系统中不存在该待写入数据的键值对应的库ID,则根据该各数据库的库权重为该待写入数据分配至少一个数据库。作为一种可选的实施方式,查询模块305,还用于在查询模块查询到该缓存系统中存在该待写入数据的键值对应的库ID时,继续查询该配置文件中该库ID对应的库地址以及库权重;写入模块303,还用于利用所查询到的库地址以及库权重将该待写入数据分别写入到该库ID指示的数据库中。作为一种可选的实施方式,获取模块301,还用于获取待读取数据的键值;查询模块305,还用于查询该缓存系统中该键值对应的库ID;读取模块306,用于从该库ID指示的数据库中读取该待读取数据。本发明实施例中,服务器可以获取配置文件以及待写入数据,并查询该待写入数据的键值在缓存系统中是否有对应的库ID,以根据键值和库ID的对应关系,将所述待写入数据分别写入到至少一个数据库中。并且,服务器还可以根据待读取数据的键值以及键值和库ID的对应关系读取相应数据库中的待读取数据。可见,本发明实施例利用配置文件为待写入数据动态分配数据库,实现了数据库的动态扩容,提高了数据库的扩容效率。请参阅图4,图4是本发明实施例提供的一种服务器的结构示意图,图4所示的装置可以用于实施上述图1及图2所示的发明实施例。其中,该服务器可以包括:处理器401、通信接口402、存储器403和通信总线404,其中,通信总线404用于实现这些组件之间的通信连接,通信接口402用于实现各机器之间的通信连接。存储器403可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。其中,处理器401可以结合图3所示的数据库扩容装置,存储器403中存储一组程序代码,且处理器401调用存储器403中存储的程序代码,用于执行以下操作:在接收到数据写入请求时,获取待写入数据;根据配置文件中各数据库的库权重为所述待写入数据分配至少一个数据库;利用分配的至少一个数据库的库信息将所述待写入数据分别写入到所述至少一个数据库中;所述配置文件包括各数据库的库信息,所述库信息包括数据库的库身份标识ID、库地址以及库权重;所述数据库的库权重用于指示向所述数据库分配所述待写入数据的比例。本发明实施例中,处理器401调用存储器403中存储的程序代码,还可以执行以下操作:确定所述待写入数据的各键值以及所述至少一个数据库的各库ID;将所述各键值与所述各库ID的对应关系分别写入到缓存系统中;其中,所述对应关系用于指示所述键值指示的数据已写入所述库ID指示的数据库中。本发明实施例中,处理器401调用存储器403中存储的程序代码,还可以执行以下操作:查询所述缓存系统中是否存在所述待写入数据的键值对应的库ID;若不存在所述待写入数据的键值对应的库ID,则执行所述的根据配置文件中各数据库的库权重为所述待写入数据分配至少一个数据库的步骤。本发明实施例中,处理器401调用存储器403中存储的程序代码,还可以执行以下操作:若存在所述待写入数据的键值对应的库ID,则查询所述配置文件中所述库ID对应的库地址以及库权重;利用所述查询的库地址以及库权重将所述待写入数据分别写入到所述库ID指示的数据库中。本发明实施例中,处理器401调用存储器403中存储的程序代码,还可以执行以下操作:在接收到数据读取请求时,获取待读取数据的键值;查询所述缓存系统中所述键值对应的库ID;从所述库ID指示的数据库中读取所述待读取数据。本发明实施例中,服务器可以获取配置文件以及待写入数据,并根据各数据库的库权重为该待写入数据分配至少一个数据库;从而可以利用分配的至少一个数据库的库信息将所述待写入数据分别写入到至少一个数据库中。可见,本发明实施例利用配置文件为待写入数据动态分配数据库,实现了数据库的动态扩容,提高了数据库的扩容效率。请参阅图5,图5是本发明实施例提供的一种数据处理系统的结构示意图,如图5所示,该数据处理系统可以包括读/写操作服务、CKV缓存系统、获取库ID服务、数据库读写操作服务以及n个数据库,n为大于2的整数。上述的各服务、CKV以及各数据库可以协作实现数据库的动态扩容,具体的包括以下操作:读/写操作服务可以在接收到数据写入请求时,触发数据库读写操作服务从读/写操作服务中获取待写入数据;获取库ID服务根据配置文件中各数据库的库权重为所述待写入数据分配至少一个数据库;数据库读写操作服务利用获取库ID服务分配的至少一个数据库的库信息将所述待写入数据分别写入到所述至少一个数据库中,例如,若获取库ID服务为待写入数据分配的库ID为1、2和n,则数据库读写操作服务按各数据库的库权重将待写入数据写入到数据库1、数据库2以及数据库n中。本发明实施例中,配置文件包括各数据库的库信息,所述库信息包括数据库的库身份标识ID、库地址以及库权重;所述数据库的库权重用于指示向所述数据库分配所述待写入数据的比例。其中,该配置文件可以预先加载到获取库ID服务中。可见,配置中心需要新添加数据库时,可以在配置文件中写入新添加数据库的库权重、库地址以及库ID,并将配置文件下发到获取库ID服务中,来为待写入数据分配所新添加的数据库的库ID,以便于数据库读写操作服务将待写入数据写入到该新添加的数据库中。本发明实施例中,该数据处理系统还可以包括以下操作:数据库读写操作服务确定所述待写入数据的各键值以及所分配的至少一个数据库的各库ID;数据库读写操作服务将所述各键值与所分配的各库ID的对应关系分别写入到缓存系统CKV中;其中,所述对应关系用于指示所述键值指示的数据已写入所述库ID指示的数据库中。本发明实施例中,该数据处理系统还可以包括以下操作:数据库读写操作服务查询所述缓存系统CKV中是否存在所述待写入数据的键值对应的库ID;若不存在所述待写入数据的键值对应的库ID,则获取库ID服务根据配置文件中各数据库的库权重为所述待写入数据分配至少一个数据库。本发明实施例中,该数据处理系统还可以包括以下操作:若存在所述待写入数据的键值对应的库ID,则数据库读写操作服务查询所述CKV中所述库ID对应的库地址以及库权重;数据库读写操作服务利用所述查询的库地址以及库权重将所述待写入数据分别写入到所述库ID指示的数据库中。本发明实施例中,该数据处理系统还可以包括以下操作:读写操作服务在接收到数据读取请求时,可以触发数据库读写操作服务获取待读取数据的键值;数据库读写操作服务查询所述缓存系统CKV中所述键值对应的库ID;数据库读写操作服务从所述库ID指示的数据库中读取所述待读取数据。本发明实施例中,数据处理系统可以由读/写操作服务在接收到数据写入请求时,触发数据库读写操作服务获取待写入数据,进而,由数据库读写操作服务触发获取库ID服务根据配置中心下发的配置文件中各数据库的库权重为该待写入数据分配至少一个数据库;从而,使得数据库读写操作服务可以利用分配的至少一个数据库的库信息将所述待写入数据分别写入到至少一个数据库中。相应地,读写操作服务除了包括写操作服务,还可以包括读操作服务。当读操作服务接收到数据读取请求时,可以触发数据库读写操作服务获取待读取数据的键值,并由数据库读写操作服务查询缓存系统CKV中是否存在该键值对应的库ID,若存在时,即可利用该库ID标识的数据库的库信息从该数据库中读取待读取数据。可见,本发明实施例利用配置文件为待写入数据动态分配数据库,实现了数据库的动态扩容,提高了数据库的扩容效率。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的、终端和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、终端和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1