我看到几个月前有一个类似的问题,但它确实没有很好地解决我的情况.在这里......
我正在从头开始构建一个基于Web的.NET应用程序,该应用程序有可能成为一个高容量的站点(每月几十页的页面浏览量开始),并且我正在考虑使用Microsoft Azure来托管它.我还没有建造任何东西,我仍在研究我的不同选择.
应用程序本身的核心是一个标准的CRUD应用程序,它作用于许多不同类型的实体(例如用户,订单,项目等).可能存在一些可能正在运行的后台进程和一些数据排队(例如,用于非实时更新 - 例如获取SO徽章),但与用户的大多数交互将是典型的CRUD类型的操作.
关于Azure,我已经阅读了许多关于使用Microsoft Azure存储来存储事务数据的文章,并且强烈考虑这样做而不是使用Azure SQL DB.但是,我还没有看到或读过真人和/或真实公司这样做的一些成功故事.所以我想我会联系SO社区,看看是否有人有使用Microsoft Azure存储的经验,你有什么样的运气,我应该注意的任何问题,以及你所做的任何最佳实践想出来.
我已经阅读了很多Microsoft Azure MSDN部分和Microsoft编程的Microsoft Azure Table API文档.我正在寻找实用建议,经验教训,最佳实践等.提前致谢!
Windows Azure存储就像任何NoSQL存储一样.它工作在高规模的情况下对我们(抽百万计的用户记录).然而,经典的CRUD方法有点难以扩展或适应这一点.
我建议开始研究CQRS的架构风格.以下是一些可能让您入门的参考资料:
适用于Windows Azure的开源Lokad.CQRS项目(包括模式和指南)
在MSDN上 进行Azure讨论的高效架构
取决于您所谈论的数据类型 - 通常存在过高估计交易数据要求的趋势.许多数据确实适合1 GB SQL Azure(我们是SAAS提供商,近20个客户的交易数据可以适应这么多空间).此外,由于一些奇怪的原因,我已经看到SQL Azure空间消耗似乎比我在本地看到的数据库的大小(可能与它们处理日志的方式有关,不确定).现在50 GB是限制,坦率地说,是巨大的.
但是,为此,您还需要考虑增加空间使用量的因素 - 在数据库中存储图像,视频或其他大型对象可以大大增加空间消耗.最好在Windows Azure中保留这些类型的对象.
如此简短的答案 - 保留SQL Azure中的事务数据和Windows Azure中的非关系数据.使用SQL Azure还可以提高开发人员的工作效率,因为它在编程方面非常熟悉.对待Windows Azure类似于处理Windows本地文件存储的方式,具有一些额外的好处(支持基本表结构).