Microsoft Azure存储与Azure SQL数据库

时间:2010-08-06 17:58:40

标签: .net azure azure-storage

我看到几个月前有一个类似的问题,但它确实没有很好地解决我的情况。这就是......

我正在从头开始构建一个基于Web的.NET应用程序,该应用程序有可能成为一个高容量的站点(每月几十页的页面浏览量开始)并且我正在考虑使用Microsoft Azure举办它。我还没有建立任何东西,我仍在研究我的不同选择。

应用程序本身的核心是一个标准的CRUD应用程序,它作用于许多不同类型的实体(例如用户,订单,项目等)。可能存在一些可能正在运行的后台进程和一些数据排队(例如,用于非实时更新 - 例如获取SO徽章),但与用户的大多数交互将是典型的CRUD类型的操作。

关于Azure,我已经阅读了许多关于使用Microsoft Azure存储来存储事务数据的文章,我强烈考虑这样做,而不是使用Azure SQL DB。但是,我还没有看到或读过真人和/或真实公司这样做的一些成功故事。所以我想我会联系SO社区,看看是否有人有使用Microsoft Azure存储的经验,你有什么样的运气,我应该注意的任何问题,以及你所做的任何最佳实践想出来。

我已经阅读了很多Microsoft Azure MSDN部分和Microsoft编程的Microsoft Azure Table API文档。我正在寻找实用建议,经验教训,最佳实践等。提前致谢!

5 个答案:

答案 0 :(得分:14)

Windows Azure存储就像任何NoSQL存储一样。它适用于大规模场景for us(每个用户抽取数百万条记录)。然而,经典的CRUD方法有点难以扩展或适应这一点。

我建议开始查看CQRS style of architectures。以下是一些可以帮助您入门的参考资料:

答案 1 :(得分:8)

取决于您所谈论的数据类型 - 通常存在过高估计交易数据要求的趋势。许多数据确实适合1 GB SQL Azure(我们是SAAS提供商,近20个客户的交易数据可以适应这么多空间)。此外,由于一些奇怪的原因,我已经看到SQL Azure空间消耗似乎比我在本地看到的数据库的大小(可能与它们处理日志的方式有关,不确定)。现在50 GB是限制,坦率地说,是巨大的。

然而,为此,您还需要考虑增加空间使用量的因素 - 在数据库中存储图像,视频或其他大型对象可以大大增加空间消耗。最好在Windows Azure中保留这些类型的对象。

如此简短的回答 - 保留SQL Azure中的事务数据和Windows Azure中的非关系数据。使用SQL Azure还可以提高开发人员的工作效率,因为它在编程方面非常熟悉。对待Windows Azure类似于处理Windows本地文件存储的方式,具有一些额外的好处(支持基本表结构)。

答案 2 :(得分:4)

要考虑的另一件事是您将从商店发送/接收的交易数量。关于SQL Azure的一个好处是,它是一个固定的成本/月,如果你在同一个数据中心内进行查询(即从与Windows Azure数据库位于同一数据中心的Windows Azure Web角色),那么没有额外费用。

即使Windows Azure商店的交易成本非常低,但如果你做了足够的事情,它还有可能会增加。

答案 3 :(得分:1)

在决定使用Azure存储或SQL存储之前,还应检查数据使用模式。 由于Azure存储提供NoSQL解决方案,因此它们更适合非报告基础要求。此处报告并不意味着报告,但它意味着Azure存储的查询功能受到限制\非针对各种查询方案进行优化。 使用CQRS体系结构,CRUD和报告操作是分离的,因此可以完成Azure存储和Azure SQL的混合。

答案 4 :(得分:1)

另一个查找信息的地方是走出Windows Azure选项并查看AWS。 S3& SimpleDB选项已在较长时间内经过审核,并且在网络上有许多其他成功案例。然而,S3& SimpleDB在功能上与Windows Azure存储表和Blob存储非常相似。如果您正在考虑这些结构所针对的真正大数据,请务必查看AWS选项。如果仅针对围绕大数据构建的现有解决方案的参考点。

对于SQL Azure,它适用于大量事务,保持低交易成本,以及基于关系数据维护关系和一般完整性。但是,如果您要获得大量数据,请继续使用大型数据结构,例如Windows Azure Table或Amazon的SimpleDB。