zoukankan      html  css  js  c++  java
  • 数据库如何选择垂直切分和水平切分

    1、垂直切分

    按业务去区分,每一种业务一个数据库,不同的业务之间禁止join联查

    例如:业务库切分为订单库和商品库

    优点

    拆分后业务清晰、拆分规则明确

    系统之间容易扩展和整合

    数据维护简单

    缺点

    部分业务表无法join,只能通过接口调用,提升了系统的复杂度。

    夸库事务难以处理

    垂直切分后,某些业务数据过于庞大,仍然存在单体性能瓶颈

    2、水平切分

    将一张表的数据按照某种规则分到不同的数据库中

    需要确定分片的规则。

    使用分片字段查询时,可确定实体库。但是是其他字段查询,需要查询所有表。

    例如业务系统拆分为订单库1、订单库2,商品库1,商品库2。订单为奇数存放在订单库1;订单号为偶数,存放在订单库2.

    优点:

    解决了单库大数据、高并发的性能瓶颈;

    拆分规则封装好,对应用端几乎透明,开发人员无需关系拆分细节。

    提高了系统的稳定性和负载能力

    缺点

    拆分规则很难抽象

    分片的事务一致性难以解决

    二次扩展时、数据迁移、维护难度大。(例如订单为奇数存放在订单库1;订单号为偶数,存放在订单库2.   

    现在订单特别多,增加订单库3和订单库4。分片规则变了,根据订单号取模,它原来的订单按新规则迁移,比较麻烦。)

    总结: 一般先进行垂直切分,之后任然无法满足,再进行水平切分。

    作者:Work Hard Work Smart
    出处:http://www.cnblogs.com/linlf03/
    欢迎任何形式的转载,未经作者同意,请保留此段声明!

  • 相关阅读:
    bzoj1005: [HNOI2008]明明的烦恼(prufer+高精度)
    bzoj1211: [HNOI2004]树的计数(prufer序列+组合数学)
    bzoj1430: 小猴打架(prufer序列)
    bzoj1029: [JSOI2007]建筑抢修(堆+贪心)
    bzoj1053: [HAOI2007]反素数ant
    [HNOI2012]双十字
    [HNOI2012]矿场搭建
    [HNOI2012]集合选数
    [HNOI2013]消毒
    POJ2449 Remmarguts' Date
  • 原文地址:https://www.cnblogs.com/linlf03/p/13954568.html
Copyright © 2011-2022 走看看