分库分表概述

推荐阅读: mysql分库分表那些事

一、单一数据库的局限

  • 性能: 由于关系型数据库大多采用 B+ 树类型的索引,在数据量超过阈值的情况下,索引深度的增加也将使得磁盘访问的 IO 次数增加,进而导致查询性能的下降

    同时,高并发访问请求也使得集中式数据库成为系统的最大瓶颈

  • 可用性: 服务化的无状态型,能够达到较小成本的随意扩容,这必然导致系统的最终压力都落在数据库之上。而单一的数据节点,或者简单的主从架构,已经越来越难以承担。数据库的可用性,已成为整个系统的关键
  • 运维成本: 当一个数据库实例中的数据达到阈值以上,对于 DBA 的运维压力就会增大,数据备份和恢复的时间成本都将随着数据量的大小而愈发不可控

    一般来讲,单一数据库实例的数据的阈值在 1TB 之内,是比较合理的范围

  • 为什么不选择 NoSQL: NoSQL 对 SQL 的不兼容性以及生态圈的不完善

二、分库分表

1. 简介

数据分片: 指按照某个维度将存放在单一数据库中的数据分散地存放至多个数据库或表中以达到提升性能瓶颈以及可用性的效果

数据分片的有效手段是对关系型数据库进行分库和分表

分库和分表可以避免由数据量超过可承受阈值而产生的查询瓶颈:

  • 分库能够用于有效的分散对数据库单点的访问量
  • 分表能够尽量将分布式事务转化为本地事务

    注意: 分表无法缓解数据库压力

  • 使用多主多从的分片方式,可以有效的避免数据单点,从而提升数据架构的可用性

数据分片的拆分方式又分为垂直分片和水平分片

1. 垂直分片

  • 垂直分片: 按照业务拆分的方式称为,核心理念是专库专用
    • 拆分前,一个数据库由多个数据表构成,每个表对应着不同的业务
    • 拆分后,按照业务将表进行归类,分布到不同的数据库中,从而将压力分散至不同的数据库

垂直分片需要对架构和设计进行调整,来不及应对互联网业务需求快速变化,并且无法真正的解决单点瓶颈
在这里插入图片描述
垂直拆分的优点:

  • 库表职责单一,复杂度降低,易于维护。
  • 单库或单表压力降低。 相互之间的影响也会降低。

垂直拆分的缺点:

  • 部分表关联无法在数据库级别完成,需要在程序中完成。
  • 单表大数据量仍然存在性能瓶颈。
    单表或单库高热点访问依旧对 DB 压力非常大。
    事务处理相对更为复杂,需要分布式事务的介入。
    拆分达到一定程度之后,扩展性会遇到限制

2. 水平分片

  • 水平分片: 不再将数据根据业务逻辑分类,而是通过某个字段,根据某种规则将数据分散至多个库或表中,每个分片仅包含数据的一部分

    例如:根据主键分片,偶数主键的记录放入 0 库(或表),奇数主键的记录放入 1 库(或表)
    在这里插入图片描述

水平分片从理论上突破了单机数据量处理的瓶颈,并且扩展相对自由,是分库分表的标准解决方案

水平拆分的优点

  • 解决单表单库大数据量和高热点访问性能遇到瓶颈的问题
  • 应用程序端整体架构改动相对较少
  • 事务处理相对简单
  • 只要切分规则能够定义好,基本上较难遇到扩展性限制

水平拆分缺点

  • 拆分规则相对更复杂,很难抽象出一个能够满足整个数据库的切分规则
  • 后期数据的维护难度有所增加,人为手工定位数据更困难
  • 产品逻辑将变复杂。比如按年来进行历史数据归档拆分,这个时候在页面设计上就需要约束用户必须要先选择年,然后才能进行查询
课程简介 随着互联网的发展,软件的规模在逐渐变大,用关系型数据库如何存储和处理大规模的业务数据成为企业面临的挑战, 关系型数据库作为OLTP(联机事务处理过程)系统的首选毋庸置疑,但是关系型数据面对大规模数据的处理有其先天的不足,比如单表存储上千万数据时便会出现不同程度的处理速度缓慢问题,如何解决?分库分表技术就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来独立的数据库拆分成若干数据库组成 ,将数据大表拆分成若干数据表组成,使得单一数据库、单一数据表的数据量变小,从而达到提升数据库性能的目的。本课程将系统的讲解分库分表技术。 课程价值 分库分表技术是为解决关系型数据库存储和处理大规模数据的问题,主要应用于OLTP系统,它与应用于OLAP(联机分析处理)的大数据技术有不同的应用场景,本课程本着从解决生产实际问题出发,讲授分库分表技术的解决方案,包括:垂直分库、垂直分表、水平分库、水平分表、读写分离,涵盖了分库分表的各种方案,并且深入讲解Sharding-JDBC框架的原理及使用方法,通过学习本课程可以快速应用到生产实践中。 课程优势 本课程不仅讲解多种有效的分库分表的解决方案,还深入讲解了Sharding-JDBC框架的原理和使用方法,Sharding-JDBC是一套轻量级的对代码零侵入的框架,在生产中有广泛的使用。本课程从思想原理、技术框架、案例实操三个方面去学习,可以快速的将分库分表技术应用到生产实践中,解决大数据存储与处理的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值