Mysql中数据切分的不同形式
数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式。一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切可以称之为数据的
垂直(纵向)切分;另外一种则是根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库(主机)上面,这种切分称之为数据的水平(横向)切分;
垂直切分的优点
1.数据库的拆分简单明了,拆分规则明确;
2.应用程序模块清晰明确,整合容易;
3.数据维护方便易行,容易定位;
垂直切分的缺点
1.部分表关联无法在数据库级别完成,需要在程序中完成;
2.对于访问极其频繁且数据量超大的表仍然存在性能平静,不一定能满足要求;
3.事务处理相对更为复杂;
4.切分达到一定程度之后,扩展性会遇到限制;
5.过读切分可能会带来系统过渡复杂而难以维护;
简单的水平切分主要是将某个访问极其平凡的表再按照某个字段的某种规则来分散到多个表之中,每个表中包含一部分数据。
水平切分的优点
1.表关联基本能够在数据库端全部完成;
2.不会存在某些超大型数据量和高负载的表遇到瓶颈的问题;
3.应用程序端整体架构改动相对较少;
4.事务处理相对简单;
5.只要切分规则能够定义好,基本上较难遇到扩展性限制;
水平切分的缺点
1.切分规则相对更为复杂,很难抽象出一个能够满足整个数据库的切分规则;
2.后期数据的维护难度有所增加,人为手工定位数据更困难;
3.应用系统各模块耦合度较高,可能会对后面数据的迁移拆分造成一定的困难。