Java spring 问题,如何根据模版实时指定服务器建库。谢谢解答 300C

业务场景:
一个项目一年内有5000个客户,每个客户在业务应用中有3个数据库表,在客户注册成为新会员时,如果用springboot实现实时建表功能,同时可以指定服务器,并且可以给出数据库服务器ip=》数据库名称=》数据表=》进行业务增删改查。
或者,springboot如果不能实现,给个大体思路也行。

        问题有点苛刻,意在交流,欢迎大家给出好的方案。谢谢
0

5个回答

就是打算根据不同的用户来进行连接不同的服务器,数据库,包括表,其实就是想动态数据源吗

0
weixin_39808420
MR-----zhang 回复u014353911: 问题可能在切换数据源的时机上了吧,这个需要好好过一遍
7 个月之前 回复
weixin_39808420
MR-----zhang 回复u014353911: 对呀,用户注册之后,给他分配一个服务器,数据库mysql为例,可以直接连到test数据库,然后新建数据库,新建表,然后对新建库的表操作就好了
7 个月之前 回复
u014353911
wuruize888 回复weixin_39808420: 1.新注册用户同时依据模版信息新建数据库和表
7 个月之前 回复
weixin_39808420
MR-----zhang 我觉着吧,用户表肯定都要是一样的,然后把你的服务器数据库资源有表罗列出来,然后第一次注册登录的时候,然后就取一个可以用的数据源(就是服务器 数据库)然后执行建表,之后记录下来,切换数据源,下次登录的时候,就不是第一次登录了,然后查他的数据源,然后切换数据源就好
7 个月之前 回复

不知道JSCH是否能满足你的需求,

每个客户在业务应用中有3个数据库表我不是很明白, 你看一下我之前写的博客吧
https://blog.csdn.net/wangyijie521/article/details/78787286

0

一,新客户注册时创建新库新表应该不难,不会网上也有一大堆资料参考;
二,实时创建库、表,这个其实就是连接不同而已,根据不同的模板连接不同的服务器(test数据库)来创建新库、新表即可,貌似也没什么难度;
三,根据不同客户使用对应的数据源,那么在注册 创建新库、新表时肯对需要建立对应的关系并且动态创建对应的数据源,至于多数据源怎么切换,百度一下会有很多实现,注意持久化!

0
u014353911
wuruize888 有点看不懂,能细化否?谢谢
7 个月之前 回复

SaaS系统,这个不是springboot能不能实现的问题,是系统解决方案的问题,2种解决方案。
1、多租用户共享一套数据库,最简单的就是使用一个id,进行分库分表,比如businessId,这样实现比较简单
2、如果如你说的,多租用户使用不同的数据库实例,肯定使用享元设计模式了,但是需要对每个接口都提供工厂方法。
还有一种简单的就是可以对操作数据库的那一层写一个切面,通过固定参数,比如businessId,选择不同的数据源,进行操作。

0
qq_21780143
敲代码的农民 如果不同租户的数据库可以放到一个实例中,可以采用楼下说的自动创建库表,如果是不同数据库 不同实例,可能需要手动维护,或者使用云平台进行自动扩容。
7 个月之前 回复
qq_21780143
敲代码的农民 DatabaseInfo 可根据用户信息从db中获取真实的数据库连接信息
7 个月之前 回复
qq_21780143
敲代码的农民 回复u014353911: /** * 根据DatabaseInfo的某些属性进行不同数据源切换 */ @SplitDatabase public List<Data> getData(DatabaseInfo databaseInfo){ return dao.getData(); } /** * 需要继承spring 的 AbstractRoutingDataSource ,切面获取DatabaseInfo信息,进行DataSource的封装 */ public class RoutingDataSource extends AbstractRoutingDataSource{ }
7 个月之前 回复
u014353911
wuruize888 能细化否?谢谢,对切面这个比较感兴趣
7 个月之前 回复
0
u014353911
wuruize888 越来越靠谱了,能否在细化一下,谢谢
7 个月之前 回复
qq_16127313
爱码少年 客户数据源的配置可以保存在数据库里面,使用的时候可以懒加载绑定到特定类别的客户。
7 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!