首页 新闻 搜索 专区 学院

有类似多租户的需求,关于数据存储这块,我这样子设计会不会有什么问题。

0
悬赏园豆:5 [待解决问题]

先说说我的软件,我的软件是一个类似 ERP 类的软件。某个行业的erp。

因为订单和库存表可能会相当大(因为目前我已经有用户,单个大的用户库存库位都是上百万的,所以我不是在杞人忧天。)

我的想法是,将某些用户的订单数据、库存数据根据配置放在某一个库。
比如
用户A、B、C 我放在了 数据库A
当某天,来了新用户D,我发现ABC三个人的订单量和库存量太大了,新用户D来了以后,我为它重新配置了一个数据库B。(我不选择一个用户一个库是因为,我怕小用户一多,每个小用户一个库,成本太高,我希望的是酌情处理。)

如此往复。

我将 用户 A B C D 他们的数据库配置信息以及其他公共信息,比如用户的账号密码等写在同一个库S作为公共库。

也就是说,假设用户创建销售单,我的web api提供了创建销售单的api,他提交请求过来后,我先去公共库拿他的数据库连接字符串的信息,再去实例化操作类,再去操作他的订单表。

根据我目前自己能想到的,感觉这样子的设计好像不会有什么问题。我这样子做,主要是为了能让数据库更容易水平拓展,再配合统一网关,在网关处做负载。

像这样子设计,会出现哪些比较棘手的问题吗?因为我之前的都是单库,所以我怕我想得不够,请各位介绍一下经验,谢谢。
业内一般都是怎么样一个设计呢?

LoveCoder的主页 LoveCoder | 初学一级 | 园豆:4
提问于:2020-04-23 21:34

你这种情况分表就够了吧,感觉没必要分库了。 分库一般是因为内存和cpu支撑不起来做负载均衡,如果仅仅是数据量大,分表,加磁盘就够了。

。淑女范erり 5个月前

@。淑女范erり: 为什么分表更好?

LoveCoder 5个月前

@LoveCoder: 简单一些,开销也小一些,如果分表满足,就不必要搞分库,分库毕竟是完整的一套系统,而且程序上也要处理多个数据源。

。淑女范erり 5个月前
< >
分享
所有回答(4)
0

分表也会有sql使用上的限制,分库的话在多数据源并发请求时,磁盘io会很高,可以试试单数据源内多数据库

A** | 园豆:202 (菜鸟二级) | 2020-04-24 11:51
0

我感觉你的方案可行,如果分库后,多库表结构同步需要考虑。多库也需要进行管理。

保镖 | 园豆:620 (小虾三级) | 2020-04-24 14:13

嗯。假设动一个表结构,就需要把所有库给改动,管理上可能是会需要某种保证同步的机制。
当前情况下我应该还不需要多很多库。
其他不知道还会不会存在我没想全的问题。

支持(0) 反对(0) LoveCoder | 园豆:4 (初学一级) | 2020-04-24 14:25

@LoveCoder: 如果库不多的话,做好变更记录手动弄吧。以后多了得考虑工具。

支持(0) 反对(0) 保镖 | 园豆:620 (小虾三级) | 2020-04-24 14:28

如果变更频繁,上工具吧(也可以自己写)。

支持(0) 反对(0) 保镖 | 园豆:620 (小虾三级) | 2020-04-24 14:30
0

最近刚看的一篇 分库分表文章:https://mp.weixin.qq.com/s/FP9XcZOnXmEOyUmCKnVoEw
我现在的项目,第二也阶段也是要分库分表, 大概思路就是:
主库
租户信息管理,
配制分库分表信息,
公共的一些配制信息
业务库
租户业务表:一个租户一套表

最后实现可以把优质客户特殊处理
业务量大的可以抽出来 单独一个库
业务量少的,可以抽出来合并在一个库
免费客户统一放到一个库,当然每租户都是独主的一套表

这样也能支持独立部署

JalanWang | 园豆:202 (菜鸟二级) | 2020-05-07 14:28
0

  笔者也在做多租户产品。

  在设计多租户SaaS应用时,您必须谨慎地选择最适合您应用程序需求的租户模型。租户模型决定了每个租户的数据如何映射到存储。您选择的租户模型会影响应用的设计和管理。如果前期没有选择合适,以后再切换到另一个模型有时代价昂贵。

  详细请参考:《多租户SaaS数据库租赁模式》

戎"码"一生 | 园豆:172 (初学一级) | 2020-05-19 22:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册