在SQL Azure Federation中用T-SQL分割根表

日期: 2012-05-08 作者:Roger Jennings翻译:冯昀晖 来源:TechTarget中国 英文

SQL Azure Federation中Transact-SQL(T-SQL)管理碎片处理的最后一步是把联邦根成员表分成五个表,ID值从6到2。要完成这一步,我们将使用基于模版的查询,它是通过菜单选项生成的。要使用SQL Azure Federation的生成模版功能,请点击“工具”菜单,然后点击“选项”打开选项对话框,打开SQL Server对象浏览节点,选择“生成脚本”然后修改脚本的值,把数据库引擎类型修改为SQL Azure数据库(参见图1)。 图1:为SQL Azure的T-SQL语言进行脚本修改,因为T-SQL方言缺少对几个T-SQL关键字的支持。

  右键单击“联邦根节点”(例如……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

SQL Azure Federation中Transact-SQL(T-SQL)管理碎片处理的最后一步是把联邦根成员表分成五个表,ID值从6到2。要完成这一步,我们将使用基于模版的查询,它是通过菜单选项生成的。要使用SQL Azure Federation的生成模版功能,请点击“工具”菜单,然后点击“选项”打开选项对话框,打开SQL Server对象浏览节点,选择“生成脚本”然后修改脚本的值,把数据库引擎类型修改为SQL Azure数据库(参见图1)。

图1:为SQL Azure的T-SQL语言进行脚本修改,因为T-SQL方言缺少对几个T-SQL关键字的支持。

  右键单击“联邦根节点”(例如:AzureDiagnostics::WADFederation),选择“分割联邦成员”来插入一个“修改联邦”,在模版中分割。在“联邦根节点”上的操作必须在前面加一句“USE FEDERATION ROOT WITH RESET”语句。用下面语句替换第二个模板命令(见图2)。

  ALTER FEDERATION WADFederation SPLIT AT (Id = 6)

图2:以最大Id值开始联邦成员分割处理,本例中是6。

  同样的方式再重复操作四次,把6替换为“5,4,3,2”,这样就创建了五个新的联邦表。尽管在查询之后几乎立即就会出现“命令成功完成”的提示信息,但你必须等几分钟分割才能完成,时间长短与新表的大小有关。然后再开始下一步分割之前用ID=1重新连接联邦根。当你重新连接时,联邦根的参数将变成“Id=LOW…n”,其中n=吐出的ID值。请注意LOW ID值是包括所有的,而HIGH ID值是除了ID值之外的。

  查询联邦表

  对联邦成员执行“SELECT”语句需要在执行“SELECT”语句之前的“USE FEDERATION”语句中指定联邦的名称,分发Key值和过滤选项。如以下语句:

  USE FEDERATION WADFederation (Id = 1) WITH FILTERING=OFF, RESET
  GO
  SELECT COUNT(*) FROM dbo.WADPerfCounters
  GO

  “FILTERING=OFF”选项可以实现访问数据库中的所有行;而“FILTERING=ON”针对有ID值范围的成员查询指定Id值的可见行。

  本例中的数据上传结束时有49万行数据,所以在完成分割之后每个联邦表包含81666或者81667行数据(参见图3)。

图3:处理“SELECT”查询需要“USE FEDERATION”语句带有联邦Id值作为参数,后面跟着“WITH FILTERING={ON|OFF},RESET”修饰符。

  SQLAzureFedMW会识别联邦表,并自动根据CounterID值的标定上传新行给合适的表。

  运行扇出查询

  数据消费应用需要跨许多个或者所有的联邦成员,也包括单一联邦表查询的功能。跨多个联邦表查询需要扇出查询,SQL Azure Federation还没有实现本地化。要填补这个空白,SQL Azure Federation团队的Cihan Biyikoglu提供了一个Windows Azure基础和完整扇出查询功能演示应用,该应用可以从三个微软数据中心区(北美南美,欧洲和亚洲)访问到。

  扇出查询与针对Hadoop数据集的MapReduce操作类似,因为它们可以分两部分执行操作:

  • 基本成员查询,发送给查询涉及的所有成员。
  • 可选的完整汇总查询,执行后续处理操作,把成员查询结果加工成想要的最终结果集。

  接下来的基本查询产生图4中部分展示的结果,查询二月份的后三天和三月份的前两天:

  SELECT CounterID, CounterName, DATEPART(m, Timestamp) AS Month, DATEPART(d, Timestamp) AS Day, AVG(CounterValue) AS [Average Value]
  FROM WADPerfCounters
  GROUP BY CounterID, CounterName, DATEPART(m, Timestamp), DATEPART(d, Timestamp)
  ORDER BY DATEPART(m, Timestamp), DATEPART(d, Timestamp)

图4:为SQL Azure使用联邦工具针对SQL Azure Federation执行扇出查询。

  第二个查询可以对第一个查询产生的值使用“HAVING”从句,或者应用其它聚合操作,如图5所示。

图5:针对SQL Azure Federation的完整扇出查询可以应用“HAVING”从句或者在汇总查询中针对初始T-SQL成员查询执行聚合函数。

  SQL Server Management Studio 2012支持SQL Azure Federation,Federation工具使得基于云的SQL Azure潜在用户验证其新获得的大数据管理横向扩展成为可能。您可以在Windows Azure三个月的免费试用期间,开始测试单个1GB免费SQL Azure数据库,然后利用SQL Azure Federation数据迁移向导降低转移向按需付费大数据的SQL Azure代价,从而进入微软公司数据中心的SQL Azure Federation。

相关推荐