一种数据分片方法技术

技术编号:36208081 阅读:17 留言:0更新日期:2023-01-04 12:03
本发明专利技术提供的一种数据分片方法,包括数据库分区和业务层分区;其中数据库分区将表的数据均衡分摊到不同的硬盘,系统或是不同服务器存储介子中;将数据分散存储到多个数据库中,使得单一数据库中的数据量变小,通过扩充主机的数量突破单节点数据库的性能限制,解决数据库扩展性问题,减少数据库的负担,缩短查询时间,从而达到提升数据库操作性能的目的。业务层分区包括分表、分库两种方式,分表把数据库当中数据根据按照分库原则分到多个数据表当中,就把大表变成多个小表,不同的分表中数据不重复,提高处理效率。提高处理效率。提高处理效率。

【技术实现步骤摘要】
一种数据分片方法


[0001]本专利技术涉及数据监管领域,尤其涉及一种数据分片方法。

技术介绍

[0002]在大数据时代,随着业务数量的暴增和应用规模的不断扩大,关系型数据库本身比较容易成为系统性能瓶颈,单机存储容量、连接数、处理能力等都很有限,都会面临服务器CPU、磁盘IO和内存的各种瓶颈问题。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。数据库本身的“有状态性”导致了它并不像Web和应用服务器那么容易扩展。

技术实现思路

[0003]鉴于上述问题,提出了本专利技术以便提供克服上述问题或者至少部分地解决上述问题的一种数据分片方法。
[0004]根据本专利技术的一个方面,提供了一种数据分片方法包括:数据库分区和业务层分区;
[0005]所述数据库分区是将表的数据均衡分摊到不同的硬盘,系统和/或是不同服务器存储介子中;
[0006]所述业务层分区是将大数据库分布到多个物理节点上的一个分区方案。
[0007]可选的,所述业务层分区包括:分表和分库两种方式;
[0008]所述分表为把数据库当中数据根据按照分库原则分到多个数据表中;
[0009]所述分库为将数据分片,采用类似分布式数据库理论指导的方法实现,对应用程序达到数据服务的全透明和数据存储的全透明。
[0010]可选的,所述分库和所述分表具体包括:同库分表和不同库分表;
[0011]所述同库分表为所有分表都在一个数据库中,由于数据库中表名不能重复,将数据表名起成不同的名字;
[0012]所述不同库分表由于分表在不同的数据库中,就能够使用同样的表名。
[0013]可选的,所述业务层分区具体包括:编码层、框架层、驱动层、代理层和实现层。
[0014]本专利技术提供的一种数据分片方法,包括数据库分区和业务层分区;其中数据库分区将表的数据均衡分摊到不同的硬盘,系统或是不同服务器存储介子中;将数据分散存储到多个数据库中,使得单一数据库中的数据量变小,通过扩充主机的数量突破单节点数据库的性能限制,解决数据库扩展性问题,减少数据库的负担,缩短查询时间,从而达到提升数据库操作性能的目的。业务层分区包括分表、分库两种方式,分表把数据库当中数据根据按照分库原则分到多个数据表当中,就可以把大表变成多个小表,不同的分表中数据不重复,从而提高处理效率。
[0015]上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够
更明显易懂,以下特举本专利技术的具体实施方式。
附图说明
[0016]为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0017]图1为本专利技术实施例提供的一种数据分片方法的不同层次切入示意图。
具体实施方式
[0018]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0019]本专利技术的说明书实施例和权利要求书及附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。
[0020]下面结合附图和实施例,对本专利技术的技术方案做进一步的详细描述。
[0021]数据分片就是将数据分散存储到多个数据库中,使得单一数据库中的数据量变小,通过扩充主机的数量突破单节点数据库的性能限制,解决数据库扩展性问题,减少数据库的负担,缩短查询时间,从而达到提升数据库操作性能的目的。数据分片的一般方式包括数据库分区、业务层分区。
[0022]数据库分区是一种物理数据库的设计技术,它的目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间。分区并不是生成新的数据表,而是将表的数据均衡分摊到不同的硬盘,系统或是不同服务器存储介子中,实际上还是一张表。另外,分区可以做到将表的数据均衡到不同的地方,提高数据检索的效率,降低数据库的频繁IO压力值,分区的优缺点如下。
[0023]优点:
[0024]相对于单个文件系统或是硬盘,分区可以存储更多的数据;
[0025]数据管理比较方便,比如要清理或废弃某年的数据,就可以直接删除该日期的分区数据即可;
[0026]精准定位分区查询数据,不需要全表扫描查询,大大提高数据检索效率;
[0027]可跨多个分区磁盘查询,来提高查询的吞吐量;
[0028]在涉及聚合函数查询时,可以很容易进行数据的合并;
[0029]数据不存在多个副本,不必进行数据复制,性能更高。
[0030]业务层分区是将大数据库分布到多个物理节点上的一个分区方案。每一个分区包含数据库的某一部分,称为一个shard,分区方式是任意的,并不局限于传统的水平分区和垂直分区。一个shard包含多个表的内容甚至包含多个数据库实例中的内容。每个shard被放置在一个数据库服务器上。一个数据库服务器处理一个或多个shard的数据。应用系统中需要进行查询路由转发,负责将查询转发到包含该查询所访问数据的shard或shards节点
上去执行。
[0031]业务层分区包括分表、分库两种方式,分表把数据库当中数据根据按照分库原则分到多个数据表当中,就把大表变成多个小表,不同的分表中数据不重复,从而提高处理效率。分表和分区都是基于同一个数据库里的数据分离技巧,对数据库性能有一定提升,但是随着业务数据量的增加,原来所有的数据都是在一个数据库上的,网络IO及文件IO都集中在一个数据库上的,因此CPU、内存、文件IO、网络IO都可能会成为系统瓶颈。当业务系统的数据容量接近或超过单台服务器的容量、QPS/TPS接近或超过单个数据库实例的处理极限等此时,往往是采用垂直和水平结合的数据拆分方法,把数据服务和数据存储分布到多台数据库服务器上。分库只是一个通俗说法,更标准名称是数据分片,采用类似分布式数据库理论指导的方法实现,对应用程序达到数据服务的全透明和数据存储的全透明。
[0032]分库分表有两种方案:
[0033]同库分表:所有的分表都在一个数据库中,由于数据库中表名不能重复,因此需要把数据表名起成不同的名字。
[0034]优点:由于都在一个数据库中,公共表,不必进行复制,处理更简单
[0035]不同库分表:由于分表在不同的数据库中,这个时候就可以使用同样的表名。
[0036]优点:CPU、内存、文件IO、网络IO等瓶颈可以得到有效解决,表名相同,处理起来相对简单
[00本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据分片方法,其特征在于,所述分片方法包括:数据库分区和业务层分区;所述数据库分区是将表的数据均衡分摊到不同的硬盘,系统和/或是不同服务器存储介子中;所述业务层分区是将大数据库分布到多个物理节点上的一个分区方案。2.根据权利要求1所述的一种数据分片方法,其特征在于,所述业务层分区包括:分表和分库两种方式;所述分表为把数据库当中数据根据按照分库原则分到多个数据表中;所述分库为将数据分片,采用类似分布式数据库理论指导的方法实现,对...

【专利技术属性】
技术研发人员:王金贺刘明伟任昊文刘竹青
申请(专利权)人:南方电网数字电网研究院有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1