【问题标题】:One site : multiple clients : how to organize一个站点:多个客户:如何组织
【发布时间】:2015-07-02 18:24:05
【问题描述】:

我有一个网站(一个工具),我想为多个客户使用。当然,每个客户的工具都有单独的登录名、设置和内容。所以我的问题是:什么是最聪明、最安全、最快的组织方式。我希望这对客户和我自己来说都很容易。

选项 A:每个客户都有一个子域,因此有他自己的网站 + 数据库。缺点:当我对代码执行更新时,我必须编辑每个子域。更改数据库模型也是如此。优点:?

选项 B:一个网站使用全局数据库进行登录,每个用户使用一个数据库。用户登录后,网站会在全局数据库中检查他需要哪个客户端数据库并加载该数据库。优势:一个站点(= 一次更新),单独的数据库(= 更安全?)。缺点:更改数据库模型意味着我必须更新每个数据库。

选项 C:一个网站使用一个数据库。来自所有客户端的所有数据都存储在同一个数据库中。优势:一个站点(= 一次更新),一个数据库(= 一次更新)。缺点=数据库可以变大吗?如果数据库被盗,所有数据都在其中,需要良好的编程以确保客户端 A 只能看到他的资料,而不是来自用户 B、C 等的信息。

选项 D?

我正在用 PHP 编程,数据库是 MySQL。

感谢任何反馈。

杰夫

【问题讨论】:

  • 一般来说,您会将所有内容存储在一个数据库中。但是,您似乎了解不同解决方案的权衡取舍,因此您必须决定应用程序的要求。选择最符合这些要求的解决方案。
  • 这不是适合 SO 或任何 SE 网站的问题类型。 SE 是针对相对狭窄的问题,可以有具体的答案,可以判断正确/错误(你接受最正确的一个)。这太宽泛了,有很多可能的方法。它更适合您可以进行持续设计讨论的网站,而不是问答网站。
  • 共享数据库的一个缺点是每个客户端的活动都会影响其他客户端的性能。根据业务的性质,一些客户可能不太热衷于将他们的数据与其他客户的数据混合在一起。
  • 根据您的服务器及其配置,一个数据库可以长期使用。我们可以知道您开发了什么样的工具以及您估计拥有多少客户?它将帮助您找到最佳选择。

标签: mysql database-design database-schema


【解决方案1】:

多个子域不需要代码的多个副本。

由于 cookie 范围问题,使用子域通常不太安全。

我会认真考虑放弃 mysql 作为您的数据库,并改用 postgres,因为 postgres 是一个数据库集群,这意味着它在一台服务器上有多个真实数据库。 mysql 只有一个数据库(但有多个模式,称为“数据库”)。这样做的好处是数据库不能相互通信,但可以独立备份/恢复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多