我正在开发一款SAAS应用程序,我们正在讨论每个客户一个数据库还是共享数据库的问题。我已经阅读了很多资料,包括这里的一些主题,但我仍然有很多疑问。
我们的平台应该是高度可定制的,以适应每个客户的需求(他们应该能够拥有自定义表并向现有表中添加自定义字段)。在这种情况下,多个数据库方法似乎很不错。
问题是:我的“用户”表应该在主数据库还是在每个客户端的数据库中呢?一个用户可能会有一个或多个组织,因此它将存在于多个数据库中。此外,像国家表等通用表怎么办?
在主数据库中使用它们是有道理的。但我有许多带有“created_by”字段的表,它们具有对用户的外键。同时也有一些客户相关的权限表。
如果使用多个数据库,我将失去外键的作用,这意味着需要向数据库进行更多的查询。我知道如果它们在同一服务器上,可以使用跨数据库连接,但这会导致可扩展性降低(未来可能需要多个数据库服务器)。我曾考虑过联合表,但对于性能并不确定。
我正在使用php和symfony 2框架以及mysql数据库技术。另外,我也担心这样一个系统的维护。我们可以创建一些脚本来自动化所有数据库中的模式更改,但如果我们有10k个客户,那将意味着10k个数据库。
你对此有什么看法吗?我的应用程序的主要特点应该是灵活性,因此如果客户需要比基本平台更具体的东西,应该可以为他完成。
我们的平台应该是高度可定制的,以适应每个客户的需求(他们应该能够拥有自定义表并向现有表中添加自定义字段)。在这种情况下,多个数据库方法似乎很不错。
问题是:我的“用户”表应该在主数据库还是在每个客户端的数据库中呢?一个用户可能会有一个或多个组织,因此它将存在于多个数据库中。此外,像国家表等通用表怎么办?
在主数据库中使用它们是有道理的。但我有许多带有“created_by”字段的表,它们具有对用户的外键。同时也有一些客户相关的权限表。
如果使用多个数据库,我将失去外键的作用,这意味着需要向数据库进行更多的查询。我知道如果它们在同一服务器上,可以使用跨数据库连接,但这会导致可扩展性降低(未来可能需要多个数据库服务器)。我曾考虑过联合表,但对于性能并不确定。
我正在使用php和symfony 2框架以及mysql数据库技术。另外,我也担心这样一个系统的维护。我们可以创建一些脚本来自动化所有数据库中的模式更改,但如果我们有10k个客户,那将意味着10k个数据库。
你对此有什么看法吗?我的应用程序的主要特点应该是灵活性,因此如果客户需要比基本平台更具体的东西,应该可以为他完成。