我用CodeIgniter编写了一个PHP应用程序。我计划将其作为托管应用程序(软件即服务)进行销售。
这些应用程序允许用户:
- 创建帐户
- 创建用户
- 管理文件
- 管理订单
- 有通讯录
- 搜索
- 报告等等它使用一个数据库。最好的例子是新书。(反正不是我的竞争对手。)
我的问题是:
托管应用程序的最佳配置是什么?请记住,应用程序可以增长到成千上万的用户。
实际配置为:
- 代码example.com/appfolder的一个位置
- 用户将在example.com上创建帐户
- 在用户帐户上,每个用户都有一个使用该应用程序的链接
user1.example.com
user2.example.com
所有子域都指向同一个example.com/appfolder
- example.com有一个数据库,用来记录用户及其每月付款情况
- 该应用程序托管在example.com/appfolder上,并根据url为每个用户选择一个单独的数据库
对于100200300个用户来说,一切看起来都很好,但如果我有1000或2000个用户,我将不得不管理和备份1000或2000数据库(每个3-5MB)
我知道我应该为所有用户提供一个单一的数据库,但这会使管理变得非常困难,而且用户数据库中存在敏感数据。
最重要的是,用户可以创建可以使用相同应用程序的用户,但只能在管理员用户(在exmaple.com上注册)创建的子域上。
这种配置会使拥有2000多名管理员用户(即2000 db)的专用服务器崩溃吗?
Basic与CMS非常相似,但更专业。
有更实用的方法来进行此配置吗?
如有任何建议,我们将不胜感激。非常感谢。
单个数据库或分片数据库(http://www.codefutures.com/database-sharding/)为所有用户存储数据比2000个数据库更快、更易于维护、不那么麻烦,而且全面性能更好。
编写您需要的代码来管理您的安全性,否则稍后当您试图通过一个小的模式更改来更新2000个数据库时,您将自食其果。
我的建议是使用一个域名(没有子域),一旦你有2000个用户,你就有资金和资源来改进。