我正在开发一个定制的 CRM 解决方案,该解决方案将通过 Web/SaaS 模型进行销售。我预计会有数十或数百个客户使用此解决方案。我将使用 MS SQL 作为数据库引擎。
选项 1 是拥有一个单独的数据库,并在表上包含一个 TenantId 列、一个合适的索引并在每个数据库访问中使用“where tenantId={...}”。
选项 2 是为每个客户端设置一个单独的数据库,从而避免使用 TenantId 和 where 子句。
我预计每个客户将拥有数十万条记录,而不是数百万条记录。
正如我所看到的,无论我选择哪个选项,都会有一定数量的数据页。该决定似乎集中在 SQL 是否更擅长管理多个 DB 或具有 TenantId 和索引的单个 DB。最初,该解决方案将在单个数据库服务器上运行,但最终将迁移到 SAN。
有人对此有什么看法吗?