首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给多租户,还是不给多租户

给多租户,还是不给多租户
EN

Stack Overflow用户
提问于 2011-04-08 14:42:00
回答 8查看 4.5K关注 0票数 18

我有一个艰难的数据库设计决策,关于多租赁,因为我的客户的客户端的客户关系管理的分支越来越多,我积极维护。

我很早就决定为每个分支使用具有不同数据库的单独应用程序,因为这是满足具有不同数据和代码需求的三个不同分支的最简单方法。我还想避免在每个查询中管理租户in,就像我在2007...the恐怖中构建的遗留经典ASP (cringe)应用程序一样。

但是现在,对分支机构的数据需求正在趋同,随着业务的扩展,我需要能够快速推出新的分支,并共享全球产品SKU。

由于表和视图对于所有分支都是相同的,而且现在可以使用更好的ORM工具来管理多租户应用程序,所以我想知道是否应该为多个分支创建一个共享数据库。

对集中化数据库的考虑:

SKUs

  • Simplified requisitions

  • Easier to备份

  • 部署一次,而不是为每个分支

部署一次

对集中化数据库的考虑:

everywhere

  • Restoring
  • 更容易区分不同DB的
  • 模块部署(一个下行分支不会破坏所有)为共享DB
  • 更难管理和开发的
  • 我不得不重新设计发票编号(由seed生成的顺序)

<代码>H 119更少的子句

  • 模块部署(一个中断的分支对其他分支有很大的影响H 222f 223)

不太可能会有多达10个分支机构。现在有三个。

在这个领域有实际经验的开发人员,在我的情况下你会怎么做?将应用程序和数据库分开,还是合并成一个巨大的系统?

编辑:Microsoft article的多租赁赞成和反对。我应该指出,分支之间的数据隔离不是一个主要问题。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-04-26 22:46:21

咬住子弹把他们合并。将租户ID添加到需要的位置,并更改查询。

对于自定义,请查看插件类型体系结构,它允许您为特定客户端部署特定屏幕。

我们有一个软件产品,正是以这种方式构建的。有时它被部署在客户端站点上,有时我们托管它。就所有意图和目的而言,的数量级,它是一个具有客户端特定扩展的单个代码库,而不是处理代码的多个分支。

首先,当我们解决一个问题时,我们为每个人解决它。当然,如果我们打破它,我们为每个人打破它,但这就是单元测试的目的。而且,针对一个代码库维护一组单元测试比为多个分支维护它们要容易得多。

我们已经做了十多年的多租户,我一次也没回头看过。一般来说,如果您已经有安全意识来验证检索记录的人是否允许获取记录,那么查询就没有那么大的不同。

我不同意科尔宾提出的问题。在版本控制方面,应该已经通过设置一个基于属性的安全结构来处理。通过这种方式,您可以通过用户或租户配置打开/关闭设备。而且,我发现客户端A不需要客户端B所要求的相同的新功能是非常罕见的。

关于数据混合的第二个问题也不是问题。只需查看salesforce.com或任何其他大型站点即可。他们绝对使用多租户架构,从使用它们的客户端数量来看,这似乎不是一个问题。这里的主要内容是能够确保您的客户端数据是安全的。

票数 7
EN

Stack Overflow用户

发布于 2011-04-08 15:27:06

如果你说的是10家分店,多租赁似乎是一笔很大的成本,却没有什么好处。

有复杂的多租户,你没有提到:

  • 版本控制变得很困难。客户端X、Y和Z可能需要一个新功能,而客户端A、B和C则不需要。多租户应用程序使每个人都很难适应,特别是当一个新功能需要更改数据库模式时。这并不是不可能的,只是更多的difficult.
  • Some客户端对数据与其他客户端混合在同一个表中感到非常不舒服。尽管我们知道得更清楚,但对他们来说这是一种安全风险。法律部门讨厌它。此外,如果您曾经为客户端转储原始数据,则共享数据库需要小心。

你可以通过更好的实践来消除你的一些痛苦:

  • 自动部署。这将使添加新客户端或升级/降级现有客户端变得更容易。数据库维护(备份、重建索引)也应该自动设置。
  • 将共享数据(SKU,库存)存储在一个中央数据库中,并让每个应用程序实例直接或通过服务访问它。

别误会,我用过的一个更有趣的应用是多租户。这可能会带来巨大的好处,但你更有可能看到他们拥有成千上万的客户,而不是十个客户。

票数 7
EN

Stack Overflow用户

发布于 2011-04-26 18:33:02

老实说,这是个商业问题。您可以在多租户设置中向较小的用户组提供更多的自定义功能,但需要更多的IT开销。也就是说,您将需要更多的人员和硬件(管理人员阅读:金钱),但提供更大的灵活性。

如果您处于一个巨大的Borg环境中,那么您可以降低IT开销(同样,人员和事物,用于管理资金),但最终用户必须在软件中吸收较少的灵活性。所有的错误对所有用户来说都是问题,所以大的错误很快就会被清除掉。然而,新特性也会影响到所有用户,因此它们发生的速度更慢。

如果你个人有能力打这个电话,而企业只需要听你说的话,或者你可以以某种方式推动管理层,我建议你问自己一系列关于你喜欢哪种情况的问题:

你是否希望有更多的人来管理这个项目,并分享你的工资/责任)(就你所知,很快就会有第四个用户组了吗?你想在这家公司呆多久?

如果你对前两个回答是肯定的,那么你可能想要多租户。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5596755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档