spring boot jpa 多租户 基于 DataBase、Schema、Table

多租户实现分类
既然多租户设计的难点在于隔离用户数据,又同时共享资源。那么可以根据用户数据的物理分离程度来进行分类。

分为三类:数据库(DataBase)、模式(Schema)、数据表(Table)。

分离数据库
分离数据库类型每个租户在物理上单独使用一个数据库,JDBC 会连接到不同的数据库上,并且使用不同的连接池。一般应用程序会为每个租户添加一个 JDBC 连接池,然后根据访问的租户信息选择使用对应的连接池。

分离数据库类型

GitHub源代码 


分离模式
分离模式类型租户使用同一个数据库,但是分别创建一个模式(Schema)(“模式”是数据库的一个概念,这个翻译不是很好理解,下文本会使用 Schema 叙述)。这种类型下,不同租户使用的是不同 JDBC 连接池,和分离数据库类型一样。

分离模式类型
值得一提的是,不同的数据库供应商对 Schema 的定义不同。MySQL 认为 Schema 和数据库在物理上同义,所以在MySQL中 Schema 和数据库概念上完全一致。

GitHub源代码

给表添加标识
这种类型下,应用会为每个区分租户的实体添加鉴别信息。租户共享数据库,Schema 和数据表,每个相关查询语句中都需要添加租户信息,才能得到正确的结果。这种类型提供了最少的数据隔离,但可以最大限度地共享了数据。从架构上讲,它是概念上最简单的方案,而将复杂性推到了应用程序中,使得管理租户数据变得比较困难。

给表添加标识类型
数据量大的时候,单表压力较大!

GitHub源代码

以上内容截取自 Spring Boot JPA MySQL 多租户系统 Part1 - 基础实现

 网上很多关于 jpa 多租户的 博客,写的水分很大,连 demo 都算不上! 最基本的创建表结构没有做!

创建表结构使用的是 liquibase ,创建租户时,自动生成 表结构

GitHub全部源代码

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值