一种数据切分的方法及系统的制作方法_3

文档序号:9911128阅读:来源:国知局
据插入到写数据库中;
[0075]将所述写数据库中的数据复制到读数据库中;
[0076]其中,这里可以利用Quorum算法来确保渎职的一致性。
[0077]读操作时,确定配置为writeable = false对应的读数据库。
[0078]其中,优选的,确定配置为writeable = false对应的读数据库可以包括:
[0079]读操作时,确定配置为writeable= falSe对应的读数据库,并利用负载均衡策略算法从所述读数据库中确定需要的读数据库。
[0080]其中,由于服务器的处理能力存在一定的差异,负载均衡策略算法可以采取加权最小连接算法。假设有一组服务器S = {SI,S2,…,Sn},W( Sk)为分配给服务器Sk的权值,其中可以通过参数readWeight设置读权重值,数值越大默认被分配的读取任务越大,C(Sk)为服务器的当前连接数,当前新连接请求发送到服务器m由如下条件决定C(Sm)/W(Sm)=min{C(Sk)/W(Sk)}(k=l,2,…,η)。通过该方式可以提高读数据库的效率。具体过程可以参照图2,图2为本发明实施例所提供的读写分离的分区模式对数据进行切分的示意图;写操作写入到写数据库DB write,复制数据在读数据库DB reader。
[0081]可选的,上述实施例中单库分表的分区模式对数据进行切分可以包括:
[0082]根据分区规则,建立分区逻辑表,其中,所述分区逻辑表定义规则实现类,表名以及分区范围;
[0083]其中,分区为对应一个逻辑分区表,一个分区包含多个分片,且包含逻辑表的SQL语句。
[0084]根据所述分区逻辑表,建立所述分区逻辑表与物理表之间的关联关系,确定分片范围,并根据分片规则确定每个分片绑定的数据源;
[0085]其中,分片对应一张数据表,所有的分片都在划定的分区范围中。
[0086]建立数据连接,对数据库的不同表进行读写操作。
[0087]具体过程可以参照图3,图3为本发明实施例所提供的单库分表的分区模式对数据进行切分的示意图。数据源分到相应的表中tab I e_l,tab I e_2等。
[0088]可选的,上述实施例中多库分表的分区模式对数据进行切分可以包括:
[0089]根据分区规则,建立分区逻辑表,其中,所述分区逻辑表定义规则实现类,表名以及分区范围;
[0090]根据所述分区逻辑表,建立所述分区逻辑表与物理表之间的关联关系,确定分片范围,并根据分片规则确定每个分片绑定的数据源,其中所述数据源为不同数据库的数据源;
[0091]建立数据连接,对不同数据库的数据源对应的不同表进行读写操作。
[0092]具体过程可以参照图4,图4为本发明实施例所提供的多库分表的分区模式对数据进行切分的示意图。数据源分到相应的数据库中,数据源dsO对应数据库DBO,数据源dsl对应数据库DBl,数据源ds2对应数据库DB2。
[0093]本方法在集群中可以嵌套使用,因此再复杂的集群模式都可以构建出来。在实际场景中,依据项目的复杂程度通过读写分离、单库分表和多库分表各种组合拆分方案进行拆分,使系统性能得到最大提升。其中,集群为对应一个常规数据库,是统一的管理入口,一个集群包含多个分区。
[0094]在集群中使用本发明的数据切分方法后,将传入的SQL语句通过语法解释器jsqlparser进行语法解析,最终生成java类层次结构。集群获取解析后的SQL,然后调用分区的SQL路由规则确定是在哪个分区上执行;接下来SQL转移到分区后,调用分片的SQL路由规则确定在哪些分片上执行SQL。调用JDBC接口执行SQL,根据各分片执行的结果进行归并处理。
[0095]基于上述技术方案,本发明实施例提供的数据切分方法,将逻辑数据库表,按照读写分离、单库分表、多库分表不同拆分方法拆分到多个物理数据库或物理数据库的多张表中,实现了数据库的水平扩展;同时还可以提供分布式主键、分区规则、分片规则、函数统计、合并查询、分布式事务和二次扩展等功能。从而有效的解决了数据量大、并发访问效率低的问题。
[0096]本发明实施例提供了数据切分的方法,可以通过上述方法能够在数据量很大,数据急速膨胀的情况下,提高数据库的读写性能,提高数据库的效率。
[0097]下面对本发明实施例提供的数据切分的系统进行介绍,下文描述的数据切分的系统与上文描述的数据切分的方法可相互对应参照。
[0098]请参考图5,图5为本发明实施例所提供的数据切分的系统的结构框图,该系统可以包括:根据数据的实际情况,选择相应的分区模式进行数据切分;
[0099]读写分离模块100,用于当需要确保数据库的稳定性并且业务数据属于读多写少的情况,则根据应用发起的数据切分请求,选择读写分离的分区模式对数据进行切分;
[0100]单库分表模块200,用于当单台数据库的硬件资源足够,但是单张表的数据超过阈值时,则根据应用发起的数据切分请求,选择单库分表的分区模式对数据进行切分;
[0101]多库分表模块300,用于当单台数据库的硬件资源不足时,则根据应用发起的数据切分请求,选择多库分表的分区模式对数据进行切分。
[0102]可选的,所述读写分离模块100包括:
[0?03] 写单元,用于进行写操作时,确定配置为writeable = true对应的数据源,并将所述数据源中的数据插入到写数据库中;
[0104]复制单元,用于将所述写数据库中的数据复制到读数据库中;
[0105]读单元,用于进行读操作时,确定配置为writeable = false对应的读数据库。
[0106]其中,所述读单元可以包括:
[0107]读操作时,确定配置为writeable= falSe对应的读数据库,并利用负载均衡策略算法从所述读数据库中确定需要的读数据库。
[0108]可选的,所述单库分表模块200可以包括:
[0109]单表分区单元,用于根据分区规则,建立分区逻辑表,其中,所述分区逻辑表定义规则实现类,表名以及分区范围;
[0110]单表分片单元,用于根据所述分区逻辑表,建立所述分区逻辑表与物理表之间的关联关系,确定分片范围,并根据分片规则确定每个分片绑定的数据源;
[0111]单表数据连接单元,用于建立数据连接,对数据库的不同表进行读写操作。
[0112]可选的,所述多库分表模块300可以包括:
[0113]多表分区单元,用于根据分区规则,建立分区逻辑表,其中,所述分区逻辑表定义规则实现类,表名以及分区范围;
[0114]多表分片单元,用于根据所述分区逻辑表,建立所述分区逻辑表与物理表之间的关联关系,确定分片范围,并根据分片规则确定每个分片绑定的数据源,其中所述数据源为不同数据库的数据源;
[0115]多表数据连接单元,用于建立数据连接,对不同数据库的
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1