我有一个艰难的数据库设计决策,关于多租赁,因为我的客户的客户端的客户关系管理的分支越来越多,我积极维护。
我很早就决定为每个分支使用具有不同数据库的单独应用程序,因为这是满足具有不同数据和代码需求的三个不同分支的最简单方法。我还想避免在每个查询中管理租户in,就像我在2007...the恐怖中构建的遗留经典ASP (cringe)应用程序一样。
但是现在,对分支机构的数据需求正在趋同,随着业务的扩展,我需要能够快速推出新的分支,并共享全球产品SKU。
由于表和视图对于所有分支都是相同的,而且现在可以使用更好的ORM工具来管理多租户应用程序,所以我想知道是否应该为多个分支创建一个共享数据库。
对集中化数据库的考虑:
SKUs
部署一次
对集中化数据库的考虑:
everywhere
<代码>H 119更少的子句
H 222f 223)不太可能会有多达10个分支机构。现在有三个。
在这个领域有实际经验的开发人员,在我的情况下你会怎么做?将应用程序和数据库分开,还是合并成一个巨大的系统?
编辑:大Microsoft article的多租赁赞成和反对。我应该指出,分支之间的数据隔离不是一个主要问题。
发布于 2011-04-26 22:46:21
咬住子弹把他们合并。将租户ID添加到需要的位置,并更改查询。
对于自定义,请查看插件类型体系结构,它允许您为特定客户端部署特定屏幕。
我们有一个软件产品,正是以这种方式构建的。有时它被部署在客户端站点上,有时我们托管它。就所有意图和目的而言,是的数量级,它是一个具有客户端特定扩展的单个代码库,而不是处理代码的多个分支。
首先,当我们解决一个问题时,我们为每个人解决它。当然,如果我们打破它,我们为每个人打破它,但这就是单元测试的目的。而且,针对一个代码库维护一组单元测试比为多个分支维护它们要容易得多。
我们已经做了十多年的多租户,我一次也没回头看过。一般来说,如果您已经有安全意识来验证检索记录的人是否允许获取记录,那么查询就没有那么大的不同。
我不同意科尔宾提出的问题。在版本控制方面,应该已经通过设置一个基于属性的安全结构来处理。通过这种方式,您可以通过用户或租户配置打开/关闭设备。而且,我发现客户端A不需要客户端B所要求的相同的新功能是非常罕见的。
关于数据混合的第二个问题也不是问题。只需查看salesforce.com或任何其他大型站点即可。他们绝对使用多租户架构,从使用它们的客户端数量来看,这似乎不是一个问题。这里的主要内容是能够确保您的客户端数据是安全的。
发布于 2011-04-08 15:27:06
如果你说的是10家分店,多租赁似乎是一笔很大的成本,却没有什么好处。
有复杂的多租户,你没有提到:
你可以通过更好的实践来消除你的一些痛苦:
别误会,我用过的一个更有趣的应用是多租户。这可能会带来巨大的好处,但你更有可能看到他们拥有成千上万的客户,而不是十个客户。
发布于 2011-04-26 18:33:02
老实说,这是个商业问题。您可以在多租户设置中向较小的用户组提供更多的自定义功能,但需要更多的IT开销。也就是说,您将需要更多的人员和硬件(管理人员阅读:金钱),但提供更大的灵活性。
如果您处于一个巨大的Borg环境中,那么您可以降低IT开销(同样,人员和事物,用于管理资金),但最终用户必须在软件中吸收较少的灵活性。所有的错误对所有用户来说都是问题,所以大的错误很快就会被清除掉。然而,新特性也会影响到所有用户,因此它们发生的速度更慢。
如果你个人有能力打这个电话,而企业只需要听你说的话,或者你可以以某种方式推动管理层,我建议你问自己一系列关于你喜欢哪种情况的问题:
你是否希望有更多的人来管理这个项目,并分享你的工资/责任)(就你所知,很快就会有第四个用户组了吗?你想在这家公司呆多久?
如果你对前两个回答是肯定的,那么你可能想要多租户。
https://stackoverflow.com/questions/5596755
复制相似问题