【问题标题】:Azure Federations are Deprecated. What are my options?Azure 联合已弃用。我有哪些选择?
【发布时间】: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 数据库版本。阅读更多关于它的信息herehere

我希望你能看到我的问题。你认为我的替代方案是什么?您是否使用 Azure 联合以及您将如何过渡?

谢谢。

【问题讨论】:

  • 现在还为时过早 - 刚刚宣布弃用联邦 - 我希望在适当的时候提供迁移策略的进一步建议/指导。
  • Microsoft 计划与单独使用联合的客户合作,以​​帮助转换他们。也许与您的 Microsoft Azure 代表联系以尽早开始工作会比较谨慎?
  • 实际上,联邦系统非常好,甚至在本地也很有用。我想知道他们为什么要关闭它。

标签: sql-server azure sql-azure-federations


【解决方案1】:

我们已经看到,与联邦相比,自定义分片解决方案通常会在可扩展性、灵活性和性能方面产生更好的结果。您可以在此处找到有关联合和自定义分片的更多信息:http://msdn.microsoft.com/en-us/library/dn495641.aspx。这是宣布在 Windows Azure SQL 数据库中与 Web 版和商业版一起退出联邦的部分原因。

我鼓励您考虑使用自分片作为替代方案。去年 CAT 团队在 http://social.technet.microsoft.com/wiki/contents/articles/17987.cloud-service-fundamentals.aspx 上发布了关于自分片模式的良好指导,很快就会有更多类似的材料。

请随时与我联系,讨论迁移现有联邦应用程序的替代方案。我是 Azure DB 产品团队的一员,您可以通过 torsteng(at)microsoft.com 与我联系

谢谢,

托尔斯滕

【讨论】:

  • 为了实现这样的解决方案,一个帐户可以在多台服务器上拥有多少个独立数据库是否有任何限制?
  • 自定义分片方案中的连接池碎片怎么办?
  • 您添加到组合中的每个新数据库都有可能在连接池中占用一个新插槽。这会增加对连接池内存的需求。一种选择是增加连接池大小。但是,在更大的范围内,您将需要为应用程序请求路由 (ARR) 构建应用程序。 Azure CAT 团队已发布有关此问题的指南。在此处查看有关 ARR 的部分:social.technet.microsoft.com/wiki/contents/articles/…
  • 我刚刚发现 Sql Federation 获得了 Axe 并偶然发现这篇文章正在寻找替代方案,来自 MS “设计自定义分片解决方案以最大限度地提高资源密集型工作负载的可扩展性和灵活性......”的建议是很荒谬,基本上它说自己解决问题,以联邦为核心构建应用程序所花费的精力/时间呢-:(,
【解决方案2】:

您唯一的选择是重写您的软件。当他们说自定义分片解决方案更好时,微软在撒谎。实际上,他们多年来一直在说,为什么你应该更喜欢联邦而不是自定义分片,他们为此提供了非常可靠的观点:连接池、扩展时没有停机时间、没有自定义代码来管理你的分片等。然而,现在微软想要获得更多的钱来自 Azure,因此他们决定只向客户提供非常昂贵的计划,并且不再有联合的地方,因为它们非常便宜且非常可扩展。

如果您没有超高的交易率,您可以尝试 Amazon RDS。没有分片,但它们每秒可以为您提供高达 30000 次交易,即使对于非常大的网站来说也是很多。我们为 PostgreSQL RDS 重写了我们的软件,我们对此非常满意。它具有比 SQL Server 更多的功能,例如原生 JSON 支持、数组、多个 CASCADE 路径等。

如果每秒 30000 个事务对您来说还不够,只需增加服务器数量并根据用户名或任何其他属性拆分您的数据,例如:

Username starts with letter
a-d                         | connect to Server 1
e-g                         | connect to Server 2
h-s                         | connect to Server 3
t-z                         | connect to Server 4

在上面的示例中,您将能够每秒执行 120000 个事务,并且连接池应该没有问题,因为只有 4 个服务器。

【讨论】:

    【解决方案3】:
    猜你喜欢
    • 2021-05-20
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多