数据库架构演变(3)

2014-10-28
  • 838
  • 0

5. 水平拆分

        在垂直拆分中是把数据表按照模块划分到不同的数据库中,而水平拆分是指在同一个模块(或系统)中,将一张大表水平的按照一定算法拆分成若干小表或者数据库。比如:按照时间划分,    或者按照用户维度划分。因为大多数情况下不会出现同时处理多个用户数据的情况。所以可以按照这个维度来水平拆分。下图是一个比较简单的按照user_id来水平拆分的例子:

水平拆分的优点是进一步提高了系统的读写效率,但是也带来了两个新的问题:
     (1)拆分规则的复杂程度决定了应用调度的复杂程度,拆分规则越复杂应用层的调度规则也越复杂。
     (2)增加了数据维护的难度。
     (3)拆分规则会随着业务数据量的变化而变化,一旦发生变化,会产生大量的数据迁移工作。
       6. 垂直与水平联合切分
       根据前面讲到的数据库架构可以了解到,垂直拆分可以将数据库按照模块拆分,分区治理;水平拆分可以解决大数据的性能问题。所以将两种拆分模式结合是非常常见的一种结合方式,特别是在大型网站的架构中。他的优点结合了两方面的优点,进一步提升数据库效率。缺点是会让系统变得更为复杂,成本比较高。