【发布时间】:2014-04-28 10:51:15
【问题描述】:
背景:
我们有一个主要实体是客户的应用程序。此应用程序中的所有信息都从客户开始。我们认为如果我们可以将它用于某种分区,那就太好了。我们以 Azure SQL 数据库为后端设计了该服务。
我们的表格如下所示(为简洁起见,只留下相关部分):
TABLE dbo.Orders
(
CustomerId INT NOT NULL DEFAULT( FEDERATION_FILTERING_VALUE( 'FEDERATION_BY_CUSTOMER' ) ),
OrderId INT NOT NULL,
....,
CONSTRAINT PK_Orders PRIMARY KEY CLUSTERED ( CustomerId, OrderId )
) FEDERATED ON ( FEDERATION_BY_CUSTOMER = CustomerId );
现在这让我们可以做一些疯狂的事情。我们指向所有 SQL 相关内容的入口总是首先包含以下命令:
USE FEDERATION GroupFederation( FEDERATION_BY_CUSTOMER = 1 ) WITH RESET, FILTERING = ON
在这种情况下,这个语句:
SELECT * FROM Orders
或
INSERT INTO Orders ( OrderId ) VALUES ( 10 );
将毫无问题地工作,只处理给定客户的数据。 CustomerId COLUMN 将始终从系统函数 FEDERATION_FILTERING_VALUE 中推断出来;
现在我们可以毫无问题地将所有客户都放在一个数据库中,并且他们将彼此隔离。如果将来某个时候,其中一个变得太大,我们可以在该特定客户 ID 处拆分联合,而我们无需更改代码中的任何内容来支持它。
哎呀,我们可以让每个客户都在单独的联合数据库中,而使用它的服务对它一无所知。
我们对我们的解决方案非常满意,我认为我想出这个解决方案非常聪明。直到最近,微软才宣布他们将弃用 azure federations 功能以及即将推出的新 azure 数据库版本。阅读更多关于它的信息here 和 here。
我希望你能看到我的问题。你认为我的替代方案是什么?您是否使用 Azure 联合以及您将如何过渡?
谢谢。
【问题讨论】:
-
现在还为时过早 - 刚刚宣布弃用联邦 - 我希望在适当的时候提供迁移策略的进一步建议/指导。
-
Microsoft 计划与单独使用联合的客户合作,以帮助转换他们。也许与您的 Microsoft Azure 代表联系以尽早开始工作会比较谨慎?
-
实际上,联邦系统非常好,甚至在本地也很有用。我想知道他们为什么要关闭它。
标签: sql-server azure sql-azure-federations