CN110750513A - 数据库动态扩容的方法、存储介质 - Google Patents
数据库动态扩容的方法、存储介质 Download PDFInfo
- Publication number
- CN110750513A CN110750513A CN201910876231.1A CN201910876231A CN110750513A CN 110750513 A CN110750513 A CN 110750513A CN 201910876231 A CN201910876231 A CN 201910876231A CN 110750513 A CN110750513 A CN 110750513A
- Authority
- CN
- China
- Prior art keywords
- sub
- database
- tables
- data
- starting
- 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/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- 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
- G06F16/2282—Tablespace storage structures; Management thereof
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)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供数据库动态扩容的方法、存储介质,方法包括:分别预设分库分表a和分库分表b;启用分库分表a;当分库分表a存储量高于预设值时,关闭分库分表a,启用分库分表b;读取token数据时,先从当前启用的分库分表中读取,若不存在,则从另一分库分表中读取。本发明实现动态地扩容,无需进行任何数据迁移;同时还具有实施便捷、实用性高的特点。
Description
技术领域
本发明涉及领域数据库存储领域,具体涉及数据库动态扩容的方法、存储介质。
背景技术
现在很多系统都存在登录这样的场景,而通用的登录场景中一般都是使用auth2的协议来进行。这样就存在有很多的token信息需要进行存储。如今大型的互联网公司都采用分库分表的形式来进行token数据的存储工作,通过一定的计算规则,采用hash(key)%分表数量这样的hash方式来实现分库分表。这样使用的话,会预先设置好分库分表的数量,如果后期有遇到数量暴增,需要进行数据库扩容的时候,就需要预先新增数据库,然后,迁移旧有token数据,并重新进行hash划分,将不同的数据迁移到不同的对应库表中。显然,每次token扩容迁移都是一个痛苦的过程。
发明内容
本发明所要解决的技术问题是:提供一种token数据库动态扩容的方法、存储介质,而无需进行数据迁移,更具便捷性。
为了解决上述技术问题,本发明采用的技术方案为:
数据库动态扩容的方法,包括:
分别预设分库分表a和分库分表b;
启用分库分表a;
当分库分表a存储量高于预设值时,关闭分库分表a,启用分库分表b;
读取token数据时,先从当前启用的分库分表中读取,若不存在,则从另一分库分表中读取。
本发明提供的另一个技术方案为:
一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现上述数据库动态扩容的方法所包含的步骤。
本发明的有益效果在于:提供两套分库分表功能,先启用分库分表a,在其存储量不足时,启用分库分表b而关闭分库分表a,并提供单写双读的方式,从而实现动态地扩容,无需进行任何数据迁移;同时还具有实施便捷、实用性高的特点。
附图说明
图1为本发明实施例一种数据库动态扩容的方法的流程示意图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
本发明最关键的构思在于:提供两套分库分表功能供切换使用,同时提供单写双读模式,从而实现动态地扩容。
请参照图1,本发明提供数据库动态扩容的方法,包括:
分别预设分库分表a和分库分表b;
启用分库分表a;
当分库分表a存储量高于预设值时,关闭分库分表a,启用分库分表b;
读取token数据时,先从当前启用的分库分表中读取,若不存在,则从另一分库分表中读取。
从上述描述可知,本发明的有益效果在于:提供两套分库分表功能,并采用单写双读的方式,可以实现动态扩容,并且无需进行任何的数据迁移,即可实现整体token存储量的扩容。
进一步地,所述启用分库分表a,具体为:
计算待存储的token数据对应的哈希值;
依据所述哈希值将所述待存储的token数据存储至分库分表a中对应的库和对应的表。
由上述描述可知,通过hash方式来进行分库分表的操作,能够确保写入和读取的准确性。
进一步地,还包括:
分别预设分库分表a和分库分表b对应的标志;
依据所述标志启用对应的分库分表。
由上述描述可知,通过分别配置对应的标志,并用于启闭,能保证操作的准确性,同时具备标示功能。
进一步地,还包括:
分库分表a的容量低于分库分表b的容量。
由上述描述可知,两个分库分表具有容量差,且容量低的先启用,能在初期具备最高的读写效率,而在有扩容需求时获取更大的容量,保证系统工作性能良好。
进一步地,还包括:
依据预设的分库分表a和分库分表b各自的数据过期周期,定期删除对应的分库分表中的数据。
由上述描述可知,基于token数据存在天然过期时间,能实现定期自动清除无效数据,腾出存储空间,为再次扩容做准备,从而实现动态地扩容。比如一般token数据时7天过期的,则数据在7天后将被自动删除。
进一步地,还包括:
分别预设分库分表a和分库分表b各自的数据过期期限;
分库分表a到达数据过期期限时,删除分库分表a中所有的库表;
新建分库分表a的库表,并增加其库表数量;
当分库分表b的存储量高于预设值时,关闭分库分表b,启用分库分表a。
由上述描述可知,在自动删除过期数据的同时,还能实现动态地、阶梯性地不断扩大分库分表的容量,以满足更大的存储需求。
本发明提供的另一个技术方案为:
一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现上述任意一项所述的数据库动态扩容的方法所包含的步骤。
进一步地,所述启用分库分表a,具体为:
计算待存储的token数据对应的哈希值;
依据所述哈希值将所述待存储的token数据存储至分库分表a中对应的库和对应的表。
进一步地,还包括:
分别预设分库分表a和分库分表b对应的标志;
依据所述标志启用对应的分库分表。
进一步地,还包括:
分库分表a的容量低于分库分表b的容量。
进一步地,还包括:
依据预设的分库分表a和分库分表b各自的数据过期周期,定期删除对应的分库分表中的数据。
进一步地,还包括:
分别预设分库分表a和分库分表b各自的数据过期期限;
分库分表a到达数据过期期限时,删除分库分表a中所有的库表;
新建分库分表a的库表,并增加其库表数量;
当分库分表b的存储量高于预设值时,关闭分库分表b,启用分库分表a。
本发明的实施例一为:
提供一种token数据库动态扩容的方法,适用于所有需要进行token存储场景的系统中。
首先,程序中预先定义好两套分库分表规则a1和b1,分别对应分库分表a和分库分表b,具体可以通过分别预设分库分表a和分库分表b来实现。
优选地,分库分表规则a1和b1都通过hash方式进行分库分表的操作。具体地,通过hash%key最终的结果来明确当前待存储的token数据将存储到哪一个库以及哪一张表中,其中,Key为记录的主键或者唯一标识。
优选地,分库分表a的容量低于分库分表b,分库分表a先启用,能在系统开始使用的初期,在读取时缩小搜索范围,从而获取最优的性能。
比如,分库分表a采用2个库,10张表进行token存储;分库分表b采用4个库,20张表来进行token存储。
优选地,对应两套分库分表,分别配置对应的标志,如A和B,以起到唯一标识作用。
其次,在系统最开始使用的时候,由于token数据的存储量较少,因此仅启用分库分表a,启用标志为A。启用后,所有token数据的存储都将采用a1规则,写入分库分表a中,此时,token读取的方式为:先读取a库中的数据,若不存在,则读取b库中的数据(系统初始化使用时,b库中数据为空)。
系统使用一段时间后,用户量增加(token数量与用户数量有正比关系,一个用户登录一次会生成新的token数据,token过期续约时,也会生成新的token),随之需要存储的token数据也就多了,在当前使用的分库分表a的存储量到达预设值或者预设比例的时候,便自动启用分库分表b,此时的启用标志为B,所有token数据存储均采用b1规则写入b库中;然而,在读取数据时,则先从分库分表b中读取,若分库分表b中不存在,则去分库分表a中读取,此即为单写双读模式。
至此,新的token数据已写入分库分表b中,同时,分库分表a中的数据又不需要进行迁移仍可以完全支持系统的使用,且分库分表b中的数据也已经实现了扩容,又原来的2库10表变成了4库20张表的存储量了。
最后,由于token数据天然只存在写入和读取两种状态,无更新以及删除操作。因此,可以通过设置数据过期周期,实现自动删除无效的数据。比如一般token数据是7天过期的,因此,设置数据过期周期为7天,7天之后,分库分表a中的所有token数据均过期,自动全部删除。
在此,提供两种数据到期处理模式,第一种,仅删除分库分表中过期的数据,而不删除分库分表,分库和分表可在下次扩容时直接使用,即存入数据。第二种,直接删除库表,为后续的再次扩容做准备。对应第二种方式,比如分库分表a中的数据到期,删除分库分表a中所有的分库和分表后,分库分表b容量不足需要再次扩容时,新建分库分表a的库表信息,且在原有基础上进行扩容,比如将原本的2个库,10张表扩容至8个库,40张表;并重新设置好启用标志为A,即可再次实现token存储的扩容;依次列推,在分库分表b被删除后新建时,也可进行翻倍扩容,以此实现系统token存储的阶梯性扩容,方式即简单实用又可扩展。
分库分表的容量以阶段递增的方式进行动态扩容,而非一开始便采用物理支持的最大容量进行分库分表的原因是:扩容需要物理存储空间的支持,现有技术使用的系统中,无法按照最大存储来设定,而都是按照业务预估来进行判断。比如,系统按照2亿用户为最大支撑数量,存储在mysql库表中,单表最大支持上限为1000w,则分2个库,单库使用10张分表来进行数据存储。在系统运行几年后,用户数量大幅增长,系统优化后已经能支持10亿的用户数量了,此时,是需要重新进行分库分表了,有多种分库分表方式,可以为2库,单库50张表,或者4库25张表,类似这样。一般系统不会按照物理机器的最大上限来进行分库分表设置,一个是没有必要分那么多,一个是按需进行分库分表,所以才会有随着业务数据量的增加而重新进行的分库分表。
实施例二
本实施例对应实施例一,提供一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现上述实施例一所述的数据库动态扩容的方法所包含的步骤,具体的步骤内容在此不进行复述,详情请参阅实施例一的记载。
综上所述,本发明提供的数据库动态扩容的方法,不仅实现无需迁移任何数据的情况在实现扩容;而且为动态方式地扩容,既可选择直接复用,也可选择阶梯方式递增,具有实用性极高,可用周期极长(达几年);进一步地,还具有不同分库分表切换准确性高、操作便捷等特点。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (7)
1.数据库动态扩容的方法,其特征在于,包括:
分别预设分库分表a和分库分表b;
启用分库分表a;
当分库分表a存储量高于预设值时,关闭分库分表a,启用分库分表b;
读取token数据时,先从当前启用的分库分表中读取,若不存在,则从另一分库分表中读取。
2.如权利要求1所述的数据库动态扩容的方法,其特征在于,所述启用分库分表a,具体为:
计算待存储的token数据对应的哈希值;
依据所述哈希值将所述待存储的token数据存储至分库分表a中对应的库和对应的表。
3.如权利要求1所述的数据库动态扩容的方法,其特征在于,还包括:
分别预设分库分表a和分库分表b对应的标志;
依据所述标志启用对应的分库分表。
4.如权利要求1所述的数据库动态扩容的方法,其特征在于,还包括:
分库分表a的容量低于分库分表b的容量。
5.如权利要求1所述的数据库动态扩容的方法,其特征在于,还包括:
依据预设的分库分表a和分库分表b各自的数据过期周期,定期删除对应的分库分表中的数据。
6.如权利要求1所述的数据库动态扩容的方法,其特征在于,还包括:
分别预设分库分表a和分库分表b各自的数据过期期限;
分库分表a到达数据过期期限时,删除分库分表a中所有的库表;
新建分库分表a的库表,并增加其库表数量;
当分库分表b的存储量高于预设值时,关闭分库分表b,启用分库分表a。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序在被处理器执行时,能够实现上述权利要求1-6任意一项所述的数据库动态扩容的方法所包含的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910876231.1A CN110750513A (zh) | 2019-09-17 | 2019-09-17 | 数据库动态扩容的方法、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910876231.1A CN110750513A (zh) | 2019-09-17 | 2019-09-17 | 数据库动态扩容的方法、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110750513A true CN110750513A (zh) | 2020-02-04 |
Family
ID=69276562
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910876231.1A Pending CN110750513A (zh) | 2019-09-17 | 2019-09-17 | 数据库动态扩容的方法、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110750513A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111538718A (zh) * | 2020-04-22 | 2020-08-14 | 杭州宇为科技有限公司 | 分布式系统的实体id生成和定位方法、扩容方法及设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103714097A (zh) * | 2012-10-09 | 2014-04-09 | 阿里巴巴集团控股有限公司 | 一种访问数据库的方法和装置 |
CN106202524A (zh) * | 2016-07-22 | 2016-12-07 | 努比亚技术有限公司 | 数据库及其分表装置和方法 |
CN106294421A (zh) * | 2015-05-25 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种数据写入、读取方法及装置 |
CN109842621A (zh) * | 2019-01-25 | 2019-06-04 | 福建天泉教育科技有限公司 | 一种减少token存储数量的方法及终端 |
CN110134531A (zh) * | 2019-05-06 | 2019-08-16 | 广州华多网络科技有限公司 | 虚拟资产流转数据的处理方法、装置和计算机设备 |
CN110222030A (zh) * | 2019-05-13 | 2019-09-10 | 福建天泉教育科技有限公司 | 数据库动态扩容的方法、存储介质 |
-
2019
- 2019-09-17 CN CN201910876231.1A patent/CN110750513A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103714097A (zh) * | 2012-10-09 | 2014-04-09 | 阿里巴巴集团控股有限公司 | 一种访问数据库的方法和装置 |
CN106294421A (zh) * | 2015-05-25 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种数据写入、读取方法及装置 |
CN106202524A (zh) * | 2016-07-22 | 2016-12-07 | 努比亚技术有限公司 | 数据库及其分表装置和方法 |
CN109842621A (zh) * | 2019-01-25 | 2019-06-04 | 福建天泉教育科技有限公司 | 一种减少token存储数量的方法及终端 |
CN110134531A (zh) * | 2019-05-06 | 2019-08-16 | 广州华多网络科技有限公司 | 虚拟资产流转数据的处理方法、装置和计算机设备 |
CN110222030A (zh) * | 2019-05-13 | 2019-09-10 | 福建天泉教育科技有限公司 | 数据库动态扩容的方法、存储介质 |
Non-Patent Citations (1)
Title |
---|
伪全栈的JAVA工程师: "分库分表的面试题3", 《HTTPSWWW.CNBLOGS.COMDAIWEI1981P9416068.HTML》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111538718A (zh) * | 2020-04-22 | 2020-08-14 | 杭州宇为科技有限公司 | 分布式系统的实体id生成和定位方法、扩容方法及设备 |
CN111538718B (zh) * | 2020-04-22 | 2023-10-27 | 杭州宇为科技有限公司 | 分布式系统的实体id生成和定位方法、扩容方法及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107818115B (zh) | 一种处理数据表的方法及装置 | |
US8335889B2 (en) | Content addressable storage systems and methods employing searchable blocks | |
EP2069979B1 (en) | Dynamic fragment mapping | |
US9418094B2 (en) | Method and apparatus for performing multi-stage table updates | |
CN110222030B (zh) | 数据库动态扩容的方法、存储介质 | |
US20100114843A1 (en) | Index Compression In Databases | |
JP3250544B2 (ja) | 転送先検索方法、転送先検索装置、検索テーブル記録媒体及び検索プログラム記録媒体 | |
CN111324665B (zh) | 一种日志回放方法及装置 | |
JP2009510552A (ja) | フラッシュメモリメディアにおけるデータ管理方法 | |
KR19990070838A (ko) | 데이터 베이스 관리 시스템과 정보 검색의 밀결합을 위하여 서브 인덱스와 대용량 객체를 이용한 역 인덱스 저장 구조 | |
KR102431806B1 (ko) | 대량 오디오 지문 데이터베이스의 온라인 실시간 업데이트를 구축하는 방법과 장치 | |
JPH02217940A (ja) | データベース・アクセス・システム | |
US8296270B2 (en) | Adaptive logging apparatus and method | |
CN113535670B (zh) | 一种虚拟化资源镜像存储系统及其实现方法 | |
CN104714957A (zh) | 一种表结构的变更方法及装置 | |
CN110019644B (zh) | 对话实现中的搜索方法、装置和计算机可读存储介质 | |
CN110750513A (zh) | 数据库动态扩容的方法、存储介质 | |
CN104516945A (zh) | 一种基于关系数据库的hdfs元数据存储方法 | |
JP4854973B2 (ja) | 記憶制御プログラム、記憶制御方法、記憶制御装置および記憶制御システム | |
CN111625543B (zh) | 一种基于HBase表实现全局单调递增的序列的方法 | |
CN111459408A (zh) | 一种提升dram中数据查找速率的方法及系统 | |
CN110532243A (zh) | 数据处理方法、装置和电子设备 | |
EP2164005B1 (en) | Content addressable storage systems and methods employing searchable blocks | |
JP2002140218A (ja) | データ処理方法、コンピュータ読み取り可能な記録媒体及びデータ処理装置 | |
CN111459949B (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 |