数据库中间件

遇到了什么问题,需要引入数据库中间件?

  1. 大量数据

  2. 大量请求

  3. 特殊业务需要,比如双库同步写入、数据同步、数据脱敏

数据库中间件是如何解决这些问题的?

数据分片

解决单个库数据量大的问题-分库

  • 垂直分库,从业务维度划分库

  • 水平分库,按照范围将相同业务表的数据拆分到不同库

解决单张表数据量大的问题-分表

  • 垂直分表,从业务维度拆分表字段到一个新的表中

  • 水平分表,按照范围将一张表的大量数据拆分为多个表

垂直分与水平分有什么区别

  • 垂直分是按照业务来对数据进行分片

    • 可提高访问性能

    • 对业务数据解耦,可对不同业务数据进行分级、维护、监控、扩展

  • 水平分则是按照数据的维度对数据分片

    • 维度主要包含:

      • 时间维度,年月周日

      • 地域

      • IP

      • 一定业务信息的Hash

数据分片会引出哪些新的问题

  • 数据分布在不同的实例中,存在一致性问题

  • 数据库事务问题

  • 跨库join查询、分页查询、排序

  • 主键避重

读写分离

多数据源整合

常见的数据库中间件有哪些

框架:

  • ShardingJDBC

代理:

  • ShardingProxy

  • MyCat

  • MyCat2

云原生:

  • ShardingSideCar

最后更新于