CN105677761A - 一种数据切分的方法及系统 - Google Patents
一种数据切分的方法及系统 Download PDFInfo
- Publication number
- CN105677761A CN105677761A CN201511021428.5A CN201511021428A CN105677761A CN 105677761 A CN105677761 A CN 105677761A CN 201511021428 A CN201511021428 A CN 201511021428A CN 105677761 A CN105677761 A CN 105677761A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- read
- subregion
- cutting
- 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
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据切分的方法,包括:根据数据的实际情况,选择相应的分区模式进行数据切分;当需要确保数据库的稳定性并且业务数据属于读多写少的情况,则根据应用发起的数据切分请求,选择读写分离的分区模式对数据进行切分;当单台数据库的硬件资源足够,但是单张表的数据超过阈值时,则根据应用发起的数据切分请求,选择单库分表的分区模式对数据进行切分;当单台数据库的硬件资源不足时,则根据应用发起的数据切分请求,选择多库分表的分区模式对数据进行切分;该方法能够在数据量很大,数据急速膨胀的情况下,提高数据库的读写性能,提高数据库的效率;本发明还公开了一种数据切分的系统。
Description
技术领域
本发明涉及数据处理领域,特别涉及一种数据切分的方法及系统。
背景技术
随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,日益增长的业务数据,无疑对数据库造成了相当大的负载,同时要对于系统的稳定性和扩展性提出很高的要求。随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据操作的开销也会越来越大;另外,无论怎样升级硬件资源,单台服务器的资源(CPU、磁盘、内存、网络IO、事务数、连接数)总是有限的,最终数据库所能承载的数据量、数据处理能力都将遭遇瓶颈。
如何缓解数据量的不断增长对数据库的压力,是本领域技术人员需要解决的技术问题。
发明内容
本发明的目的是提供一种数据切分的方法及系统,该方法及系统能够在数据量很大,数据急速膨胀的情况下,提高数据库的读写性能,提高数据库的效率。
为解决上述技术问题,本发明提供一种数据切分的方法,包括:根据数据的实际情况,选择相应的分区模式进行数据切分;
当需要确保数据库的稳定性并且业务数据属于读多写少的情况,则根据应用发起的数据切分请求,选择读写分离的分区模式对数据进行切分;
当单台数据库的硬件资源足够,但是单张表的数据超过阈值时,则根据应用发起的数据切分请求,选择单库分表的分区模式对数据进行切分;
当单台数据库的硬件资源不足时,则根据应用发起的数据切分请求,选择多库分表的分区模式对数据进行切分。
其中,读写分离的分区模式对数据进行切分包括:
写操作时,确定配置为writeable=true对应的数据源,并将所述数据源中的数据插入到写数据库中;
将所述写数据库中的数据复制到读数据库中;
读操作时,确定配置为writeable=false对应的读数据库。
其中,读操作时,确定配置为writeable=false对应的读数据库包括:
读操作时,确定配置为writeable=false对应的读数据库,并利用负载均衡策略算法从所述读数据库中确定需要的读数据库。
其中,单库分表的分区模式对数据进行切分包括:
根据分区规则,建立分区逻辑表,其中,所述分区逻辑表定义规则实现类,表名以及分区范围;
根据所述分区逻辑表,建立所述分区逻辑表与物理表之间的关联关系,确定分片范围,并根据分片规则确定每个分片绑定的数据源;
建立数据连接,对数据库的不同表进行读写操作。
其中,多库分表的分区模式对数据进行切分包括:
根据分区规则,建立分区逻辑表,其中,所述分区逻辑表定义规则实现类,表名以及分区范围;
根据所述分区逻辑表,建立所述分区逻辑表与物理表之间的关联关系,确定分片范围,并根据分片规则确定每个分片绑定的数据源,其中所述数据源为不同数据库的数据源;
建立数据连接,对不同数据库的数据源对应的不同表进行读写操作。
本发明提供一种数据切分的系统,包括:根据数据的实际情况,选择相应的分区模式进行数据切分;
读写分离模块,用于当需要确保数据库的稳定性并且业务数据属于读多写少的情况,则根据应用发起的数据切分请求,选择读写分离的分区模式对数据进行切分;
单库分表模块,用于当单台数据库的硬件资源足够,但是单张表的数据超过阈值时,则根据应用发起的数据切分请求,选择单库分表的分区模式对数据进行切分;
多库分表模块,用于当单台数据库的硬件资源不足时,则根据应用发起的数据切分请求,选择多库分表的分区模式对数据进行切分。
其中,所述读写分离模块包括:
写单元,用于进行写操作时,确定配置为writeable=true对应的数据源,并将所述数据源中的数据插入到写数据库中;
复制单元,用于将所述写数据库中的数据复制到读数据库中;
读单元,用于进行读操作时,确定配置为writeable=false对应的读数据库。
其中,所述读单元包括:
读操作时,确定配置为writeable=false对应的读数据库,并利用负载均衡策略算法从所述读数据库中确定需要的读数据库。
其中,所述单库分表模块包括:
单表分区单元,用于根据分区规则,建立分区逻辑表,其中,所述分区逻辑表定义规则实现类,表名以及分区范围;
单表分片单元,用于根据所述分区逻辑表,建立所述分区逻辑表与物理表之间的关联关系,确定分片范围,并根据分片规则确定每个分片绑定的数据源;
单表数据连接单元,用于建立数据连接,对数据库的不同表进行读写操作。
其中,所述多库分表模块包括:
多表分区单元,用于根据分区规则,建立分区逻辑表,其中,所述分区逻辑表定义规则实现类,表名以及分区范围;
多表分片单元,用于根据所述分区逻辑表,建立所述分区逻辑表与物理表之间的关联关系,确定分片范围,并根据分片规则确定每个分片绑定的数据源,其中所述数据源为不同数据库的数据源;
多表数据连接单元,用于建立数据连接,对不同数据库的数据源对应的不同表进行读写操作。
本发明所提供的数据切分的方法,包括:根据数据的实际情况,选择相应的分区模式进行数据切分;当需要确保数据库的稳定性并且业务数据属于读多写少的情况,则根据应用发起的数据切分请求,选择读写分离的分区模式对数据进行切分;当单台数据库的硬件资源足够,但是单张表的数据超过阈值时,则根据应用发起的数据切分请求,选择单库分表的分区模式对数据进行切分;当单台数据库的硬件资源不足时,则根据应用发起的数据切分请求,选择多库分表的分区模式对数据进行切分;
将逻辑数据库表,按照读写分离、单库分表、多库分表不同拆分方法拆分到多个物理数据库或物理数据库的多张表中,实现了数据库的水平扩展;因此,该方法能够在数据量很大,数据急速膨胀的情况下,提高数据库的读写性能,提高数据库的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例所提供的数据切分的方法的流程图;
图2为本发明实施例所提供的读写分离的分区模式对数据进行切分的示意图;
图3为本发明实施例所提供的单库分表的分区模式对数据进行切分的示意图;
图4为本发明实施例所提供的多库分表的分区模式对数据进行切分的示意图;
图5为本发明实施例所提供的数据切分的系统的结构框图。
具体实施方式
本发明的核心是提供一种数据切分的方法及系统,该方法及系统能够在数据量很大,数据急速膨胀的情况下,提高数据库的读写性能,提高数据库的效率。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明实施例所提供的数据切分的方法的流程图;该方法包括:
根据数据的实际情况,选择相应的分区模式进行数据切分;
其中,数据切分是指对数据通过一系列的切分规则,将数据分布到多个数据库或者一个数据库的不同表中。由于数据切分,分割了概念数据库,使数据存取本地化,这样做有几个好处,每个节点只处理数据库的一部分,可以缓解对CPU、I/O以及内存等系统资源的竞争;其次,本地化减少了远程访问延迟,访问延迟在广域网中经常出现;再者,系统中的冗余数据,提高了系统的可靠性和可用性,然而和数据库本地化也带来的好处并存的还有其带来的问题,例如,数据的同步更新问题,只有适当划分数据和分配数据才能从中得到减少竞争、减少通信开销以及获得系统可靠性和可用性的最大优势。
其中,本发明的数据切分方法可以分为主从模式和分片模式。主从模式即读写分离,分片后的数据完全一致;分片模式又分为单库分表和多库分表,分片后的数据是不一致的,各分片的数据合集才是一个完整的记录。选择的原则可以依据数据的实际情况和用户的需求进行。
s100、当需要确保数据库的稳定性并且业务数据属于读多写少的情况,则根据应用发起的数据切分请求,选择读写分离的分区模式对数据进行切分;
其中,读写分离的分区模式是将数据库的写操作集中到一个数据库中,而一些读操作则分解到其它数据库中。通过读写分离就可以将数据库的处理压力分解到多个数据库上,从而提升数据的处理能力。
基于上述读写分离的优点,因此为了可以确保数据库的稳定性以及对于某些业务数据是读多写少的情况,则可以对数据库进行读写分离。
读写分离的分区模式的具体方可以是,找到写数据,将写数据写入到相应的数据库中,在将数据复制到读数据库中,由于考虑到复制数据的一致性可以引入Quorum算法,假设N为数据复制的节点数量,R为成功读操作的最小节点数,W为成功写操作的最小节点数,如果W+R>N,写操作和读操作请求节点集会存在重叠,这样就可以保证强一致性。由于读数据库可以不止一个,因此,可以根据数据实际情况确定相应的规则进行读数据库的确定。例如可以通过参数readWeight设置读权重值,数值越大默认被分配的读取任务越大。也可以利用负载均衡策略算法计算需要的读数据库,等方式进行读数据库的确定。
s110、当单台数据库的硬件资源足够,但是单张表的数据超过阈值时,则根据应用发起的数据切分请求,选择单库分表的分区模式对数据进行切分;
目前数据分片的规则主要有水平分片、垂直分片和混合分片。
水平分片:按特定条件把全局关系的所有元组分成若干个互不相交的子集,每一个子集为全局关系的逻辑片段,简称为片段。它们通过对全局关系施加选择运算得到,并可通过对这些片段的合并操作来恢复该全局关系。
垂直分片,将全局关系(表或视图)的属性集(字段集)中的若干属性作投影运算,即得到全局关系的一个垂直分片,要求全局关系的每一个属性至少映射到一个垂直片段中,且每一个垂直分片都包含全局关系的键。
混合分片:水平分片和垂直分片的混合。
数据库数据分片应满足的原则有第一,完备性原则:全局关系中的所有数据项必须映射到各个分片中,不允许有属于全局关系的数据却不属于其它的任何一个片段。第二,重构性原则:所有的数据分片必须能重构(逆操作)成全局关系。因为数据片段是分布式数据库的基本关系,通过重构操作才能建立全局数据库。这是分布式数据库的基本要求。第三,不相交原则:不相交原则不是必需的,但是有这条原则可以使划分不致引起太复杂的冗余。划分时不想交,则分配的冗余可以得到控制。有时允许键属性相交,使重构操作简单。
单库分表是将原本存储于一个数据表按照一定的规则拆分成不同的子表存储到同一个数据库中。单库分表大大提高了数据查询速率。
由于一张表的数据达到一定量时,数据操作性能急剧下降。因此,为了单库分表的效果比较好,其适用的条件可以是单台数据库的硬件资源还可以支持数据,但是单张表的数据已经超过阈值。为了提高数据操作性能,需要进行单库分表。
单库分表的分区模式具体方式可以是该分区将包含逻辑表的SQL语句;再根据实际逻辑关系进行数据分片。
s120、当单台数据库的硬件资源不足时,则根据应用发起的数据切分请求,选择多库分表的分区模式对数据进行切分。
其中,多库分表是将原本存储于一个数据库的数据表按照一定的规则拆分到不同的数据库中。
使用条件为单台数据库硬件资源有限,单台服务器的资源如CPU、内存、网络IO资源、连接数等资源紧张。通过多库分表有效的解决了库中表与表之间的IO争夺。
其中多酷分表和单库分表的流程基本相同,只是分片规则将数据源分别绑定到不同的数据库中,即读写操作均在不同的数据库中完成。
基于上述技术方案,本发明实施例提供的数据切分的方法,该方法将逻辑数据库表,按照读写分离、单库分表、多库分表不同拆分方法拆分到多个物理数据库或物理数据库的多张表中,实现了数据库的水平扩展;因此,该方法能够在数据量很大,数据急速膨胀的情况下,提高数据库的读写性能,提高数据库的效率。且本发明数据切分方法的实现机制脱离了与其他技术框架的绑定,简单易用,容易扩展,不受现有技术框架的制约,降低了应用维护成本;不需要额外的消息通讯,节省了消息通信的通信量,且支持多种常见数据库,成本较低,保证了数据切分后减少通信开销以及提高数据库访问性能的作用。
可选的,上述实施例中读写分离的分区模式对数据进行切分可以包括:
写操作时,确定配置为writeable=true对应的数据源,并将所述数据源中的数据插入到写数据库中;
将所述写数据库中的数据复制到读数据库中;
其中,这里可以利用Quorum算法来确保渎职的一致性。
读操作时,确定配置为writeable=false对应的读数据库。
其中,优选的,确定配置为writeable=false对应的读数据库可以包括:
读操作时,确定配置为writeable=false对应的读数据库,并利用负载均衡策略算法从所述读数据库中确定需要的读数据库。
其中,由于服务器的处理能力存在一定的差异,负载均衡策略算法可以采取加权最小连接算法。假设有一组服务器S={S1,S2,…,Sn},W(Sk)为分配给服务器Sk的权值,其中可以通过参数readWeight设置读权重值,数值越大默认被分配的读取任务越大,C(Sk)为服务器的当前连接数,当前新连接请求发送到服务器m由如下条件决定C(Sm)/W(Sm)=min{C(Sk)/W(Sk)}(k=1,2,…,n)。通过该方式可以提高读数据库的效率。具体过程可以参照图2,图2为本发明实施例所提供的读写分离的分区模式对数据进行切分的示意图;写操作写入到写数据库DBwrite,复制数据在读数据库DBreader。
可选的,上述实施例中单库分表的分区模式对数据进行切分可以包括:
根据分区规则,建立分区逻辑表,其中,所述分区逻辑表定义规则实现类,表名以及分区范围;
其中,分区为对应一个逻辑分区表,一个分区包含多个分片,且包含逻辑表的SQL语句。
根据所述分区逻辑表,建立所述分区逻辑表与物理表之间的关联关系,确定分片范围,并根据分片规则确定每个分片绑定的数据源;
其中,分片对应一张数据表,所有的分片都在划定的分区范围中。
建立数据连接,对数据库的不同表进行读写操作。
具体过程可以参照图3,图3为本发明实施例所提供的单库分表的分区模式对数据进行切分的示意图。数据源分到相应的表中table_1,table_2等。
可选的,上述实施例中多库分表的分区模式对数据进行切分可以包括:
根据分区规则,建立分区逻辑表,其中,所述分区逻辑表定义规则实现类,表名以及分区范围;
根据所述分区逻辑表,建立所述分区逻辑表与物理表之间的关联关系,确定分片范围,并根据分片规则确定每个分片绑定的数据源,其中所述数据源为不同数据库的数据源;
建立数据连接,对不同数据库的数据源对应的不同表进行读写操作。
具体过程可以参照图4,图4为本发明实施例所提供的多库分表的分区模式对数据进行切分的示意图。数据源分到相应的数据库中,数据源ds0对应数据库DB0,数据源ds1对应数据库DB1,数据源ds2对应数据库DB2。
本方法在集群中可以嵌套使用,因此再复杂的集群模式都可以构建出来。在实际场景中,依据项目的复杂程度通过读写分离、单库分表和多库分表各种组合拆分方案进行拆分,使系统性能得到最大提升。其中,集群为对应一个常规数据库,是统一的管理入口,一个集群包含多个分区。
在集群中使用本发明的数据切分方法后,将传入的SQL语句通过语法解释器jsqlparser进行语法解析,最终生成java类层次结构。集群获取解析后的SQL,然后调用分区的SQL路由规则确定是在哪个分区上执行;接下来SQL转移到分区后,调用分片的SQL路由规则确定在哪些分片上执行SQL。调用JDBC接口执行SQL,根据各分片执行的结果进行归并处理。
基于上述技术方案,本发明实施例提供的数据切分方法,将逻辑数据库表,按照读写分离、单库分表、多库分表不同拆分方法拆分到多个物理数据库或物理数据库的多张表中,实现了数据库的水平扩展;同时还可以提供分布式主键、分区规则、分片规则、函数统计、合并查询、分布式事务和二次扩展等功能。从而有效的解决了数据量大、并发访问效率低的问题。
本发明实施例提供了数据切分的方法,可以通过上述方法能够在数据量很大,数据急速膨胀的情况下,提高数据库的读写性能,提高数据库的效率。
下面对本发明实施例提供的数据切分的系统进行介绍,下文描述的数据切分的系统与上文描述的数据切分的方法可相互对应参照。
请参考图5,图5为本发明实施例所提供的数据切分的系统的结构框图,该系统可以包括:根据数据的实际情况,选择相应的分区模式进行数据切分;
读写分离模块100,用于当需要确保数据库的稳定性并且业务数据属于读多写少的情况,则根据应用发起的数据切分请求,选择读写分离的分区模式对数据进行切分;
单库分表模块200,用于当单台数据库的硬件资源足够,但是单张表的数据超过阈值时,则根据应用发起的数据切分请求,选择单库分表的分区模式对数据进行切分;
多库分表模块300,用于当单台数据库的硬件资源不足时,则根据应用发起的数据切分请求,选择多库分表的分区模式对数据进行切分。
可选的,所述读写分离模块100包括:
写单元,用于进行写操作时,确定配置为writeable=true对应的数据源,并将所述数据源中的数据插入到写数据库中;
复制单元,用于将所述写数据库中的数据复制到读数据库中;
读单元,用于进行读操作时,确定配置为writeable=false对应的读数据库。
其中,所述读单元可以包括:
读操作时,确定配置为writeable=false对应的读数据库,并利用负载均衡策略算法从所述读数据库中确定需要的读数据库。
可选的,所述单库分表模块200可以包括:
单表分区单元,用于根据分区规则,建立分区逻辑表,其中,所述分区逻辑表定义规则实现类,表名以及分区范围;
单表分片单元,用于根据所述分区逻辑表,建立所述分区逻辑表与物理表之间的关联关系,确定分片范围,并根据分片规则确定每个分片绑定的数据源;
单表数据连接单元,用于建立数据连接,对数据库的不同表进行读写操作。
可选的,所述多库分表模块300可以包括:
多表分区单元,用于根据分区规则,建立分区逻辑表,其中,所述分区逻辑表定义规则实现类,表名以及分区范围;
多表分片单元,用于根据所述分区逻辑表,建立所述分区逻辑表与物理表之间的关联关系,确定分片范围,并根据分片规则确定每个分片绑定的数据源,其中所述数据源为不同数据库的数据源;
多表数据连接单元,用于建立数据连接,对不同数据库的数据源对应的不同表进行读写操作。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的数据切分的方法及系统进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (10)
1.一种数据切分的方法,其特征在于,包括:根据数据的实际情况,选择相应的分区模式进行数据切分;
当需要确保数据库的稳定性并且业务数据属于读多写少的情况,则根据应用发起的数据切分请求,选择读写分离的分区模式对数据进行切分;
当单台数据库的硬件资源足够,但是单张表的数据超过阈值时,则根据应用发起的数据切分请求,选择单库分表的分区模式对数据进行切分;
当单台数据库的硬件资源不足时,则根据应用发起的数据切分请求,选择多库分表的分区模式对数据进行切分。
2.如权利要求1所述的方法,其特征在于,读写分离的分区模式对数据进行切分包括:
写操作时,确定配置为writeable=true对应的数据源,并将所述数据源中的数据插入到写数据库中;
将所述写数据库中的数据复制到读数据库中;
读操作时,确定配置为writeable=false对应的读数据库。
3.如权利要求2所述的方法,其特征在于,读操作时,确定配置为writeable=false对应的读数据库包括:
读操作时,确定配置为writeable=false对应的读数据库,并利用负载均衡策略算法从所述读数据库中确定需要的读数据库。
4.如权利要求1所述的方法,其特征在于,单库分表的分区模式对数据进行切分包括:
根据分区规则,建立分区逻辑表,其中,所述分区逻辑表定义规则实现类,表名以及分区范围;
根据所述分区逻辑表,建立所述分区逻辑表与物理表之间的关联关系,确定分片范围,并根据分片规则确定每个分片绑定的数据源;
建立数据连接,对数据库的不同表进行读写操作。
5.如权利要求1所述的方法,其特征在于,多库分表的分区模式对数据进行切分包括:
根据分区规则,建立分区逻辑表,其中,所述分区逻辑表定义规则实现类,表名以及分区范围;
根据所述分区逻辑表,建立所述分区逻辑表与物理表之间的关联关系,确定分片范围,并根据分片规则确定每个分片绑定的数据源,其中所述数据源为不同数据库的数据源;
建立数据连接,对不同数据库的数据源对应的不同表进行读写操作。
6.一种数据切分的系统,其特征在于,包括:根据数据的实际情况,选择相应的分区模式进行数据切分;
读写分离模块,用于当需要确保数据库的稳定性并且业务数据属于读多写少的情况,则根据应用发起的数据切分请求,选择读写分离的分区模式对数据进行切分;
单库分表模块,用于当单台数据库的硬件资源足够,但是单张表的数据超过阈值时,则根据应用发起的数据切分请求,选择单库分表的分区模式对数据进行切分;
多库分表模块,用于当单台数据库的硬件资源不足时,则根据应用发起的数据切分请求,选择多库分表的分区模式对数据进行切分。
7.如权利要求6所述的系统,其特征在于,所述读写分离模块包括:
写单元,用于进行写操作时,确定配置为writeable=true对应的数据源,并将所述数据源中的数据插入到写数据库中;
复制单元,用于将所述写数据库中的数据复制到读数据库中;
读单元,用于进行读操作时,确定配置为writeable=false对应的读数据库。
8.如权利要求7所述的系统,其特征在于,所述读单元包括:
读操作时,确定配置为writeable=false对应的读数据库,并利用负载均衡策略算法从所述读数据库中确定需要的读数据库。
9.如权利要求6所述的系统,其特征在于,所述单库分表模块包括:
单表分区单元,用于根据分区规则,建立分区逻辑表,其中,所述分区逻辑表定义规则实现类,表名以及分区范围;
单表分片单元,用于根据所述分区逻辑表,建立所述分区逻辑表与物理表之间的关联关系,确定分片范围,并根据分片规则确定每个分片绑定的数据源;
单表数据连接单元,用于建立数据连接,对数据库的不同表进行读写操作。
10.如权利要求6所述的系统,其特征在于,所述多库分表模块包括:
多表分区单元,用于根据分区规则,建立分区逻辑表,其中,所述分区逻辑表定义规则实现类,表名以及分区范围;
多表分片单元,用于根据所述分区逻辑表,建立所述分区逻辑表与物理表之间的关联关系,确定分片范围,并根据分片规则确定每个分片绑定的数据源,其中所述数据源为不同数据库的数据源;
多表数据连接单元,用于建立数据连接,对不同数据库的数据源对应的不同表进行读写操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511021428.5A CN105677761A (zh) | 2015-12-30 | 2015-12-30 | 一种数据切分的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511021428.5A CN105677761A (zh) | 2015-12-30 | 2015-12-30 | 一种数据切分的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105677761A true CN105677761A (zh) | 2016-06-15 |
Family
ID=56298089
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511021428.5A Pending CN105677761A (zh) | 2015-12-30 | 2015-12-30 | 一种数据切分的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105677761A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294828A (zh) * | 2016-08-17 | 2017-01-04 | 华云科技有限公司 | 分区分片高qps数据持久化方案 |
CN106682107A (zh) * | 2016-12-05 | 2017-05-17 | 中国工商银行股份有限公司 | 数据库表关联关系确定方法及装置 |
CN106909597A (zh) * | 2016-06-30 | 2017-06-30 | 阿里巴巴集团控股有限公司 | 一种数据库迁移方法和装置 |
CN107689977A (zh) * | 2016-08-05 | 2018-02-13 | 厦门雅迅网络股份有限公司 | 分布式缓存和推送的路由方法及其系统 |
CN108573402A (zh) * | 2018-03-12 | 2018-09-25 | 阿里巴巴集团控股有限公司 | 一种兑换码发放方法、服务器及系统 |
CN112235332A (zh) * | 2019-07-15 | 2021-01-15 | 北京京东尚科信息技术有限公司 | 一种集群的读写切换方法和装置 |
CN113886089A (zh) * | 2021-10-21 | 2022-01-04 | 上海勃池信息技术有限公司 | 一种任务处理方法、装置、系统、设备及介质 |
CN114327951A (zh) * | 2021-12-30 | 2022-04-12 | 上海众人智能科技有限公司 | 一种基于多语义表达的模块化数据治理系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101155296A (zh) * | 2006-09-29 | 2008-04-02 | 中国科学技术大学 | 数据传输的方法 |
CN101894348A (zh) * | 2010-07-20 | 2010-11-24 | 中兴通讯股份有限公司 | 一种自扩展的联机交易系统及其实现方法 |
CN103902548A (zh) * | 2012-12-25 | 2014-07-02 | 航天信息股份有限公司 | 一种访问数据库的系统和方法及注册、订票、网购系统 |
US20150046395A1 (en) * | 2012-01-17 | 2015-02-12 | Amazon Technologies, Inc. | System and method for maintaining a master replica for reads and writes in a data store |
CN105045816A (zh) * | 2015-06-26 | 2015-11-11 | 上海斐讯数据通信技术有限公司 | 一种大量数据的存取方法及系统 |
-
2015
- 2015-12-30 CN CN201511021428.5A patent/CN105677761A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101155296A (zh) * | 2006-09-29 | 2008-04-02 | 中国科学技术大学 | 数据传输的方法 |
CN101894348A (zh) * | 2010-07-20 | 2010-11-24 | 中兴通讯股份有限公司 | 一种自扩展的联机交易系统及其实现方法 |
US20150046395A1 (en) * | 2012-01-17 | 2015-02-12 | Amazon Technologies, Inc. | System and method for maintaining a master replica for reads and writes in a data store |
CN103902548A (zh) * | 2012-12-25 | 2014-07-02 | 航天信息股份有限公司 | 一种访问数据库的系统和方法及注册、订票、网购系统 |
CN105045816A (zh) * | 2015-06-26 | 2015-11-11 | 上海斐讯数据通信技术有限公司 | 一种大量数据的存取方法及系统 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106909597A (zh) * | 2016-06-30 | 2017-06-30 | 阿里巴巴集团控股有限公司 | 一种数据库迁移方法和装置 |
CN107689977A (zh) * | 2016-08-05 | 2018-02-13 | 厦门雅迅网络股份有限公司 | 分布式缓存和推送的路由方法及其系统 |
CN107689977B (zh) * | 2016-08-05 | 2021-12-07 | 厦门雅迅网络股份有限公司 | 分布式缓存和推送的路由方法及其系统 |
CN106294828B (zh) * | 2016-08-17 | 2019-05-21 | 华云科技有限公司 | 一种分区分片高qps数据持久化方法 |
CN106294828A (zh) * | 2016-08-17 | 2017-01-04 | 华云科技有限公司 | 分区分片高qps数据持久化方案 |
CN106682107B (zh) * | 2016-12-05 | 2020-02-21 | 中国工商银行股份有限公司 | 数据库表关联关系确定方法及装置 |
CN106682107A (zh) * | 2016-12-05 | 2017-05-17 | 中国工商银行股份有限公司 | 数据库表关联关系确定方法及装置 |
TWI690881B (zh) * | 2018-03-12 | 2020-04-11 | 香港商阿里巴巴集團服務有限公司 | 兌換碼發放方法、伺服器及系統 |
WO2019174355A1 (zh) * | 2018-03-12 | 2019-09-19 | 阿里巴巴集团控股有限公司 | 兑换码发放 |
CN108573402B (zh) * | 2018-03-12 | 2020-07-03 | 阿里巴巴集团控股有限公司 | 一种兑换码发放方法、服务器及系统 |
CN108573402A (zh) * | 2018-03-12 | 2018-09-25 | 阿里巴巴集团控股有限公司 | 一种兑换码发放方法、服务器及系统 |
CN112235332A (zh) * | 2019-07-15 | 2021-01-15 | 北京京东尚科信息技术有限公司 | 一种集群的读写切换方法和装置 |
CN112235332B (zh) * | 2019-07-15 | 2024-01-16 | 北京京东尚科信息技术有限公司 | 一种集群的读写切换方法和装置 |
CN113886089A (zh) * | 2021-10-21 | 2022-01-04 | 上海勃池信息技术有限公司 | 一种任务处理方法、装置、系统、设备及介质 |
CN113886089B (zh) * | 2021-10-21 | 2024-01-26 | 上海勃池信息技术有限公司 | 一种任务处理方法、装置、系统、设备及介质 |
CN114327951A (zh) * | 2021-12-30 | 2022-04-12 | 上海众人智能科技有限公司 | 一种基于多语义表达的模块化数据治理系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105677761A (zh) | 一种数据切分的方法及系统 | |
CN107423368B (zh) | 一种非关系数据库中的时空数据索引方法 | |
CN108600321A (zh) | 一种基于分布式内存云的图数据存储方法和系统 | |
CN102663117B (zh) | 面向数据库与Hadoop混合平台的OLAP查询处理方法 | |
US9501550B2 (en) | OLAP query processing method oriented to database and HADOOP hybrid platform | |
CN107423422B (zh) | 基于网格的空间数据分布式存储及检索方法和系统 | |
US7457835B2 (en) | Movement of data in a distributed database system to a storage location closest to a center of activity for the data | |
US11442961B2 (en) | Active transaction list synchronization method and apparatus | |
CA3066250A1 (en) | Systems and methods of database tenant migration | |
CN102411634B (zh) | 一种提升嵌入式数据库实时性的数据存储方法 | |
JP6086463B2 (ja) | ピアツーピアデータ複製用の方法、デバイス、およびシステム、ならびにマスタノード切替え用の方法、デバイス、およびシステム | |
CN104113597A (zh) | 一种多数据中心的hdfs数据读写系统及方法 | |
CN103246749A (zh) | 面向分布式计算的矩阵数据库系统及其查询方法 | |
CN102937964B (zh) | 基于分布式系统的智能数据服务方法 | |
CN102890678A (zh) | 一种基于格雷编码的分布式数据布局方法及查询方法 | |
CN104834700A (zh) | 一种基于轨迹变更的移动数据增量捕获方法 | |
CN104572505A (zh) | 一种保证海量数据缓存最终一致性的系统及方法 | |
Jing et al. | An improved distributed storage and query for remote sensing data | |
CN106156319A (zh) | 可伸缩的分布式的资源描述框架数据存储方法及装置 | |
US20210349850A1 (en) | Managing snapshotting of a dataset using an ordered set of b+ trees | |
Gao et al. | An efficient ring-based metadata management policy for large-scale distributed file systems | |
Kumar et al. | M-Grid: a distributed framework for multidimensional indexing and querying of location based data | |
US10289723B1 (en) | Distributed union all queries | |
CN115114294A (zh) | 数据库存储模式的自适应方法、装置、计算机设备 | |
WO2024021470A1 (zh) | 一种跨区域的数据调度方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into 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: 20160615 |