2

我有几个关于 Microsoft SQL Azure 联合的问题:

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

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

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

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

据我了解:

[博客]

blog_id

信息

[博客帖子]

ID

blog_id

post_content

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

谢谢

4

1 回答 1

3

请更加准确和具体,一次问一个问题。单独询问时,您有更好的机会获得所有问题的答案。现在让我试着回答你的一些问题。

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

您当然可以在现有数据库中创建联合。仅在一个新的/空的数据库中创建联邦是没有限制的。但是,在 Active DB 中创建联合对您没有任何帮助。您必须意识到联邦是独立的数据库。联邦(或联邦成员)对联邦根数据库(您创建联邦的数据库)一无所知。因此,一旦您创建了联邦,您就必须考虑从活动数据库(或联邦根)迁移模式/数据。

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

很可能是的。Windows Azure SQL 数据库联合是数据库层的横向扩展机制。这意味着,就像任何 Web 应用程序需要“特殊”设计才能在类似农场的环境(即像 Windows Azure 这样的横向扩展环境)中工作一样,数据库也需要“特殊”设计才能在横向扩展环境中工作环境。SQL Azure 联合没有魔杖可以让您的代码正常工作。您必须将其设计为工作。

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

这都是关于分区策略的。您必须非常仔细地设计您的联合密钥以及如何在不同的分片之间分区您的数据。只要将原子单元保持在单个分片中,您就可以随时拆分任何联邦。

4)当我想用不同的主键拆分不同的表时,分片将如何工作。

如果您想在不同的键上拆分不同的表,那么您将拥有不同的联邦,每个联邦都有自己的联邦键和自己的表。

如果您准备参加 SQL 联盟,那么值得一看的好视频:http: //channel9.msdn.com/Events/TechEd/NorthAmerica/2012/DBI408

于 2012-10-01T06:30:52.487 回答