Azure表还是SQLAzure?

Azure表还是SQLAzure?,azure,azure-sql-database,azure-table-storage,Azure,Azure Sql Database,Azure Table Storage,我正处于web应用程序的规划阶段,该应用程序将托管在Azure中,其中ASP.NET用于web站点,Silverlight用于提供丰富的用户体验。我应该使用Azure表还是SQL Azure来存储我的应用程序数据?Azure表存储似乎比SQL Azure便宜。它也比SQLAzure具有更高的可伸缩性 如果您已经做了大量的关系数据库工作,那么SQLAzure更容易使用。如果您正在移植一个已经在使用SQL数据库的应用程序,那么将其移动到SQL Azure将是一个明显的选择,但这是我推荐它的唯一情况

我正处于web应用程序的规划阶段,该应用程序将托管在Azure中,其中ASP.NET用于web站点,Silverlight用于提供丰富的用户体验。我应该使用Azure表还是SQL Azure来存储我的应用程序数据?

Azure表存储似乎比SQL Azure便宜。它也比SQLAzure具有更高的可伸缩性

如果您已经做了大量的关系数据库工作,那么SQLAzure更容易使用。如果您正在移植一个已经在使用SQL数据库的应用程序,那么将其移动到SQL Azure将是一个明显的选择,但这是我推荐它的唯一情况

Azure表的主要限制是缺少辅助索引。这是在2009年PDC会议上宣布的,目前被列为即将到来,但还没有任何时间框架的宣布。(见附件)

我已经看到了一个混合系统的提议,在这个系统中,您使用表和blob存储存储大部分数据,但使用SQLAzure进行索引、搜索和过滤。然而,我自己还没有机会尝试这个解决方案


一旦将二级索引添加到表存储中,它本质上将是一个基于云的系统,并且将比现在有用得多。

尽管名称相似,但SQL Azure表和表存储几乎没有什么共同之处

以下是可能对您有所帮助的两个链接:


基本上,第一个问题是我的应用真的需要扩展吗?如果没有,那么选择SQLAzure

对于那些试图在这两个选项之间做出决定的人,一定要将报告要求考虑在内。和其他报告产品支持开箱即用的SQL Azure。如果您需要生成复杂或灵活的报告,您可能希望避免表存储。

另一个考虑因素是延迟。曾经有一个站点,微软在运行时使用表存储和SQLAzure对不同对象大小的吞吐量和延迟进行了微基准测试。由于该网站已不再可用,我将根据我的记忆给您一个粗略的近似值。表存储往往比SQLAzure具有更高的吞吐量。SQLAzure往往具有较低的延迟(高达1/5)

已经提到,表存储很容易扩展。然而,SQLAzure也可以通过扩展扩展。请注意,联合(有效地)为应用程序增加了很多复杂性。我也不确定联邦对性能的影响有多大,但我认为会有一些开销


<>如果业务连续性是优先考虑的,默认情况下考虑Azure存储。使用SQLAzure,您可以完成类似的事情,但需要更多的努力。请注意,SQL数据同步也会带来性能开销,因为它需要所有表上的触发器来监视数据更改。

我意识到这是一个老问题,但仍然是一个非常有效的问题,因此我将添加我的答复

CoderDennis和其他人已经指出了一些事实-Azure表更便宜,Azure表可以更大、更高效等等。如果你100%确定你会坚持使用Azure,那么就使用Tables

但是,这假设您已经决定使用Azure。通过使用Azure表,您将自己锁定在Azure平台中。这意味着要编写非常特定于Azure表的代码,而不仅仅是移植到Amazon,您还必须重写代码中的这些区域。另一方面,使用LINQ为SQL数据库编程将更容易地移植到另一个云服务


如果您已经决定使用云平台,这可能不是一个问题。

对于您的问题,我想谈谈如何使用逻辑选择SQL表以及哪些需要使用Azure表

正如我们所知,SQL表是一个关系数据库引擎。但是如果一个表中有一个大数据,那么SQL表就不适用,因为SQL查询获取大数据的速度很慢

此时您可以选择Azure Table,Azure Table的查询速度比大数据的SQL Table快,例如,在我们的网站上,有人订阅了很多文章,我们将文章作为用户的提要,每个用户都有一份文章标题和描述的副本,因此在文章表中有很多数据,如果我们使用SQL Table,每个查询执行可能需要30秒以上。但在Azure表中,通过PartitionKey和RowKey获取用户文章提要的速度非常快


从这个示例中,您可能知道如何在SQL表和Azure表之间进行选择。

Azure表比SQL Azure更便宜、更简单,而且可扩展性更好。SQL Azure是一个托管SQL环境,本质上是多租户的,因此您应该分析您的性能要求是否适合SQL Azure。SQLAzure的高级版本已经发布,并在撰写本文时处于预览阶段(请参阅)

我认为在SQL Azure和Azure表之间做出决定的决定性因素如下:

  • 是否需要进行复杂联接并使用辅助索引?如果是,SQL Azure是最佳选择
  • 您需要存储过程吗?如果是,请选择SQLAzure
  • 您需要自动缩放功能吗?Azure tables是最好的选择
  • Azure表中的行大小不能超过4MB。如果需要在一行中存储大型数据,最好将其存储在blob存储中,并在表行中引用blob的URI
  • 您是否需要存储大量的半结构化数据?如果是,Azure表是有利的

尽管Azure表在简单性和成本方面非常有益,但仍有一些限制需要考虑。请参阅以获得一些初步指导。

我建议结合Azure表查看Azure缓存。表本身有200-300毫秒的延迟,偶尔会有更高的峰值,这会显著降低响应时间/UI交互。对我来说,Cache+Table似乎是一个成功的组合。

我不知道我们是否会结束