在为多个客户端设计的以数据库为中心的应用程序中,我一直认为为所有客户端使用单个数据库"更好" - 将记录与适当的索引和密钥相关联.在收听Stack Overflow播客时,我听到Joel提到FogBugz每个客户端使用一个数据库(所以如果有1000个客户端,则会有1000个数据库).使用这种架构有什么好处?
据我所知,对于某些项目,客户需要直接访问所有数据 - 在这样的应用程序中,很明显每个客户端都需要自己的数据库.但是,对于客户端不需要直接访问数据库的项目,每个客户端使用一个数据库有什么好处吗?似乎在灵活性方面,使用具有表的单个副本的单个数据库要简单得多.添加新功能更容易,创建报告更容易,而且管理起来更容易.
我对"所有客户的一个数据库"方法非常有信心,直到我听到Joel(一位经验丰富的开发人员)提到他的软件采用了不同的方法 - 我对他的决定感到有些困惑......
我听说人们引用数据库会因为大量记录而变慢,但任何具有一些优点的关系数据库都不会出现这个问题 - 特别是如果使用了正确的索引和键.
任何输入都非常感谢!
我见过SaaS应用程序以多种不同的方式托管.跨多个数据库拆分功能和模块是一个好主意吗?例如,将User表放在一个DB上,将功能/ app特定表放在另一个DB上,也可能放在另一个DB中的其他常用共享表中?
architecture database-design saas multi-tenant database-schema
我有一个我为卡车公司建立的网络应用程序,我想作为SaaS提供.设计数据库的最佳方法是什么?
我应该为每家公司创建一个新数据库吗?或者我应该使用一个数据库,其中包含具有公司名称前缀的表格?或者我应该在每个表中使用一个数据库,只需在表中添加公司ID字段?或者还有其他方法吗?
我在服务器上的数据库中保存了一组基本数据.当用户注册我的服务时,我希望能够将此数据库复制到另一个已创建的数据库.使用PHP/MySQL有一种简单有效的方法吗?纯MySQL更可取.
我想过循环遍历基础数据库中的所有表,但我不知道如何创建包含新数据库列的表.
运行PHP 5.1和MySQL 5.
谢谢.