数据库架构

架构师之路

读写分离

一主多从,主从同步,读写分离,互联网大部分业务读多写少,一般读会先成为性能瓶颈。读写分离解决读写高并发问题,有以下特点:

  • 简单易操作
  • 线性提升读性能
  • 消除读写锁提升写性能
  • 冗余从库实现读高可用,写依旧单点

石杉的架构笔记

水平切分

水平切分是为了解决并发量高、数据量大的问题,具体方案是分库或分表,建议分库:

  • 分表公用一个库,依然是一个数据库文件,存在IO竞争
  • 分库可迁移到不同的实例,性能更高,扩展性更好

水平切分解决数据量大的问题,一般按主键id的范围或Hash值切分,有以下特点:

  • 多实例结构相同,共同组成全局数据,但互相独立
  • 多实例线性提升写性能

按范围切分要求主键递增,各实例间数据量不均、请求不均,优点是扩容简单,Hash切分则刚好相反,扩容可能导致数据迁移。

水平切分主键/非主键查询

水平切分非主键访问,可建立非主键到主键的二级索引或索引外置,通过二次查询查找数据,也可不用索引而通过基因法快速定位,参考

架构师之路1

架构师之路2

架构师之路3

架构师之路4

架构师之路5

跨库分页

架构师之路

全局唯一id

石杉机构

水平切分不能用分区表原因:
架构师之路

读写分离+水平切分

综合两者优点:

  • 线性提升读性能
  • 线性提升写性能

数据库中间件

目前基本使用基于客户端的sharding-jdbc或基于中间件服务的sharding-proxy

架构师之路

垂直切分

垂直切分多个实例结构不同,往往通过业务主键关联构成全局数据。垂直切分降低了单库数据量,进而降低磁盘IO提升吞吐量,一般与业务结合紧密:

  • 长度短,访问频率高放一起
  • 长度长,访问频率低放一起

列增加方案

架构师之路
架构师之路

版本号+通用ext列

架构师之路

  • 可随时动态扩展属性,迁移方便
  • ext无法索引

扩展行key-value

  • 一行变多行,不方便多列查询

平滑扩容

架构师之路

架构师之路

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值