1

你好呀,

我必须使我的应用程序符合 SAAS。为了实现多租户,我对数据进行了分区,每个分区将用于一个租户。并且此分区将动态完成。

有没有人做过这样的事情?你认为更好的方法是什么?

我正在使用 SQL 2005

问候 DEE

4

1 回答 1

6

每个分区方案有 1000 个分区的限制,并且您只能在单个字段上进行分区,因此如果您打算多租户超过 1000 个实例,您将不得不跳过更多的环节。您可以通过在多个分区表之上使用分区视图来扩展限制,但这会增加管理开销。您可以使用 DMV 并创建自己的自动化系统,为每个客户端/租户生成新分区并管理问题,但它将特定于您的应用程序而不是通用的。

目前SQL Server没有自动动态分区,PDC09上提到SQL Azure的未来路线图,但是SQL Server没听说过。

您的替代选择是每个客户端一个数据库或 SQL 实例,这种方法的好处在于,如果需要,您可以为自己提供更多扩展的机会,并且如果您开始考虑更大的数据中心,您可以开始平衡跨服务器场的 SQL 实例等。如果您自动将所有数据保存在单个数据库中。

其他需要考虑的事项:

安全性:虽然您在具有分区的单个数据库中拥有数据,但您没有数据保护。您冒着将一个客户的数据暴露给另一个客户的风险,因为代码中的任何一个错误都是微不足道的。

升级:如果所有客户端都访问同一个数据库,那么升级将是全有或全无的方法 - 您将无法轻松地将一些用户迁移到新版本,同时让其他用户保持原样。

备份:您可以让每个分区占用一个单独的文件组并尝试管理情况。可以说开箱即用,每个客户端的备份都混合在一起。如果单个客户端要求回滚给定数据,您必须提前仔细计划如何在不影响系统其他用户的情况下执行该操作。

于 2009-12-21T14:15:04.050 回答