CN112162981A - 一种自适应的路由分库分表方法及系统 - Google Patents
一种自适应的路由分库分表方法及系统 Download PDFInfo
- Publication number
- CN112162981A CN112162981A CN202010933852.1A CN202010933852A CN112162981A CN 112162981 A CN112162981 A CN 112162981A CN 202010933852 A CN202010933852 A CN 202010933852A CN 112162981 A CN112162981 A CN 112162981A
- Authority
- CN
- China
- Prior art keywords
- sub
- record
- database
- routing
- acquiring
- 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
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000013507 mapping Methods 0.000 claims abstract description 26
- 238000004590 computer program Methods 0.000 claims description 13
- 230000003044 adaptive effect Effects 0.000 claims description 10
- 230000004048 modification Effects 0.000 claims description 5
- 238000012986 modification Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008447 perception Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/242—Query formulation
- G06F16/2428—Query predicate definition using graphical user interfaces, including menus and forms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种自适应的路由分库分表方法,包括:建立规则表,维护分库分表数据量;建立业务维度与分库分表的映射关系;根据映射关系新增业务维度值的记录;根据规则表以及第一预设规则获取分库分表记录;插入所述业务维度值及所述分库分表至路由表中;根据所述路由表获取所述记录;查询、修改、或删除所述业务维度值的所述记录;根据所述业务维度值从所述路由表中获取指定的分库分表,获取找到记录;根据所述找到记录获取所述记录。本申请考虑分库分表业务维度的权重,维护分库分表的每个表对应的数据量,建立业务维度值和分库、分表的映射关系,根据映射关系进行路由,从而找到指定的记录,避免hash分表带来的分库分表数据量不均衡问题。
Description
技术领域
本申请涉及数据库查询领域,具体而言,涉及一种自适应的路由分库分表方法。
背景技术
在信息化日益成熟的今天,运用互联网来实现各行业平台化已经成为一种趋势。平台化进程中将面临的一个比较重要的难点问题是大数据量业务数据存储问题。本方法主要应用于大数据量业务存储的一种自适应的分库分表的场景。面对日益增长的业务数据,分库分表是一种有效解决存储和查询瓶颈的技术手段。传统分库分表方式一般采用hash分库分表的方式,根据某一个业务维度按照hash值进行分级路由,先找到对应的分库,再找到对应的分表,从而完成数据的增删改查操作。上述方法的缺点是:
(1)未考虑分库分表业务维度的权重(一个业务维度的值对应的分库分表记录数可能差异很大),仅仅依赖特定的hash算法,可能造成分库或分表的数据量不均衡。
(2)从单库单表到多库多表再到后续的扩容,都需要双写(老表、新分表)甚至停机来完成数据迁移工作。整体流程周期会比较长,对业务有较大影响。对于一些需要7*24小时服务的场景中,停机是不可接受的。
发明内容
本申请的主要目的在于提供一种自适应的路由分库分表方法,包括:
建立规则表,维护分库分表数据量;
建立业务维度与分库分表的映射关系;
根据所述映射关系新增业务维度值的记录;
根据所述规则表以及第一预设规则获取分库分表记录;
插入所述业务维度值及所述分库分表至路由表中;
根据所述路由表获取所述记录;
查询、修改、或删除所述业务维度值的所述记录;
根据所述业务维度值从所述路由表中获取指定的分库分表,获取找到记录;
根据所述找到记录获取所述记录。
可选地,第一预设规则为:获取数量最小的分库分表记录。
可选地,根据所述找到记录获取所述记录包括:
当所述找到记录为是时,根据所述分库分表执行对应的所述记录。
可选地,根据所述找到记录获取所述记录包括:
当所述找到记录为否时,根据默认的单库单表执行对应的所述记录。
根据本申请的另一个方面,还提供了一种自适应的路由分库分表系统,包括:
规则表建立模块,用于建立规则表,维护分库分表数据量;
映射关系建立模块,用于建立业务维度与分库分表的映射关系;
新增模块,用于根据所述映射关系新增业务维度值的记录;
分库分表记录获取模块,用于根据所述规则表以及第一预设规则获取分库分表记录;
插入模块,用于插入所述业务维度值及所述分库分表至路由表中;
第一记录获取模块,用于根据所述路由表获取所述记录;
修改模块,用于查询、修改、或删除所述业务维度值的所述记录;
找到记录获取模块,用于根据所述业务维度值从所述路由表中获取指定的分库分表,获取找到记录;
第二记录获取模块,用于根据所述找到记录获取所述记录。
可选地,第一预设规则为:获取数量最小的分库分表记录。
可选地,根据所述找到记录获取所述记录包括:
当所述找到记录为是时,根据所述分库分表执行对应的所述记录。
本申请还公开了一种计算机设备,包括存储器、处理器和存储在所述存储器内并能由所述处理器运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的方法。
本申请还公开了一种计算机可读存储介质,非易失性可读存储介质,其内存储有计算机程序,所述计算机程序在由处理器执行时实现上述任一项所述的方法。
本申请还公开了一种计算机程序产品,包括计算机可读代码,当所述计算机可读代码由计算机设备执行时,导致所述计算机设备执行上述任一项所述的方法。
与现有技术相比,本申请具有如下有益效果:
考虑分库分表业务维度的权重,维护分库分表的每个表对应的数据量,建立业务维度值和分库、分表的映射关系,根据这个映射关系进行路由,从而找到指定的记录。从而避免hash分表带来的分库分表数据量不均衡问题。
因为是维护了业务维度与分库分表的映射关系,后续从单库单表到多库多表以及扩容都不需要迁移历史数据,能快速、自适应、无感知完成扩容操作。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,使得本申请的其它特征、目的和有益效果变得更明显。本申请的示意性实施例附图及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请一个实施例的自适应的路由分库分表方法的流程示意图;
图2是根据本申请一个实施例的自适应的路由分库分表方法的流程示意图;
图3是根据本申请一个实施例的自适应的路由分库分表方法的流程示意图;
图4是根据本申请一个实施例的计算机设备的示意图;以及
图5是根据本申请一个实施例的计算机可读存储介质的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
请参照图1-图3,本申请一实施例提供了一种自适应的路由分库分表方法,包括:
S1:建立规则表,维护分库分表数据量;
S2:建立业务维度与分库分表的映射关系;
S3:根据所述映射关系新增业务维度值的记录;
S4:根据所述规则表以及第一预设规则获取分库分表记录;
S5:插入所述业务维度值及所述分库分表至路由表中;
S6:根据所述路由表获取所述记录;
S7:查询、修改、或删除所述业务维度值的所述记录;
S8:根据所述业务维度值从所述路由表中获取指定的分库分表,获取找到记录;
S9:根据所述找到记录获取所述记录。
1)建立规则表,维护分库分表数据量(表rule):
字段 | 描述 | 备注 |
id | 主键 | |
sub_db | 分库索引值 | 例:db_1 |
sub_table | 分表索引值 | 例:table_1 |
num | 分表数据量 |
2)建立业务维度与分库分表的映射关系(路由表route)
字段 | 描述 | 备注 |
id | 主键 | |
biz_code | 业务维度值 | 例:订单号 |
sub_db | 分库索引值 | 例:db_1 |
sub_table | 分表索引值 | 例:table_1 |
3)具体流程如下:
(1)、请参照图2,新增业务维度值A的记录R的流程如下:
新增记录的流程的核心是通过找规则表里数据量最小的分表,然后将新增的业务维度值R与这个分表建立映射关系,从而保证各个分库各个分表的数据量差异很小,实现数据分布均匀。扩容时只需要新增规则表(rule)数据,新增的数据会自动按照规则路由到新增的分库分表中,从而实现自适应扩容。
(2)、请参照图3,查询、修改、删除业务维度值A的记录R流程如下:
查询、修改、删除流程中通过业务维度值R先从路由表(route)中找到指定分库分表。如果找到,则根据这个分库分表进行操作;否则,去原始的单库单表进行相应操作。此流程保证存储由单库单表到多库多表及扩容时不需要对历史数据进行迁移,从而降低对业务的影响,实现快速、自适应、无感知扩容。
本申请一实施例中,第一预设规则为:获取数量最小的分库分表记录。
本申请一实施例中,根据所述找到记录获取所述记录包括:
当所述找到记录为是时,根据所述分库分表执行对应的所述记录。
本申请一实施例中,根据所述找到记录获取所述记录包括:
当所述找到记录为否时,根据默认的单库单表执行对应的所述记录。
本申请还提供了一种自适应的路由分库分表系统,包括:
规则表建立模块,用于建立规则表,维护分库分表数据量;
映射关系建立模块,用于建立业务维度与分库分表的映射关系;
新增模块,用于根据所述映射关系新增业务维度值的记录;
分库分表记录获取模块,用于根据所述规则表以及第一预设规则获取分库分表记录;
插入模块,用于插入所述业务维度值及所述分库分表至路由表中;
第一记录获取模块,用于根据所述路由表获取所述记录;
修改模块,用于查询、修改、或删除所述业务维度值的所述记录;
找到记录获取模块,用于根据所述业务维度值从所述路由表中获取指定的分库分表,获取找到记录;
第二记录获取模块,用于根据所述找到记录获取所述记录。
与现有技术相比,本申请具有如下有益效果:
1)考虑分库分表的业务维度R权重,维护分库分表数据量的规则表。取数据量最小的分库分表与新增的数据建立映射关系,从而保证各分库分表数据量基本均衡。
2)存储业务维度R与分库分表的映射关系,能够完全实现快速、自适应、无感知扩容操作,不需要迁移历史数据。
请参照图4,本申请还提供了一种计算机设备,包括存储器、处理器和存储在所述存储器内并能由所述处理器运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的方法。
请参照图5,一种计算机可读存储介质,非易失性可读存储介质,其内存储有计算机程序,所述计算机程序在由处理器执行时实现上述任一项所述的方法。
一种计算机程序产品,包括计算机可读代码,当所述计算机可读代码由计算机设备执行时,导致所述计算机设备执行上述任一项所述的方法。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种自适应的路由分库分表方法,其特征在于,包括:
建立规则表,维护分库分表数据量;
建立业务维度与分库分表的映射关系;
根据所述映射关系新增业务维度值的记录;
根据所述规则表以及第一预设规则获取分库分表记录;
插入所述业务维度值及所述分库分表至路由表中;
根据所述路由表获取所述记录;
查询、修改、或删除所述业务维度值的所述记录;
根据所述业务维度值从所述路由表中获取指定的分库分表,获取找到记录;
根据所述找到记录获取所述记录。
2.根据权利要求1所述的自适应的路由分库分表方法,其特征在于,第一预设规则为:获取数量最小的分库分表记录。
3.根据权利要求2所述的自适应的路由分库分表方法,其特征在于,根据所述找到记录获取所述记录包括:
当所述找到记录为是时,根据所述分库分表执行对应的所述记录。
4.根据权利要求3所述的自适应的路由分库分表方法,其特征在于,根据所述找到记录获取所述记录包括:
当所述找到记录为否时,根据默认的单库单表执行对应的所述记录。
5.一种自适应的路由分库分表系统,其特征在于,包括:
规则表建立模块,用于建立规则表,维护分库分表数据量;
映射关系建立模块,用于建立业务维度与分库分表的映射关系;
新增模块,用于根据所述映射关系新增业务维度值的记录;
分库分表记录获取模块,用于根据所述规则表以及第一预设规则获取分库分表记录;
插入模块,用于插入所述业务维度值及所述分库分表至路由表中;
第一记录获取模块,用于根据所述路由表获取所述记录;
修改模块,用于查询、修改、或删除所述业务维度值的所述记录;
找到记录获取模块,用于根据所述业务维度值从所述路由表中获取指定的分库分表,获取找到记录;
第二记录获取模块,用于根据所述找到记录获取所述记录。
6.根据权利要求5所述的自适应的路由分库分表系统,其特征在于,第一预设规则为:获取数量最小的分库分表记录。
7.根据权利要求6所述的自适应的路由分库分表系统方法,其特征在于,根据所述找到记录获取所述记录包括:
当所述找到记录为是时,根据所述分库分表执行对应的所述记录。
8.一种计算机设备,包括存储器、处理器和存储在所述存储器内并能由所述处理器运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-4中任一项所述的方法。
9.一种计算机可读存储介质,非易失性可读存储介质,其内存储有计算机程序,其特征在于,所述计算机程序在由处理器执行时实现如权利要求1-4中任一项所述的方法。
10.一种计算机程序产品,包括计算机可读代码,其特征在于,当所述计算机可读代码由计算机设备执行时,导致所述计算机设备执行权利要求1-4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010933852.1A CN112162981A (zh) | 2020-09-08 | 2020-09-08 | 一种自适应的路由分库分表方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010933852.1A CN112162981A (zh) | 2020-09-08 | 2020-09-08 | 一种自适应的路由分库分表方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112162981A true CN112162981A (zh) | 2021-01-01 |
Family
ID=73859239
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010933852.1A Pending CN112162981A (zh) | 2020-09-08 | 2020-09-08 | 一种自适应的路由分库分表方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112162981A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407547A (zh) * | 2021-07-17 | 2021-09-17 | 广州汇思信息科技股份有限公司 | 一种数据库的适配装置、装置、计算机设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095393A (zh) * | 2015-06-30 | 2015-11-25 | 努比亚技术有限公司 | 一种数据存储方法及装置 |
CN106528579A (zh) * | 2015-09-15 | 2017-03-22 | 阿里巴巴集团控股有限公司 | 一种基于分库分表结构数据库的查询方法、装置及系统 |
CN106909597A (zh) * | 2016-06-30 | 2017-06-30 | 阿里巴巴集团控股有限公司 | 一种数据库迁移方法和装置 |
CN107622079A (zh) * | 2017-07-28 | 2018-01-23 | 阿里巴巴集团控股有限公司 | 数据存储、查询方法及装置 |
US20190121901A1 (en) * | 2017-10-25 | 2019-04-25 | International Business Machines Corporation | Database Sharding |
CN111309810A (zh) * | 2020-02-20 | 2020-06-19 | 苏宁云计算有限公司 | 基于小样本key值的分库分表方法及系统 |
-
2020
- 2020-09-08 CN CN202010933852.1A patent/CN112162981A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095393A (zh) * | 2015-06-30 | 2015-11-25 | 努比亚技术有限公司 | 一种数据存储方法及装置 |
CN106528579A (zh) * | 2015-09-15 | 2017-03-22 | 阿里巴巴集团控股有限公司 | 一种基于分库分表结构数据库的查询方法、装置及系统 |
CN106909597A (zh) * | 2016-06-30 | 2017-06-30 | 阿里巴巴集团控股有限公司 | 一种数据库迁移方法和装置 |
CN107622079A (zh) * | 2017-07-28 | 2018-01-23 | 阿里巴巴集团控股有限公司 | 数据存储、查询方法及装置 |
US20190121901A1 (en) * | 2017-10-25 | 2019-04-25 | International Business Machines Corporation | Database Sharding |
CN111309810A (zh) * | 2020-02-20 | 2020-06-19 | 苏宁云计算有限公司 | 基于小样本key值的分库分表方法及系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407547A (zh) * | 2021-07-17 | 2021-09-17 | 广州汇思信息科技股份有限公司 | 一种数据库的适配装置、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102103130B1 (ko) | 서비스 데이터를 블록체인에 기입하기 위한 방법 및 장치, 그리고 서비스 하위세트를 결정하기 위한 방법 | |
US10467245B2 (en) | System and methods for mapping and searching objects in multidimensional space | |
US8799284B2 (en) | Method for automated scaling of a massive parallel processing (MPP) database | |
US6411957B1 (en) | System and method of organizing nodes within a tree structure | |
US9195701B2 (en) | System and method for flexible distributed massively parallel processing (MPP) database | |
JP6928677B2 (ja) | オンライン分析処理を行うためのデータ処理方法及び装置 | |
CN102799628A (zh) | 在key-value数据库中进行数据分区的方法和装置 | |
CN105488050A (zh) | 一种数据库多索引方法、装置及系统 | |
CN110399368B (zh) | 一种定制数据表的方法、数据操作方法及装置 | |
CN107967361A (zh) | 一种数据库的增量处理方法和系统 | |
CN106815258A (zh) | 一种数据存储方法和协调节点 | |
CN104871153A (zh) | 用于灵活的分布式大规模并行处理(mpp)数据库的系统和方法 | |
CN108427736A (zh) | 一种用于查询数据的方法 | |
CN102193990A (zh) | 一种图形数据库及其实现方法 | |
CN112395293A (zh) | 分库分表方法、分库分表装置、分库分表设备及存储介质 | |
CN106933891A (zh) | 访问分布式数据库的方法和分布式数据服务的装置 | |
CN104346458A (zh) | 数据存储方法和存储设备 | |
CN109388636A (zh) | 业务数据插入数据库方法、装置、计算机设备及存储介质 | |
CN104598652B (zh) | 一种数据库查询方法及装置 | |
CN105389394A (zh) | 基于多个数据库集群的数据请求处理方法及装置 | |
CN112162981A (zh) | 一种自适应的路由分库分表方法及系统 | |
US9239852B1 (en) | Item collections | |
CN113672618A (zh) | 一种基于元数据表的多租户数据处理方法及装置 | |
CN116361297B (zh) | 一种分库分表方法、装置、设备及存储介质 | |
CN111259062B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210101 |