关于saas多租户的疑问 返回

SqlSugar
7 199
该叫什么 PA 发布于1个月前
悬赏: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 fate sta VIP0
    1个月前

    肯定是有用户配置,多个用户共用一个库,只有特别的VIP用户才有唯用一个库

    0 回复
  • fate sta fate sta VIP0
    1个月前

    比如  集团A 和集团B 可以几个共用一个库  ,  一些小用户可以 100个共用户一个库 , 超级大用户可独享一个库

    0 回复
  • PA PA VIP0
    1个月前

    @fate sta

    谢谢,还有一个问题多租户表id用雪花id还是guid哪个好一点?


    如果用雪花id,id怎么实现新增(insert)的时候自动赋值,而不是每次通过代码赋值


    0 回复
  • fate sta fate sta VIP0
    1个月前

    自增特性加个自增特性 就行了 ,表里面也加上就可以了


    分库后上面几种方式都可以,综合来说雪花ID更好些 

    0 回复
  • PA PA VIP0
    1个月前

    @fate sta

    比如免费用户共用一个数据库,那么用表前缀来区分,还是加一个租户id来区分?

    我个人倾向表前缀区分,这样用户自己数据不会混淆,后续查询效率也高。


    如果用租户id,后期会所有用户数据混一起,数据多了效率低,也无法分表,分表会导致跨表查询,效率也低。


    大神给点建议,业界一般都是怎么做的?

    0 回复
  • fate sta fate sta VIP0
    1个月前

    @PA:根据 用户公司最高的ID 进行区分就行了

    0 回复
  • fate sta fate sta VIP0
    1个月前

    因为已经分库了就没必要在分表考虑性能了

    0 回复