• 【图灵学院02】大型互联网技术之数据库分库分表


    1. 介绍原理

    1.1 数据库介绍

    Oracle:

    Oracle很强大,一台还是满足不了现有的一个业务、多台Oracle费用,国美一年给甲骨文500多万。

    MySQL:免费、广泛(oracle收购)

    1.2 集群

    集群:并发问题?服务高可用、分组

    mysql-proxy官方: 读写分离。解决了高并发,没解决高可用,存在单点问题

    1.3 分库分表:

    1.3.1 类型:水平、垂直

    1.3.2 垂直:

    将一个属性比较多、行的数据比较大的表、把这个表的不同属性拆分成不同表、方式来降低单库(表)大小的目的来提高性能

    总结特点:

    1)每个库(表)的结构都不一样

    2)每个库(表)的数据都(至少有一列)一样

    3)每个库(表)的并集是全量数据

    1.3.3 水平:

    以某个字段按照一定的规律(取模)将一个表的数据分割到多个库(表)

    总结特点:

    1)每个库(表)的结构都一样

    2)每个库(表)的数据都不一样

    3)每个库(表)的并集是全量数据

    1.3.4 分库策略

    Hash取模,通过表的一列字段进行hash,取code % 1024

    Range范围区分:2016年 A库,2017 B库

    List预定义:分布式订单生成策略,100库全局ID生成

    1.3.5 分库分表之后的问题

    多数据源管理(proxy)

    跨库事务处理(避免XA 2pc 伸缩性差)TCC柔弱性事务

    查询数据的结果集合并(改写)

    分布式全局唯一ID(解决问题)

    遵循ACID前提下提高我们的并行能力

    2. 实战分库

    水平拆分:

    路由算法、一致性Hash

    hash(userid) = hashcode % 1024 = 777

    扩容问题:

    2.1 案例

    1)有6个库

    2)数据存到6个库中

    3)可以支持多台mysql数据源

    4)监控mysql状态、实现master/slave自动切换

    5)水平拆分、分表散列

  • 相关阅读:
    [WordPress]配置Wordpress
    [磁盘数据分析] 实现解析特定分区体系(DOS分区体系)的主引导记录扇区
    [FZOJ2150]Fire Game 技巧BFS
    [HDOJ1028]Ignatius and the Princess III (母函数)
    [POJ3281]Dining 最大流(建图奇葩)
    [POJ1273]Drainage Ditches 网络流(最大流)
    HDU 5416
    hdu 3853 概率dp
    POJ 3071 概率DP
    HDU 5000 2014 ACM/ICPC Asia Regional Anshan Online DP
  • 原文地址:https://www.cnblogs.com/yeahwell/p/7624914.html
Copyright © 2020-2023  润新知