同一数据库上的多个应用程序实例

Leo*_*nti 5 php mysql zend-framework multi-tenant

我正在编写一个应用程序,我将作为服务提供,也可以作为独立的应用程序提供.它是用Zend Framework编写的,并使用MySQL.

当我将其作为服务提供时,我希望用户在我的网站上注册并拥有customer1.mysite.com,customer2.mysite.com等子域名.

我希望将所有内容都放在一个数据库中,而不是为每个用户创建新的数据库.

但现在我想知道如何做得更好.我想出了两个解决方案:1.在每个表中都有用户id,并在每个数据库请求中将其添加到WHERE子句中.2.重新创建具有唯一前缀的表,例如'customer1_tablename','customer2_tablename'.

哪种方法更好?优点和缺点?是否有另一种方法可以在同一个数据库中分隔用户?

Leonti

nic*_*ckf 3

我会坚持将所有表放在一起,否则使用单个数据库几乎没有任何意义。这也意味着您可以切实地允许某种跨站点交互。只要确保将索引放在区分字段(customer_number或其他字段)上,就可以了。

如果表变得非常大且缓慢,请查看表分区

  • 如果您选择MyISAM,请注意它具有表级锁。例如,一个客户端正在对表中的行进行更新,所有其他客户端都必须等待它完成。InnoDB则没有这个问题。 (3认同)