海量数据的存储与访问瓶颈解决方案

一:数据切分

就是通过某种条件,将我们之前存储在一台数据库上的数据,分散到多台数据库中,从而达到降低单体数据库负载的效果。

数据切分,根据其切分的规则,大致分为两类:垂直切分和水平切分。

 

二:垂直切分

将不同表放在不同库中

优点:

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

    2、系统之间容易扩展和整合

    3、数据维护简单

缺点:

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

    2、跨库事务难以处理

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

 

三:水平切分

将一个表中的数据,根据某种规则拆分到不同数据库中。

几种水平拆分的典型分片规则:

    1、用户id求模

    2、根据日期拆分数据

    3、按照其他字段求模

优点:

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

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

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

缺点:

拆分规则很难抽象

分片事务一致性难以解决

二次扩展时,数据迁移、维护难度大。比如:开始我们按照用户id对2求模,但虽业务增长,2台数据库难以支撑,还要继续拆分成4台数据库,就需要做数据迁移。

 

四:针对多数据源管理,主要两种方式:

1、客户端模式

在每个应用模块内,配置自己需要的数据源,直接访问数据库,在各模块内完成数据的整合。成熟应用:MyCat

2、中间代理模式

中间代理统一管理所有数据源,数据库层对开发人员完全透明,开发人员无需关注拆分的细节。成熟应用:sharding-jdbc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值