2010-08-06 113 views
21

我看到几个月前有一个类似的问题,但它确实没有很好地解决我的情况。这里有云......微软Azure存储与Azure SQL数据库

我从头开始构建有可能成为一个高容量的网站上的潜在基于Web的,.NET应用程序的过程是(几十万的页面浏览量一个月开始)并且正在考虑使用Microsoft Azure来托管它。我还没有建造任何东西,我仍在研究不同的选择。

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

关于Azure的,我读了一些有关使用Microsoft Azure存储来存储交易数据的文章和我强烈地考虑这样做,而不是使用Azure的SQL数据库中。然而,我还没有看到或读过一些真实的人和/或真正的公司的成功故事。所以我想我会联系SO社区,看看有没有人使用过Microsoft Azure存储方面的经验,你有什么样的运气,我应该注意什么问题,以及你有什么最佳实践拿出来。

我已经经历了很多微软的Azure MSDN部分,然后从微软编程微软Azure Table API的文档读取。我正在寻找实用的建议,经验教训,最佳实践等,谢谢!

回答

13

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

我会建议开始沿着CQRS style of architectures期待。这里有可能让你开始说一些参考:

+2

感谢您的信息。我对您提供的一些信息进行了快速扫描(本周末晚些时候我会进一步深入)。一个问题 - 您使用过的项目/产品,是否将SQL Azure与Azure存储结合使用,还是只使用Azure存储?看起来您链接的一些文档显示SQL Azure正在与Azure存储配合使用。如果您使用SQL Azure,是否用于CQRS的命令端,然后转移到Azure存储?再次感谢。 – 2010-08-08 01:14:28

+0

这是一些很好的信息,让我指出了正确的方向。谢谢! – 2010-08-10 14:57:52

+0

我们在命令端使用SQL Azure和Azure存储。 用于关系数据的SQL Azure,用于blob,队列和查看数据的Azure存储。 理论上来说,SQL Azure可以用事件源代替,但我们还没有达到。 – 2010-08-12 14:06:14

1

你也应该决定使用Azure的前检查您的数据使用模式存储或SQL存储。 由于Azure存储正在提供NoSQL解决方案,因此它们更适合于非报告基础要求。这里的报告并不意味着报告,但它意味着查询Azure存储的功能是有限的\不针对各种查询场景进行优化。 使用CQRS架构,CRUD和报告操作是分离的,因此可以完成Azure存储和Azure SQL的混合匹配。

+0

谢谢。这也有帮助。我正在考虑使用表存储和sql azure之间的混合和匹配。我不太清楚在sql azure中保留多少 - 你的经验基本上存在sql azure和azure存储之间的数据重复吗? – 2010-08-12 11:09:43

+0

这不是关于多少保持在哪里。例如,如果您正在实施用户身份验证\授权方案,则所有数据访问模式都将围绕特定用户始终运行,而NoSQL在这里的工作效果最佳。但同样如果我们想要一个管理界面来管理用户,这涉及到显示用户列表,过滤器等最适合数据关系格式的用户。在这种情况下,您将在NoSQL和SQL存储中保留用户数据的重复副本,但只能信任NoSQL数据库以执行任何业务验证。我们需要一些机制来同步用户数据存储(单向) – Chandermani 2010-08-20 11:22:26

+0

因此,您需要考虑这种复杂性是否适用于您的应用程序。 – Chandermani 2010-08-20 11:24:08

1

寻找信息的另一个地方是步骤的Windows Azure的选项外,并期待在AWS的。 SimpleDB的选项经过了较长时间的审核,并且在网络上还有许多额外的成功案例。但是,SimpleDB在功能上与Windows Azure存储表和Blob存储非常相似。如果您正在考虑真正的大数据(这些结构适用于这些数据),请务必查看AWS选项。如果仅仅是针对围绕大数据构建的现有解决方案的参考点。

对于SQL Azure来说,它对于大量事务来说很好,可以保持较低的事务成本,并根据关系数据维护关系和一般完整性。但是,如果您要拥有海量数据,请继续努力,争取实现大数据结构,例如Windows Azure Table或Amazon SimpleDB。

+0

感谢您的建议。我会检查出来的! – 2010-08-25 19:13:39

8

取决于您所谈论的数据类型 - 通常存在高估交易数据要求的倾向。很多数据可以真正适用于1 GB SQL Azure(我们是一家SAAS提供商,近20个客户端的事务数据可以适应这么多的空间)。另外,出于某种奇怪的原因,我发现SQL Azure的空间消耗似乎比我在本地看到的数据库的大小要小一些(可能与他们如何处理日志有关,不确定)。现在50GB是极限,这非常坦率地说是巨大的。

但是,您还需要考虑增加空间使用量的情况 - 在数据库中存储图像,视频或其他大型对象可能会大大增加空间消耗。在Windows Azure中保留这些对象最好。

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

+0

感谢您的观点。当您使用Windows Azure存储非事务性数据时,是否使用表存储和Blob的组合?你是否使用驱动器?谢谢! – 2010-08-27 10:22:28

+0

我们使用前两个驱动器是非常新的,尚未找到使用它们的好地方。 错过了上面的内容,但是azure表格非常适合写入日志,尤其是使用日志。 Blob非常适合图像,视频和其他大型文件 驱动器是您需要拥有与本地硬盘类似的东西的时候。但是,这些实例是特定于实例的(意味着一次只能有一个实例写入驱动器),而不喜欢可同时由多个实例访问的天蓝色存储。 – 2010-08-27 10:29:59

+0

请帮助我http://stackoverflow.com/questions/14156980/error-when-try-to-save-in-windows-azure-table – Ladessa 2013-01-04 13:43:31

4

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

尽管到Windows Azure商店的交易成本相当低,但如果您做得足够多的话,它可能会加起来。

+0

请帮助我http://stackoverflow.com/questions/14156980 /错误时,尝试对节约型窗口,蔚表 – Ladessa 2013-01-04 13:42:13