本文由云+社区发表作者:腾讯云数据库
Introduction 导言
任何看到显著增长的应用程序或网站,最终都需要进行扩展,以适应流量的增加。以确保数据安全性和完整性的方式进行扩展,对于数据驱动的应用程序和网站来说十分重要。人们可能很难预测某个网站或应用程序的流行程度,也很难预测这种流行程度会持续多久,这就是为什么有些机构选择“可动态扩展的”数据库架构的原因。
在这篇概念性文章中,我们将讨论一种“可动态扩展的”数据库架构:分片数据库。近年来,分片(Sharding)一直受到很多关注,但许多人并没有清楚地了解它是什么,或者对数据库进行分片可能有意义的场景。我们将讨论分片是什么,它的一些主要优点和缺点,以及一些常见的分片方法。
下方是本文目录,帮助您接下来的阅读
What is Sharding? 什么是分片?
分片(Sharding)是一种与水平切分(horizontal partitioning)相关的数据库架构模式——将一个表里面的行,分成多个不同的表的做法(称为分区)。每个区都具有相同的模式和列,但每个表有完全不同的行。同样,每个分区中保存的数据都是唯一的,并且与其他分区中保存的数据无关。
从水平切分(horizontal partitioning)与垂直切分(vertical partitioning)的关系,可能会有所帮助。在垂直切分表中,所有的列被分离出来,并放入新的不同的表中。每个垂直切分内的数据,独立于所有其他分区中的数据,并且每个分区都包含不同的行和列。下图说明了如何在水平和垂直方向上对表进行分区:
添加描述
分片(Sharding)将一个数据分成两个或多个较小的块,称为逻辑分片(logical shards)。然后,逻辑分片(logical shards)分布在单独的数据库节点上,称为物理分片(physical shards)。物理分片(physical shards)可以容纳多个逻辑分片(logical shards)。尽管如此,所有分片中保存的数据