【问题标题】:Mutli-instance vs Single-instance for web application [closed]Web 应用程序的多实例与单实例 [关闭]
【发布时间】:2016-09-01 14:40:58
【问题描述】:

我将构建一个销售和财务 Web 应用程序。应用程序将包含客户的一些敏感信息。因此,我决定对 DB 采用独立的方法,并将它们的数据库分开。但是,我对应用程序的单实例和多实例感到困惑。让我详细介绍一下我的申请。

  1. 应用程序会定期更新,例如将来会添加新功能。
  2. 每个客户都可以选择购买应用程序中的所有模块,也可以选择对他有用的特定模块。因此,通过这种方式,每个客户都可以选择我们提供的任何模块,例如他可以购买 2 个模块,也可以购买所有模块。
  3. 还有一个自定义选项。客户可以要求添加一个新模块来满足他的需求,但当然也不会有什么限制。
  4. 每个客户都有单独的网址。
  5. 会有一个产品模块,用户可以在其中添加他的产品(注意:这不是一个电子商务网站),每个客户都来自不同的行业,因此他们的产品规格要求会有所不同.例如:如果一位客户来自化妆品行业,那么他的产品实体将是名称、颜色、数量,如果另一位客户来自食品行业并销售饼干,他的产品实体将是名称和风味。所以,在这种情况下,如果我为所有人保留一个应用程序实例,那么,我怎么可能给每个客户提供具有不同字段的产品模块。

因此,对于此类应用程序,我正在考虑使用单实例应用程序,即一个应用程序实例,但我想听取专家的建议。

请就我的申请提出正确和最有效的选择。

谢谢。

【问题讨论】:

  • I am going to build a sales and finance web application. 然后你在考虑实现的时候就卡住了!只有一个问题:您是想自己编写这个漏洞代码还是想使用像 symony 这样的框架?
  • 它还没有决定,我正在努力,并且会选择最好的选项。你有什么建议,框架将是一个不错的选择?我没有被困住,我只是想选择这个选项,因为当我在研究它的架构时,我遇到了我在问题中提到的两个选项,所以我只需要专家的建议。
  • 真的不知道你想做什么,但是当我听到类似build a sales and finance web application 并且没有编写任何代码时,听起来就像:我想从我的零开始造一辆汽车自己的。如果你想做一些像应用程序这样的事情,有很多话题要讨论。请看看框架能为你做什么,这样你就不必自己编写所有这些东西了。请问您需要多长时间才能进入第一个工作阶段?
  • 我认为确定应用程序的基础架构是项目开发的基本步骤之一。如果不决定我的项目的主要结构,我该如何开始编写代码。你的问题的答案我想我需要 15 天 - 1 个月才能进入我的第一个工作阶段。
  • 我从事 PHP 开发已经有几年了,Mutli-instance vs Single-instance 从来都不是话题。我试图用 PHP togehter 搜索它,而不是这种组合的真正结果。也许我唯一的问题是你的问题的答案是在 SO 上讨论它的方式。

标签: php web-applications multi-tenant


【解决方案1】:

对于您的产品模块,解决方案是让您的用户自己配置他们的产品:

您的产品实体将包括每个产品存在的所有常见属性(可能是名称,也可能是其他东西)。

然后对于所有特定字段,创建一个中间实体来保留这些字段。

class Product
{
    /**
     * @var int
     */
    private $id;

    /**
     * @var string
     */
    private $name;

    /**
     * @var array
     */
    private $customFields;

    // ...
}

class CustomField
{
    /**
     * @var int
     */
    private $id;

    /**
     * @var string
     */
    private $fieldName;

    /**
     * @var string
     */
    private $fieldValue;

    // ...
}

这样,您的客户将定义他们产品的属性,您只需通过遍历 $customFields 数组来显示字段。

我认为这是实现您想要为产品模块做的最简单的方法。

【讨论】:

  • 非常感谢。这就是我要找的。 +1
  • 不客气。关于单/多实例问题,两者都是可行的,这取决于您(和您的项目),但是如果您选择使用单实例或多实例应用程序,那么您的架构将不一样。
  • 抱歉,您能否解释一下这是什么意思如果您选择使用单实例或多实例应用程序,您的架构将不一样?对不起,我没明白你的意思。
  • 我的意思是,如果您要提供单实例应用程序,您将设计您的应用程序,如果要提供多实例应用程序,您将采用另一种方式。例如,在多租户应用程序中,您将为每个客户拥有一个数据库,但在单实例应用程序中,您可以只使用一个数据库来完成这项工作。
  • 是的,完全正确。我的应用程序适用于多租户。再次感谢您的回答。
猜你喜欢
  • 1970-01-01
  • 2021-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
  • 2012-12-02
相关资源
最近更新 更多