背景
当今社会是一个信息大爆炸的社会,大家都在用各种应用软件,也因此产生了大量的数据,企业把这些数据当做宝贝,然而这些被视为宝贝的数据往往是我们技术人员的烦恼,这些海量的数据存储和访问成为了系统设计与使用的瓶颈,而这些数据往往存储在数据库中,然后传统的数据库又是存在不足的。单个数据库是存在性能瓶颈的,并且扩展起来十分困难,在当今这个大数据的时代,我们就必须要解决这样的问题。如果单机数据库易于扩展,数据可切分,就可以避免这些问题,但是当前的这些数据库厂商,包括开源的数据库MySQL在内,提供这些服务都是要收费的。所以我们一般转向第三方的软件,使用这些软件来给我们的数据做数据切分,将原本一台数据库上的数据,分散到多台数据库中,降低每一个单体数据库的负载。那么我们如何做数据切分呢?接下来,跟着老猫来看一下切分的方案。
数据切分
所谓的数据的切分其实就是按照某种规则将一台机器上的数据分配到多台数据库中,从而达到降低单台数据库压力的效果。我们所说的数据库切分,大致其实分为两类,一类是垂直切分,另外一类是水平切分。下面我们一一来看一下这两种的方案。
垂直切分
所谓的垂直切分就是按照不同的表或者schema切分到不同的数据库中。我们就简单举例电商产品中的订单表(order)以及商品信息表(product)以及会员(member),初期的时候我们可能放在同一个数据库中,现在我们就要对其进行拆分,拆分的规则就是讲不同的业务线表分别落到不同的物理机的不同的数据中心,使他们完全隔离,从而达到降低数据库负载的效果。如下示例图