数据库分库分表操作

1、谈数据库分布式

其核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合工作,解决单一数据库或数据表因数据量过大而导致的性能瓶颈问题。这里有必要再做一个澄清,本文谈的数据库分布式并非分布式数据库,前者不关注数据细节的存储组织问题,而是仍然在已有的MySQL、ORACLE等成熟数据库系统基础上进行的一系列数据操作调度。后者分布式数据库则是集数据存储、管理以及分布式协调与计算为一体的数据库系统

2、数据切分

数据切分就是把数据分散存放到多个数据库或多个表中,使得单台主机中的数据量变小,使得通过扩充主机数量即可提升数据库操作性能的目的。

  • 数据切分可分为纵向和横向两种切分方法。
    • 纵向切分就是根据业务耦合性,将关联度低的不同表独立建成不同的数据库

      • 例如:当前A数据库中有关于【客户】【存款】【贷款】【支付】的各种表,拆分出来就是,将不同模块的数据表分库存储,模块间互相互关联,如果有,就必须通过数据冗余和应用层二次加工来解决。但若不能杜绝夸库关联查询,则此路不通。
        则纵向切分就是:
        • A数据库【客户】
        • B数据库【存款】
        • C数据库【贷款】
        • D数据库【支付】


          image.png
    • 横向切分是根据表内数据的逻辑关系,将同一个表按不同的条件拆分到多个数据库或多个表中

      • 横向也就是在纵向切分的基础上,进行库的多个复制。


        image.png

3、相关中间件

1、mycat  http://www.mycat.io/
2、cobar  https://github.com/alibaba/cobar
cobar 快速开始  https://github.com/alibaba/cobar/wiki/Quick-Start

你可能感兴趣的:(数据库分库分表操作)