CN110750513A - 数据库动态扩容的方法、存储介质 - Google Patents

数据库动态扩容的方法、存储介质 Download PDF

Info

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
Application number
CN201910876231.1A
Other languages
English (en)
Inventor
刘德建
林伟
郭玉湖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujian Tianquan Educational Technology Ltd
Original Assignee
Fujian Tianquan Educational Technology Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujian Tianquan Educational Technology Ltd filed Critical Fujian Tianquan Educational Technology Ltd
Priority to CN201910876231.1A priority Critical patent/CN110750513A/zh
Publication of CN110750513A publication Critical patent/CN110750513A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace 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任意一项所述的数据库动态扩容的方法所包含的步骤。
CN201910876231.1A 2019-09-17 2019-09-17 数据库动态扩容的方法、存储介质 Pending CN110750513A (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111538718A (zh) * 2020-04-22 2020-08-14 杭州宇为科技有限公司 分布式系统的实体id生成和定位方法、扩容方法及设备

Citations (6)

* Cited by examiner, † Cited by third party
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 福建天泉教育科技有限公司 数据库动态扩容的方法、存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
伪全栈的JAVA工程师: "分库分表的面试题3", 《HTTPSWWW.CNBLOGS.COMDAIWEI1981P9416068.HTML》 *

Cited By (2)

* Cited by examiner, † Cited by third party
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