SQL Azure联合拆分设计和查询

时间:2012-10-01 00:47:48

标签: azure azure-sql-database federated-table

我有一些关于Microsoft SQL Azure Federations的问题:

1)我可以在活动数据库上创建联合数据库,还是需要提前部署联盟?

2)我是否需要对SQL查询进行任何更改以符合我查询联合的方式,或者我可以继续使用常规查询,因为我正在使用一个SQL Server数据库?

3)当我拆分数据库时,经过一段时间后,我发现其中一个分片非常繁忙且几乎已满,我是如何使用联合解决这个问题的? - 我是否只需要拆分90%已满的单个联合表,或者我需要使用更宽范围重新创建拆分策略。问题是一个特定用户可能非常活跃,那么我使用什么策略来确保由于一个非常活跃的联合表/用户而不需要重新创建联合策略?

4)当我想要使用不同的主键分割不同的表时,分片将如何工作。例如:

据我所知:

[博客]

blog_id

信息

[Blog_Posts]

ID

blog_id

POST_CONTENT

因此,如果我决定根据0-1000,1-2001的blog_id进行分片,我将有两个联合表。但是,如果我添加更多具有除blog_id之外的其他键的表,我会有多少联合表,我会有更多的联合表吗?

由于

1 个答案:

答案 0 :(得分:3)

请更准确,更具体,一次提出一个问题。当您单独询问时,您有更好的机会获得所有问题的答案。现在让我尝试介绍一些问题。

  

1)我是否可以在活动数据库上创建联合数据库,或者我是否需要   提前部署联合会?

您当然可以在现有数据库中创建联合。仅在新的/空DB中创建联合没有限制。但是,在Active DB中创建联合将不会为您做任何事情。你必须意识到联盟是独立的数据库。联合会(或联盟成员)对联盟根数据库(您创建联盟的数据库)一无所知。因此,在创建联合之后,必须考虑从Active DB(或联合根)迁移模式/数据。

  

2)我是否需要对SQL查询进行任何更改以符合如何更改   我查询联盟,或者我可以继续使用我的常规查询   是在针对一个SQL Server数据库工作吗?

最有可能是YES。 Windows Azure SQL数据库联合是数据库层的扩展机制。这意味着,就像任何Web应用程序需要一个“特殊”设计才能在类似农场的环境(即Windows Azure等横向扩展环境)中工作一样,DataBase也需要一个“特殊”设计才能在横向扩展中工作环境。 SQL Azure Federations没有魔术棒可以让你的代码工作。你必须将它设计成工作。

  

3)当我分割我的数据库时,经过一段时间后,我看到了其中一个   碎片非常繁忙,几乎已满,我是如何解决这个问题的   联合会? - 我是否只需要拆分该单个联合表   这是90%已满,或者我需要重建分裂策略   使用范围较小的范围。问题是一个特定的用户   可以非常活跃,所以我用什么策略来确保我不会   需要重新创建联合策略,因为一个非常活跃   联合表/用户?

这就是分区策略。您必须非常仔细地设计联合密钥以及如何跨不同分片对数据进行分区。只要将原子单元保留在单个分片中,就可以随时拆分任何联合。

  

4)当我有不同的表格,我想用不同的分割   主键,然后分片将如何工作。

如果要在不同的密钥上拆分不同的表,那么您将拥有不同的联合,每个联合都有自己的联合密钥和自己的表。

如果您正在使用SQL联盟,那么值得关注的视频:http://channel9.msdn.com/Events/TechEd/NorthAmerica/2012/DBI408