数据库动态扩容的方法、存储介质技术

技术编号:22075596 阅读:31 留言:0更新日期:2019-09-12 14:06
本发明专利技术提供数据库动态扩容的方法、存储介质,方法包括:预设集群中包含的分库分表;哈希代理层依据第一哈希映射关系,将数据写入对应的集群中;复制一集群,得到一原集群和一新集群;修改所述第一哈希映射关系中对应所述一集群的哈希映射关系为分别对应所述一原集群和所述一新集群的哈希映射关系。本发明专利技术通过两层hash来实现动态扩容,不仅不需要修改代码中的分库分表规则,也不用进行数据迁移;进一步地,还能同时解决单表上限以及出现热点数据的问题;最后,还能实现自动优化数据库存储资源。

The Method and Storage Medium of Dynamic Expansion of Database

【技术实现步骤摘要】
数据库动态扩容的方法、存储介质
本专利技术涉及数据存储领域,具体涉及数据库动态扩容的方法、存储介质。
技术介绍
在现在很多系统或者APP应用中,每一个APP都需要有一个对应的后台服务端来提供接口服务;同时,由于应用的使用者人数较多,且每个用户的各种业务操作等都将产生数据信息。因此,每个应用的系统都需要存储数以亿计的用户信息以及用户行为信息。存储上述信息,给服务端数据库带来很大的压力。所以,一般现在大型的互联网公司都采用分库分表的形式来进行大数据量的存储工作。即通过一定的计算规则,采用“hash(key)%分表数量”这样的hash方式来实现分库分表。一般这样使用的话,会预先设置好分库分表的数量,如果后期有遇到数量暴增,需要进行数据库扩容的时候,就需要预先新增数据库;然后,迁移旧有数据并重新进行hash划分,不同的数据迁移到不同的对应库表中。因此,每次扩容迁移都是一个痛苦的过程。
技术实现思路
本专利技术所要解决的技术问题是:提供数据库动态扩容的方法、存储介质,能够在数据不迁移,也不用改变分库分表规则的情况下,实现数据库的动态扩容。为了解决上述技术问题,本专利技术采用的技术方案为:数据库动态扩容的方法,包括:预设集群中包含的分库分表;哈希代理层依据第一哈希映射关系,将数据写入对应的集群中;复制一集群,得到一原集群和一新集群;修改所述第一哈希映射关系中对应所述一集群的哈希映射关系为分别对应所述一原集群和所述一新集群的哈希映射关系。本专利技术提供的另一个技术方案为:一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能实现上述数据库动态扩容的方法所包含的步骤。本专利技术的有益效果在于:只需要在写入数据之前,配置哈希代理层及其到集群的第一哈希映射关系;便可以在扩容时,通过复制集群,并对应修改第一哈希映射关系中该集群的哈希映射关系即可实现动态扩容。本专利技术的扩容方式,不需要进行原数据的迁移,也不需要改变分库分表规则,即数据写入分表分库的第二哈希映射关系;原数据仍然可以依据修改后的第一哈希映射关系找到对应的存储位置。因此,本申请提供的扩容方式显著提高了实用性,以及操作便捷性。附图说明图1为本专利技术实施例一种数据库动态扩容的方法的流程示意图;图2为使用图1的方法进行扩容后与扩容前的对比示意图;图3为本专利技术实施例二的数据库动态扩容的方法的流程示意图。具体实施方式为详细说明本专利技术的
技术实现思路
、所实现目的及效果,以下结合实施方式并配合附图予以说明。本专利技术最关键的构思在于:通过哈希代理层的hash映射明确数据对应哪一个数据库集群;通过集群内部的hash映射明确数据对应哪个库哪张表;通过复制集群,并对应修改哈希代理层的hash映射关系中该集群的哈希映射关系即可实现动态扩容。本专利技术涉及的技术术语解释:请参照图1,本专利技术提供数据库动态扩容的方法,包括:预设集群中包含的分库分表;哈希代理层依据第一哈希映射关系,将数据写入对应的集群中;复制一集群,得到一原集群和一新集群;修改所述第一哈希映射关系中对应所述一集群的哈希映射关系为分别对应所述一原集群和所述一新集群的哈希映射关系。进一步地,所述哈希代理层依据第一哈希映射关系,将数据写入对应的集群中,之后,还包括:依据第二哈希映射关系,将数据写入集群中对应的分库分表。由上述描述可知,通过哈希代理层映射数据到对应的集群,再通过集群内的第二哈希映射关系映射到集群内具体的分库分表中,实现仍然可以基于分库分表实现进行数据存储,从而提高数据库性能。进一步地,所述修改所述第一哈希映射关系中对应所述一集群的哈希映射关系为分别对应所述一原集群和所述一新集群的哈希映射关系,之后,还包括:依据修改后的第一哈希映射关系,分别删除所述一原集群和所述一新集群中与自身不存在哈希映射关系的数据。由上述描述可知,通过删除原集群和新集群中多余的数据,避免无用数据占用资源,从而提高集群数据的有效性。进一步地,所述集群的数量为两个以上。由上述描述可知,可以依据具体的业务需求,灵活配置集群数量,支持大容量数据存储。进一步地,所述修改所述第一哈希映射关系中对应所述一集群的哈希映射关系为分别对应所述一原集群和所述一新集群的哈希映射关系,具体为:修改所述第一哈希映射关系中对应所述一集群的哈希映射关系为一半对应所述一原集群,另一半对应所述一新集群。由上述描述可知,实现了扩增所述一集群的数据存储量,且不用改变数据到具体分库分表的映射规则,也不用进行数据迁移。本专利技术提供的另一个技术方案为:一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能实现上述数据库动态扩容的方法所包含的步骤。从上述描述可知,对应本领域普通技术人员可以理解实现上述技术方案中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来实现的,所述的程序可存储于一计算机可读取的存储介质中,该程序在执行时,可包括如上述各方法的流程。所述程序在执行后,同样可以获取上述各方法流程对应的有益效果。其中,所述的存储介质可以是磁盘、光碟、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。实施例一请参照图1和图2,本实施例提供一种数据库动态扩容的方法,且无需进行数据迁移或者进行分库分表规则的修改,因而具有较高的实用性和使用便捷性。本实施的方法可以包括:S1:预设集群中包含的分库分表。具体而言,预配置整个数据库包含至少一个的集群,每个集群内包含预设个数的子数据库,每个子数据库中包含预设个数的数据表。例如,配置数据库中包含A集群和B集群;集群A中包含2个子数据库;每个子数据库中包含20个数据表。优选的,整个数据库包含至少两个的集群。本实施例相较于现有技术直接将数据库分库分表的形式,区别在于在分库分表之前还划分了集群,在集群中再进行分库分表。这样一来是为后续配置哈希代理层以及动态扩容提供服务,二来能提高数据查询性能,起到快速锁定目标数据的所在集群的作用。S2:哈希代理层依据第一哈希映射关系,将数据写入对应的集群中。本实施例所使用的数据存储规则与现有的分库分表数据存储规则一致,在此不进行详细具体的说明。区别在于,通过本步骤增加了哈希代理层进行数据对应集群的映射,然而,所使用的哈希映射算法也与分库分表的哈希算法一致,区别仅在于,哈希计算公式中的mum的值(即分表数量)并非依据业务量需求而定,而是依据配置的集群数以及所有分库分表数量而定,优选设置成一个较大的固定数值,如1000-1万。具体而言,即用一个hash(key)%num的计算公式来实现哈希代理层的hash映射。假设num设置为1000,则待写入数据库的一条记录数据,将首先经过哈希代理层根据上述计算公式计算出来的与该记录数据对应的数值进行映射分类,即将该条记录数据映射到对应的集群中。比如,假设数据库为一个账号数据管理数据库,则待写入的一条记录数据,将首先经过哈希代理层依据记录中记载的与其唯一对应的账号信息,即UID,进行Hash取模计算,假设计算得到数字20,则依据预配置的“0-500”的计算结果对应集群A;“500-1000”的计算结果对应B集群,直接写入这条记录数据到集群A中。S3:依据第二哈希映射关系,将数据写入集群中对应的分库分表。具体而言,本文档来自技高网
...

