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

文档序号:9911128阅读:来源:国知局
图1为本发明实施例所提供的数据切分的方法的流程图;
[0045]图2为本发明实施例所提供的读写分离的分区模式对数据进行切分的示意图;
[0046]图3为本发明实施例所提供的单库分表的分区模式对数据进行切分的示意图;
[0047]图4为本发明实施例所提供的多库分表的分区模式对数据进行切分的示意图;
[0048]图5为本发明实施例所提供的数据切分的系统的结构框图。
【具体实施方式】
[0049]本发明的核心是提供一种数据切分的方法及系统,该方法及系统能够在数据量很大,数据急速膨胀的情况下,提高数据库的读写性能,提高数据库的效率。
[0050]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0051]请参考图1,图1为本发明实施例所提供的数据切分的方法的流程图;该方法包括:
[0052]根据数据的实际情况,选择相应的分区模式进行数据切分;
[0053]其中,数据切分是指对数据通过一系列的切分规则,将数据分布到多个数据库或者一个数据库的不同表中。由于数据切分,分割了概念数据库,使数据存取本地化,这样做有几个好处,每个节点只处理数据库的一部分,可以缓解对CPU、I/0以及内存等系统资源的竞争;其次,本地化减少了远程访问延迟,访问延迟在广域网中经常出现;再者,系统中的冗余数据,提高了系统的可靠性和可用性,然而和数据库本地化也带来的好处并存的还有其带来的问题,例如,数据的同步更新问题,只有适当划分数据和分配数据才能从中得到减少竞争、减少通信开销以及获得系统可靠性和可用性的最大优势。
[0054]其中,本发明的数据切分方法可以分为主从模式和分片模式。主从模式即读写分离,分片后的数据完全一致;分片模式又分为单库分表和多库分表,分片后的数据是不一致的,各分片的数据合集才是一个完整的记录。选择的原则可以依据数据的实际情况和用户的需求进行。
[0055]slOO、当需要确保数据库的稳定性并且业务数据属于读多写少的情况,则根据应用发起的数据切分请求,选择读写分离的分区模式对数据进行切分;
[0056]其中,读写分离的分区模式是将数据库的写操作集中到一个数据库中,而一些读操作则分解到其它数据库中。通过读写分离就可以将数据库的处理压力分解到多个数据库上,从而提升数据的处理能力。
[0057]基于上述读写分离的优点,因此为了可以确保数据库的稳定性以及对于某些业务数据是读多写少的情况,则可以对数据库进行读写分离。
[0058]读写分离的分区模式的具体方可以是,找到写数据,将写数据写入到相应的数据库中,在将数据复制到读数据库中,由于考虑到复制数据的一致性可以引入Quorum算法,假设N为数据复制的节点数量,R为成功读操作的最小节点数,W为成功写操作的最小节点数,如果W+R>N,写操作和读操作请求节点集会存在重叠,这样就可以保证强一致性。由于读数据库可以不止一个,因此,可以根据数据实际情况确定相应的规则进行读数据库的确定。例如可以通过参数readWeight设置读权重值,数值越大默认被分配的读取任务越大。也可以利用负载均衡策略算法计算需要的读数据库,等方式进行读数据库的确定。
[0059]SllO、当单台数据库的硬件资源足够,但是单张表的数据超过阈值时,则根据应用发起的数据切分请求,选择单库分表的分区模式对数据进行切分;
[0060]目前数据分片的规则主要有水平分片、垂直分片和混合分片。
[0061]水平分片:按特定条件把全局关系的所有元组分成若干个互不相交的子集,每一个子集为全局关系的逻辑片段,简称为片段。它们通过对全局关系施加选择运算得到,并可通过对这些片段的合并操作来恢复该全局关系。
[0062]垂直分片,将全局关系(表或视图)的属性集(字段集)中的若干属性作投影运算,即得到全局关系的一个垂直分片,要求全局关系的每一个属性至少映射到一个垂直片段中,且每一个垂直分片都包含全局关系的键。
[0063]混合分片:水平分片和垂直分片的混合。
[0064]数据库数据分片应满足的原则有第一,完备性原则:全局关系中的所有数据项必须映射到各个分片中,不允许有属于全局关系的数据却不属于其它的任何一个片段。第二,重构性原则:所有的数据分片必须能重构(逆操作)成全局关系。因为数据片段是分布式数据库的基本关系,通过重构操作才能建立全局数据库。这是分布式数据库的基本要求。第三,不相交原则:不相交原则不是必需的,但是有这条原则可以使划分不致引起太复杂的冗余。划分时不想交,则分配的冗余可以得到控制。有时允许键属性相交,使重构操作简单。
[0065]单库分表是将原本存储于一个数据表按照一定的规则拆分成不同的子表存储到同一个数据库中。单库分表大大提高了数据查询速率。
[0066]由于一张表的数据达到一定量时,数据操作性能急剧下降。因此,为了单库分表的效果比较好,其适用的条件可以是单台数据库的硬件资源还可以支持数据,但是单张表的数据已经超过阈值。为了提高数据操作性能,需要进行单库分表。
[0067]单库分表的分区模式具体方式可以是该分区将包含逻辑表的SQL语句;再根据实际逻辑关系进行数据分片。
[0068]sl20、当单台数据库的硬件资源不足时,则根据应用发起的数据切分请求,选择多库分表的分区模式对数据进行切分。
[0069]其中,多库分表是将原本存储于一个数据库的数据表按照一定的规则拆分到不同的数据库中。
[0070]使用条件为单台数据库硬件资源有限,单台服务器的资源如CPU、内存、网络1资源、连接数等资源紧张。通过多库分表有效的解决了库中表与表之间的1争夺。
[0071]其中多酷分表和单库分表的流程基本相同,只是分片规则将数据源分别绑定到不同的数据库中,即读写操作均在不同的数据库中完成。
[0072]基于上述技术方案,本发明实施例提供的数据切分的方法,该方法将逻辑数据库表,按照读写分离、单库分表、多库分表不同拆分方法拆分到多个物理数据库或物理数据库的多张表中,实现了数据库的水平扩展;因此,该方法能够在数据量很大,数据急速膨胀的情况下,提高数据库的读写性能,提高数据库的效率。且本发明数据切分方法的实现机制脱离了与其他技术框架的绑定,简单易用,容易扩展,不受现有技术框架的制约,降低了应用维护成本;不需要额外的消息通讯,节省了消息通信的通信量,且支持多种常见数据库,成本较低,保证了数据切分后减少通信开销以及提高数据库访问性能的作用。
[0073]可选的,上述实施例中读写分离的分区模式对数据进行切分可以包括:
[0074]写操作时,确定配置为writeable= true对应的数据源,并将所述数据源中的数
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1