0%

分库分表技术演进&最佳实践

分库分表的基本原理

分库分表的两种方式:垂直切分 和 水平切分

垂直切分: 垂直分表 和 垂直分库
水平切分: 水平分表 和 水平分库

垂直分表: 操作数据库中的某张表,把这张表一部分的字段存到一张新表中,再把这张表的另一部分字段存到另外一张表中
垂直分库: 数据库按照业务划分,不同的业务使用不同的数据库

水平分表: 根据key将数据存放到不同的表(一张表类型 对应了 多个表(表A 表B…))
水平分库: 根据key将数据存放到不同的数据库(一张表类型 对应了 多个数据库)

分库分表技术演进&最佳实践(参考文章)

https://www.bilibili.com/read/cv7536093?spm_id_from=333.788.b_636f6d6d656e74.23

分库分表中间件(ShardingSphere Mycat 和 DRDS)

ShardingSphere (包含 sharding-jdbc、Sharding-Proxy、Sharding-Sidecar)

Sharding-JDBC

定位为轻量级Java框架,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。

Sharding-JDBC Architecture

Sharding-Proxy(独立部署的进程 类似于 Mycat)

定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。 目前先提供MySQL/PostgreSQL版本,它可以使用任何兼容MySQL/PostgreSQL协议的访问客户端(如:MySQL Command Client, MySQL Workbench, Navicat等)操作数据,对DBA更加友好。

Sharding-Proxy Architecture

Sharding-JDBC 和 Sharding-Proxy 的相同点在于 : 核心步骤是一致的:SQL解析、重写、路由、执行、结果归并

MYCAT架构

img