【技术保护点】
1.数据库动态扩容的方法,其特征在于,包括:预设集群中包含的分库分表;哈希代理层依据第一哈希映射关系,将数据写入对应的集群中;复制一集群,得到一原集群和一新集群;修改所述第一哈希映射关系中对应所述一集群的哈希映射关系为分别对应所述一原集群和所述一新集群的哈希映射关系。

【技术特征摘要】
1.数据库动态扩容的方法,其特征在于,包括:预设集群中包含的分库分表;哈希代理层依据第一哈希映射关系,将数据写入对应的集群中;复制一集群,得到一原集群和一新集群;修改所述第一哈希映射关系中对应所述一集群的哈希映射关系为分别对应所述一原集群和所述一新集群的哈希映射关系。2.如权利要求1所述的数据库动态扩容的方法,其特征在于,所述哈希代理层依据第一哈希映射关系,将数据写入对应的集群中,之后,还包括:依据第二哈希映射关系,将数据写入集群中对应的分库分表。3.如权利要求1所述的数据库动态扩容的方法,其特征在于,所述修改所述第一哈希映射关系中对应所述一集群的哈希映射关系为分别对应所述一原集群和所述一新集群的哈希映射关系,之后,...

【专利技术属性】
技术研发人员:刘德建林伟郭玉湖
申请(专利权)人:福建天泉教育科技有限公司
类型:发明
国别省市:福建,35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1