一套程序多个租户,每个租户独立数据库

需求

一个程序服务,多个租户,每个租户独立数据库,每个租户下的用户访问自己的租户数据库

只能部署一套程序服务,否则新增修改一个需求要部署发布50次

实现

  1. 写一个租户管理后台,将租户的数据库连接信息存到公共基础的一个数据库中,新增租户自动新增一个数据库
  2. 租户管理后台包含所有租户的账号用户和会员用户管理,用户登录先访问公共数据库获取用户信息(属于哪个租户),后续所有操作数据都保存到自己的租户数据库

问题

  1. 如何解决有50个租户则要创建50个数据库,新增一个需求添加一个字段则50个数据库都要添加
  2. 如何懒加载程序配置文件(yml)或动态路由数据库连接配置(程序只配置公共数据库的连接,根据租户用户登录查询出租户数据库连接后再加载进去)
  3. 如何用户信息访问公共数据库,订单产品等其他信息访问租户数据库

解决方法

  1. 租户管理后台需要有数据库表设计器页面,新增表新增字段修改字段什么的在web页面上操作,保存的时候所有数据库都执行sql
  2. 不知道,nacos配置中心?,或每新增一个租户将数据库配置手动添加到配置文件中
  3. 不知道

更多问题

还有哪些问题需要解决

集思广益,寻求最优解决方案,需要试用哪些技术,java优先

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在SaaS(Software as a Service)模式下,多租户数据库是一种常见的设计方式。它可以让多个租户共享同一套应用程序,并且每个租户的数据都是隔离的。 以下是一些常见的多租户数据库设计策略: 1. 完全隔离:为每个租户创建独立数据库实例,这样可以完全隔离不同租户的数据。这种方式对于数据安全性要求高的场景比较适用,但是会带来一些额外的成本和管理复杂度。 2. 共享数据库、不共享表:在同一个数据库实例中为每个租户创建独立的表空间,每个租户的数据都存储在自己的表空间中。这种方式可以避免完全隔离带来的管理复杂度,但是需要确保不同租户使用的表名不重复。 3. 共享数据库、共享表:在同一个数据库实例中为所有租户共享同一张表,但是在表的结构中添加一个租户ID字段,以区分不同租户的数据。这种方式可以节省存储空间和管理成本,但是需要确保不同租户的数据不会交叉。 4. 共享数据库、共享架构:在同一个数据库实例中为所有租户共享同一个数据库架构,但是为每个租户创建独立的表。这种方式可以避免共享表带来的数据交叉问题,同时也能够节省存储空间和管理成本。 需要注意的是,多租户数据库设计需要考虑到数据安全、数据隔离、数据可扩展性和管理复杂度等因素,选择适合自己业务场景的策略非常重要。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值