【发布时间】:2014-12-19 21:11:43
【问题描述】:
我目前有一个供单个最终客户使用的应用程序。为了便于讨论,假设应用程序只需要一个用于所有记录的数据库表。我现在需要支持多租户,因此将来我将有大约 500 个客户使用同一数据库服务器。
1) 一种可能的解决方案是为每个客户建立一个单独的数据库。由于将有大约 500 个客户,这意味着拥有 MySQL/SQL Server/Oracle/etc... 托管 500 个单独的数据库。对于在普通云服务器上运行的数据库服务器来说,这听起来有点过头了。
2) 另一种解决方案是坚持使用我已经拥有的单一数据库,但要拥有 500 个不同的表,每个最终客户一个。每个客户在他们自己的表中平均只有大约 2000 条记录。这很容易实现,我猜想可以很容易地将客户迁移到另一台服务器,只需将整个表数据移动过来。
3) 最后,我可以坚持在单个数据库中使用单个表。相反,我添加了一个附加列来标识记录所属的客户。但随后该表以大约 1,000,000 条记录结束,这是所有 500 个客户的总和,每个客户平均有 2,000 个。
我对性能和扩展了解不够,无法知道 1、2、3 将提供最佳性能。有什么想法吗?
【问题讨论】:
-
你可能想在Programmers Stack Exchange上问这个问题。
标签: mysql sql-server oracle performance scaling