数据库设计——分表重构

数据库有时会遇到重构的需求。但是,基于当前数据库大量数据无法大刀阔斧地重新洗盘。比如,需要在当前数据库表添加一个字段(Field)。这样每次产生新的字段需求时,均在单一数据表末尾添加。久而久之,数据表变得结构臃肿,数据冗杂,难以理解。另一种做法就是,对数据表包含已有和添加的字段重新规划,将原表拆分成两个或多个新表重新设计。分表后,数据结构条理清晰,目标明确。这种方法缺点也很明显,添加单个字段,就必须拆除整个数据表,并对原有数据进行完整的迁移。数据迁移工作耗时耗力,颇为麻烦。

增量式和解构式的数据库重构方法优缺点都非常明显。有没有什么办法很好解决这个问题?既然两者的优点鲜明,有没有可能使用两者的组合?有没有什么途径同时兼顾两者?

关于数据库分表,有一种理论:“水平分表”和“垂直分表”。水平分表,是将单个大的数据表分成多个结构相同小的数据表,通过集群的方式进行管理操作。垂直分表,以纵向切割的方式切分数据表,把一个冗长的数据表分割成多个结构关联的数据表。两者行为方式不同,目的均是为了方便数据的管理,提高数据库操作效率,从而提升信息系统的运行表现性能。很显然,这里提到的问题是属于垂直分表的范畴。

理解垂直分表的工作方式,对于如何组合兼顾增量式和解构式重构方法有很好的帮助。垂直分表的一个重点在于纵向切分数据表,也就是如何划分数据表的字段,区分实体的强关联和弱关联属性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值