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

有帮助吗?

解决方案

天青表存储似乎比SQL天青更便宜。它也比SQL天青更高度可扩展的。

SQL Azure是比较容易的工作与你已经做了很多的关系型数据库的工作。如果你移植一个已经使用SQL数据库,然后将其移动到SQL Azure的将是显而易见的选择一个应用程序,但是这是唯一的情况下,我会推荐它。

在Azure表的主要限制是缺乏二级索引。这是在PDC '09宣布,目前列为即将推出,但一直没有任何时限公告。 (请参见 HTTP ://windowsazure.uservoice.com/forums/34192-windows-azure-feature-voting/suggestions/396314-support-secondary-indexes REF =标题

我见过的建议使用在您使用表和Blob存储进行大量的数据的混合动力系统,而是使用SQL Azure的用于索引,搜索和过滤。但是,我还没有机会尝试这种解决办法还没有自己。

一旦次级索引被添加到表存储,它基本上将是基于云的NoSQL 系统,将是比现在更加有用。

其他提示

尽管名称相似,SQL Azure 表和表存储却没有什么共同点。

这里有两个链接可能对您有帮助:

基本上,第一个问题应该是 我的应用程序真的需要扩展吗? 如果没有,请选择 SQL Azure。

对于那些试图在两个选项之间做出选择时,一定要因素报告要求到方程。 SQL Azure的报告和其他报告产品支持SQL Azure的开箱即用。如果你需要生成复杂的或灵活的报表,你可能会想避免表存储。

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

我认为选择 SQL Azure 和 Azure 表的决定性因素如下:

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

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

另一个考虑是延迟。曾经有一个网站,微软与各种物体的大小与表店及SQL Azure的吞吐量和延迟微基准跑。由于该网站不再可用,我只是给你从我记得一个粗略的估计。表店往往有更高的吞吐率比SQL Azure的。 SQL天青趋向于具有较低等待时间(由高达1 /第5次)。

它已经提到,表店是很容易的规模。但是,SQL Azure的可联合会规模为好。需要注意的是联合会(有效分片)增加了很多复杂的您的应用程序。我也不能确定多少联合会如何影响系统性能,但我想有一些开销。

如果业务连续性是首要任务,认为与Azure存储的你默认廉价地域复制。随着SQL Azure的,你可以完成类似的东西,但与 SQL数据同步更多的努力。需要注意的是SQL数据同步也导致性能开销,因为它需要对所有表的触发器以观察数据的变化。

我意识到这是一个老问题,但仍然是一个非常有效的,所以我将我的答复吧。

CoderDennis和其他人指出一些事实 - Azure的表是便宜,Azure的表可以更大,更高效等,如果你是100%肯定,你会坚持使用Azure的,去表。

然而,这假设你已经决定在Azure上。通过使用Azure的表,你自己锁定到Azure平台。这意味着编写代码非常具体的Azure的表是不只是要在端口亚马逊,你将不得不重新编写代码的那些领域。在另一方面编程与LINQ意志端口SQL数据库上更容易到另一个云服务。

这可能不是一个问题,如果你已经决定你的云平台上。

我建议与天青表组合看着天青缓存。表就有200-300ms潜伏期,偶有峰值越高,可显著减慢响应时间/ UI交互性。高速缓存+表似乎是一个成功的组合,我。

对于你的问题,我想谈谈如何与逻辑决定选择SQL表和需要使用Azure Table中。

我们知道SQL表是一个关系型数据库引擎。但如果你在一个表中有一个大的数据的SQL表是不适用的,因为SQL查询中获取大数据是缓慢的。

这时你可以选择Azure Table中,在Azure表查询是如此之快则SQL表大数据,例如,在我们的网站上,有人订阅了许多文章,我们做的文章作为饲料用户,每个用户都有文章标题和描述的副本,所以在文章表中有很多数据,如果我们使用SQL表,每个查询的执行可能需要30多秒。但在Azure Table中获得通过PartitionKey和RowKey用户文章饲料是如此之快。

从这个例子你可能知道如何在SQL表和Azure Table中进行选择。

我不知道我们是否会在适当的时候一些“独立于供应商的”云API库结束了?

我认为你必须先定义你的应用程序的使用渠道是什么。将你的数据模型进行频繁的变化,或者是稳定的吗?你必须要能够进行超快速插入和读是没有那么复杂?你需要提前谷歌搜索一样?存储BLOB?

这些都是问题(而不是只),你必须以提问和回答你自己来决定,如果你更可能要使用的NoSql或SQL方法中存储的数据。

请考虑这两种方法可以很容易地共存,并且可以与BLOB存储以及被延长。

无论Azure的表和SQL Azure的是两个不同的beasts.Both都是为了不同的场景,一个骗子天青表是你不能从蔚蓝移动到其他平台,除非你写在你的代码,可以处理这种转变提供商

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top