文章目录
我们使用数据库可以快速访问业务数据,但是随着时间的推移,数据库会不断增长,提取信息所需的时间也会更长,数据操作成为瓶颈。这时候我们就需要对数据进行分区(partition)了。分区是将数据库或其组成元素划分为不同的独立部分。数据库分区通常是出于可管理性、性能或可用性或负载平衡的原因而进行的。在分布式数据库管理系统中分区是很流行,其中每个分区可以分布在多个节点上,节点上的用户在分区上执行本地事务。由于数据的分区,使得系统的整体性能得以提升。
数据分区方法
数据的分区方法(Partitioning methods)大概有以下几种:
垂直分区(Vertical partitioning)
垂直分区需要创建一些较少列的表,每张表存储源表的部分列,以此达到数据的分区。比如我们有一张名为 iteblog
表,如下:
CREATE TABLE iteblog ( attr1 INT, attr2 INT, attr3 INT, attr4 TEXT );
使用垂直分区,可以将这张表拆分成以下形式:
这个在大数据数据仓库很常见,比如我们将一些数据量小,但是经常查询的数据放到 ES 中,数据量比较大的部分,但是不经常被查到放到 HBase 中。这种方法还可以根据说的访问频率,把不同的列数据存放到不同的存储介质中,以此节省存储成本。
水平分区(Horizontal partitioning)
水平分区分区也称为分片(sharding),其根据不同的分区算法将不同行的数据存储到不同的表中(比如关系型数据库中的分库分表)。例如,邮政编码小于50000 的客户存储在 CustomersEast 表中,而邮政编码大于或等于 50000 的客户存储在 CustomerWest 表中,所以分区表就是 CustomersEast 和 CustomersWest,这两张表加起来对外提供一个完整的视图。
分区算法
水平分区一般会选择表中的某列或某些列调用分区算法,计算其分区之后已经分到那张表中,这些被选中的列也称为 partitioning key,比较常见的分区算法有:
混合分区(Hybrid partitioning)
这种分区结合了垂直和水平分区。比如我们有一个保存不同类型数据的大型数据,那么我们我们可以水平地对客户信息进行分区,然后再利用垂直将图片存储在Blob 存储中,比如下图所示:
本博客文章除特别声明,全部都是原创!原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【几种常见的数据分区方法】(https://www.iteblog.com/archives/9807.html)