数据库切分

1.       什么是数据切分

将存放在同一个数据库中为同一个应用程序服务的数据分散存放到多个数据库上面,以达到分散单台设备负载的效果,并提高可用性。

2.       垂直切分

按照系统的模块和功能切分。需要尽早作出切分

优点:

  •   切分容易


  •   应用程序模块清晰,整合容易。
  • 数据维护方便。


缺点:

  •   模块间的数据表会有关联。
  •   数据量大的表仍有性能问题。
  •   表关联无法在数据库级别完成,要在程序中完成。
  •   事务处理复杂。
  • 不能过度切分(粒度适宜)


3.       水平切分

对大数据量的表按照某种规则进行散列拆分。根据社区模块、用户类型、特定字段类别等。

优点:

  • 表关联基本能够在数据库端全部完成。
  • 不会存在数据过量问题
  • 应用程序端整体改动小
  • 事务处理简单
  • 扩展性限制小


缺点:

  • 切分规则复杂,很难有一个全面的切分规则
  • 后期数据的维护难度复杂,手工定位数据难
  • 应用系统各模块耦合度高,可能会对后面数据拆分造成困难


 

4.       联合切分

通常先垂直切分,再对大表进行水平切分。

交替进行切分。

优点:

  • 系统扩展性最大化
  • 避免各自缺陷


缺点:

  • 数据库系统架构复杂
  • 应用程序架构也复杂
  • 整合方案


两种解决方案:

a )每个应用程序模块中配置管理自己需要的一个或多个数据库,直接访问各个数据库,在模块内整合数据。

b) 通过中间代理层来统一管理数据源,后端数据库集群对前端应用程序透明

 

实现类别:

      a)         自行开发代理层

      b)        使用数据库 Proxy

MySQLProxy 。实现连接路由、 Query 分析、 Query 过滤和修改,负载均衡,以及基本的 HA 机制。

      c)        其他开源中间件

6.       可能的问题

      a.       分布式事务问题。

——使用小事务,提高应用程序的健壮性。

      b.       跨节点 Join 问题

——使用数据库 FederatedDB Link 等)

——使用应用程序来处理(使用缓存等)

      c.       跨节点合并排序分页问题

——使用数据库 Federated

——应用程序

bc 同时出现时,比较难处理。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值