我想在Windows Azure上使用NoSQL数据库,数据量会非常大.Azure Table存储或使用Worker角色运行的MongoDB数据库是否可以提供更好的性能和可伸缩性?有没有人使用Worker角色在Azure上使用MongoDB?请分享您在Azure桌面存储上使用Azure上的MongoDB的想法.
表存储是一个核心Windows Azure存储功能,旨在可扩展(每个帐户100TB 200TB 500TB),持久(在数据中心三重复制,可选地地理复制到另一个数据中心)和无模式(每行可能包含任何属性)想).通过分区键+行键定位行,提供非常快速的查找.所有表存储访问都是通过一个定义良好的REST API,可以通过任何语言使用(使用SDK,构建在REST API之上,已经适用于.NET,PHP,Java,Python和Ruby).
MongoDB是一个面向文档的数据库.要在Azure中运行它,您需要将MongoDB安装到Web /辅助角色或虚拟机上,将其指向云驱动器(从而提供驱动器号)或连接磁盘(用于Windows/Linux虚拟机),可选择打开日记功能(我建议),并可选择定义供您使用的外部端点(或通过虚拟网络访问它).顺便说一句,云驱动器/附加磁盘实际上存储在Azure Blob中,为您提供与Azure表相同的持久性和地理复制.
比较两者时,请记住表存储是存储即服务:您只需访问一个众所周知的REST端点.使用MongoDB,您负责维护数据库(例如,当MongoDB Inc(以前的10gen)推出新版本的MongoDB时,您需要相应地更新您的服务器).
关于MongoDB公司的jtoberon指出的alpha版本:如果你仔细看看它,你会看到一些关键的东西:
该设置适用于独立的mongodb实例,没有副本集或分片.关于副本集,由于Blob存储的工作方式,使用独立版本仍然可以获得多项好处.
要提供高可用性,您可以运行多个实例.在这种情况下,只有一个实例为数据库服务,一个是"热备用",一旦另一个实例发生故障就会启动mongod进程(用于维护重启,硬件故障等).
虽然10gen的Windows Azure包装仍然被认为是"alpha",但mongod.exe却不是.您可以像启动任何其他Windows exe一样启动mongod exe.这只是围绕启动的管理代码,这就是alpa实现所展示的内容.
编辑2011-12-8:这不再处于阿尔法状态.您可以在此处下载最新的MongoDB + Windows Azure项目,该项目提供副本集支持.
对于性能,我认为你需要做一些基准测试.话虽如此,请考虑以下事项:
从Web角色访问Table Storage或MongoDB时,您仍然可以使用Windows Azure存储系统.
MongoDB为自己的缓存使用了大量内存.出于这个原因,许多高规模的MongoDB系统被部署到更大的实例大小.对于表存储访问,您将不会考虑相同的内存大小.
编辑2015年4月7日 如果您想使用基于文档的数据库作为服务,Azure现在提供DocumentDB.
我用过这两个.
Azure表:死简单,快速,甚至很难编写简单的查询.
Mongo:运行良好,有很多查询功能,需要多个实例才能可靠.
简而言之,如果您的查询非常简单(key-> value),则必须进行成本比较(主要是针对存储的事务数与Azure上托管Mongo的成本).我宁愿去那个桌面存储.如果您需要更复杂的查询并且不想访问SQL Azure,那么Mongo可能是您最好的选择.
我意识到这个问题已经过时了.我想为那些可能在搜索中遇到此问题的人添加以下信息.
请注意,现在,MongoDB作为Azure上的完全托管服务提供.(截至2015年4月正式发布测试版)
请参阅:http: //www.mongodb.com/partners/cloud/microsoft 或 https://azure.microsoft.com/en-us/blog/announcing-new-mongodb-instances-on-microsoft-azure/
请参阅(包括定价):https: //azure.microsoft.com/en-us/marketplace/partners/mongolab/mongolab/
我的第一选择是因为SAAS模式,成本低和SLA 99.99%AzureTables
http://alexandrebrisebois.wordpress.com/2013/07/09/what-if-20000-windows-azure-storage-transactions-per-second-isnt -足够/
一些限制..
http://msdn.microsoft.com/en-us/library/windowsazure/jj553018.aspx
http://www.windowsazure.com/en-us/pricing/calculator/?scenario=data-management
或AzureSQL用于小型企业
DocumentDB http://azure.microsoft.com/en-us/documentation/services/documentdb/ http://azure.microsoft.com/en-us/documentation/articles/documentdb-limits/
第二选择是许多云提供商,包括亚马逊提供S3
或Google表格https://developers.google.com/bigquery/pricing
nTH选择管理SHOW我自己都没有睡眠MongoDB我会再看看前两个SAAS
如果我正在运行"CLOUD",我会选择尽可能多地使用SAAS模型"RENT-IT"......
问题是我的应用程序需要的是AzureTables或DocumentDB或AzureSQL
DocumentDB文档
http://azure.microsoft.com/en-us/documentation/services/documentdb/
Azure定价的工作原理 http://azure.microsoft.com/en-us/pricing/details/documentdb/
这很有趣 http://www.documentdb.com/sql/demo