sql-server - 从用于 Multi-Tenancy 的单一数据库/单一模式数据库架构开始

标签 sql-server database azure-sql-database scaling multi-tenant

<分区>

我对哪种架构数据库方法最好进行了大量研究,最后,我更喜欢单独的数据库方法。但是,大多数托管服务提供商对此并不满意(以 Azure 为例,它有 150 DB 的限制)。

我现在的想法是从单一数据库/单一模式开始,在每一列中使用租户 ID 来分隔数据,然后当它变得太大/太慢时,寻找扩展选项。

这是个坏主意吗?我应该从一开始就将数据分开吗?我觉得在安全方面,只要我验证我正在调用/检索的数据属于调用客户,这并不重要。

此外,与拥有 5000 个小型数据库相比,使用单个大型数据库以后进行扩展不是更容易吗?

谢谢!

最佳答案

对于云托管,我认为单个 Multi-Tenancy 数据库是可行的方法。

我前几次遇到了同样的问题,并选择了每个租户一个数据库,因为我们的客户希望保留在他们的服务器上托管数据库的选项。由于我们在多台服务器上有一个代码库和许多数据库,因此我们必须推出同步解决方案以确保所有架构保持不变。

我们在存储过程中也有一些业务逻辑,必须找到一种方法来区分具有全局逻辑的过程和具有特定于该数据库的逻辑的过程。

它有效,但很尴尬,我希望我们可以使用单个数据库

无论如何,就像之前所说的,每种方式都有优点和缺点,你只需要决定什么对你来说最重要,并解决缺点

关于sql-server - 从用于 Multi-Tenancy 的单一数据库/单一模式数据库架构开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19656322/

相关文章:

sql - 预演数据解决方案

sql - 如何在 Visual Studio 中更改 Azure 数据库表的列顺序

database - LINQ to Entities on (database != Microsoft SQL Server)

azure - Terraform Azure - 将现有的 Azure SQL 数据库移至弹性池中

azure - 如何处理 SQL Azure 错误 10929?

mysql - 旋转 SQL 表

mysql - 加速MSSQL到MySQL的插入

.net - 如何在执行大型 SQLCommand VB.Net 时显示进度条

mysql - 使用 WHERE 和 AND 参数的 LEFT JOIN

azure - 使用 Enterprise Library 5 登录到 SQL Azure 可以从开发计算机工作,但不能从 Web 角色工作