JAVA学习实战(十二)分库分表学习

关于介绍分库分表之前
我们需要思考一个问题
为什么要有分库分表呢?他是为了解决什么样的问题呢?
分库分表主要解决的问题是数据量增大的问题
那么有没有别的方式来解决这种问题呢?
有的,比如redis等缓存,但是分库分表并没有像redis缓存一样颠覆了当时的发展,而是在现有体系下的修修补补,更多的是对于当前关系型数据库的一种补充
当前个人以为解决数据量大主要有四种方向:
1.nosql数据库,即使用更高效的非关系型数据库来解决当前的问题
2.读写分离
3.创建索引机制进行优化
4.分库分表

什么是分库分表呢?
分库分表对于库和表都可以进行水平拆分和垂直拆分

先说说什么是垂直拆分吧,为了便于理解,我们可以理解一张表格,竖着一刀切下来,会呈现什么样的效果呢?
每个拆分出来的表都具有不同的结构,但是他们的数据量是一样的
对于数据库来说也是一样的
一个电商的数据库可以拆分成多种库,比如订单数据库,会员数据库,商品数据库等
一个用户user表也可以拆分成比如登录表和用户信息表
个人理解垂直拆分的主要作用是尽可能少的减少不必要信息的检索,比如我要进行用户登录,那我就只需要用户名和密码,我如果把用户的手机号等个人信息全都查出来的话,那我理解其实没什么用,反而还加大了资源的浪费

垂直拆分的特点:
每个表/库的数据结构都不一样
每个表/库的数据都有一列是一样的
每个库/表的并集是全量数据

垂直拆分的优点是拆分之后编写业务逻辑会清晰很多,并且相对来说数据维护会简单,可以按照业务存放在不同的机器上
但是垂直拆分并没有解决数据库数据量大的时候的读写压力大的问题

水平拆分的特点:
每个库表的数据结构都一样
每个库表的数据是完全不同
库/表的并集是全量数据

水平拆分的优点:
单库/表的数据量保持在一定的量,有助于性能的提高
提高了系统的稳定性/负载能力
拆分的表的结构相同,程序改动较小

缺点:
数据的扩容难度较大,维护起来很有难度
拆分规则很难抽象出来
分片事物的一致性问题导致部分事物无法关联只能通过join,只能通过java程序去调用

场景:
根据不同的规则去进行拆分当然要考虑场景了
比如我们要按照orderid还是userid去进行拆分呢?
这个当然要考虑业务场景了
比如你如果是前端用户多,你就要按照userid去进行拆分,因为每个用户更多的只关心自己购买的 东西
比如你是后台管理的用户多(比如警察的内部系统),你就要按照orderid去进行拆分,因为当前的使用人员并不关心每一个用户他具体的信息,而关注的是别的粒度的信息

分库分表也会带来一些问题:
分布式事物的acid问题
跨库join问题
分布式全局唯一id
开发成本高,对编码者要求高

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
课程简介 随着互联网的发展,软件的规模在逐渐变大,用关系型数据库如何存储和处理大规模的业务数据成为企业面临的挑战, 关系型数据库作为OLTP(联机事务处理过程)系统的首选毋庸置疑,但是关系型数据面对大规模数据的处理有其先天的不足,比如单表存储上千万数据时便会出现不同程度的处理速度缓慢问题,如何解决?分库分表技术就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来独立的数据库拆分成若干数据库组成 ,将数据大表拆分成若干数据表组成,使得单一数据库、单一数据表的数据量变小,从而达到提升数据库性能的目的。本课程将系统的讲解分库分表技术。 课程价值 分库分表技术是为解决关系型数据库存储和处理大规模数据的问题,主要应用于OLTP系统,它与应用于OLAP(联机分析处理)的大数据技术有不同的应用场景,本课程本着从解决生产实际问题出发,讲授分库分表技术的解决方案,包括:垂直分库、垂直分表、水平分库、水平分表、读写分离,涵盖了分库分表的各种方案,并且深入讲解Sharding-JDBC框架的原理及使用方法,通过学习本课程可以快速应用到生产实践中。 课程优势 本课程不仅讲解多种有效的分库分表的解决方案,还深入讲解了Sharding-JDBC框架的原理和使用方法,Sharding-JDBC是一套轻量级的对代码零侵入的框架,在生产中有广泛的使用。本课程从思想原理、技术框架、案例实操三个方面去学习,可以快速的将分库分表技术应用到生产实践中,解决大数据存储与处理的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会说话的皮卡丘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值