关于saas多租户的疑问 返回
SqlSugar
老数据
7
1867
悬赏:5 飞吻
var db = new SqlSugarClient(new ConnectionConfig(){
DbType = SqlSugar.DbType.SqlServer,
IsAutoCloseConnection = true,
ConnectionString = Config.ConnectionString1,
ConfigId = "0"});//可以配一个默认
//动态添加连接
db.AddConnection(new ConnectionConfig(){
DbType = SqlSugar.DbType.SqlServer,
ConfigId = "1",//设置库的唯一标识
IsAutoCloseConnection = true,
ConnectionString = Config.ConnectionString2 });
//db.IsAnyConnection(configId)可以验证有没有当前连接这个是官方多租户分库隔离的写法,那么问题来了,saas平台用户10几万,甚至更多,每个租户都一个数据库,这样就需要初始化时全部加到db,db的Connection对象就会很多,会不会导致内存溢出或资源占用之类的问题?
热忱回答(7)
-
fate sta VIP0
2021/10/16肯定是有用户配置,多个用户共用一个库,只有特别的VIP用户才有唯用一个库
0 回复 -
fate sta VIP0
2021/10/16比如 集团A 和集团B 可以几个共用一个库 , 一些小用户可以 100个共用户一个库 , 超级大用户可独享一个库
0 回复 -
PA VIP0
2021/10/16@fate sta:
谢谢,还有一个问题多租户表id用雪花id还是guid哪个好一点?
如果用雪花id,id怎么实现新增(insert)的时候自动赋值,而不是每次通过代码赋值
0 回复 -
fate sta VIP0
2021/10/16自增特性加个自增特性 就行了 ,表里面也加上就可以了
分库后上面几种方式都可以,综合来说雪花ID更好些
0 回复 -
PA VIP0
2021/10/16@fate sta:
比如免费用户共用一个数据库,那么用表前缀来区分,还是加一个租户id来区分?
我个人倾向表前缀区分,这样用户自己数据不会混淆,后续查询效率也高。
如果用租户id,后期会所有用户数据混一起,数据多了效率低,也无法分表,分表会导致跨表查询,效率也低。
大神给点建议,业界一般都是怎么做的?
0 回复 -
fate sta VIP0
2021/10/16@PA:根据 用户公司最高的ID 进行区分就行了
0 回复 -
fate sta VIP0
2021/10/16因为已经分库了就没必要在分表考虑性能了
0 回复