mysql - 一个站点 : multiple clients : how to organize

标签 mysql database-design database-schema

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

选项 A:每个客户都会得到一个子域,从而得到他自己的网站 + 数据库。缺点:当我对代码执行更新时,我必须编辑每个子域。与更改数据库模型相同。优点: ?

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

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

选项D?

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

欢迎任何反馈。

杰夫

最佳答案

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

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

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

关于mysql - 一个站点 : multiple clients : how to organize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31191941/

相关文章:

sql - MySQL 从日期列中获取每个月的最后一个日期

database - 存储大量数据 : DB or File System?

database - 我应该如何拆分数据库?

mysql - 满足多种用户偏好的数据库设计?

php - 在 Doctrine 中连接实体子类的关系

mysql - JOIN 与 WHERE : Why do two queries that obtain identical results exhibit 3-4 orders of magnitude performance difference?

php - 通过 header 传递变量

mysql - 处理电子商务返回的数据库模型

ruby - 带有删除表的 rake db :migrate updating schema. rb

mysql - SQL数据库架构设计