Azure表Vs Azure上的MongoDB

我想在Windows Azure上使用NoSQL数据库,数据量将非常大。 使用Workerangular色运行的Azure表存储或MongoDB数据库是否可以提供更好的性能和可伸缩性? 有没有人使用工作者angular色在Azure上使用MongoDB? 请分享您在Azure上使用Azure上的MongoDB的想法。

表存储是一个核心的Windows Azure存储function,旨在可扩展(每个帐户100TB 200TB 500TB),持久(在数据中心三重复制,可选地理复制到另一个数据中心)和无模式(每行可能包含任何属性想)。 一行按分区键+行键定位,提供非常快速的查找。 所有的表存储访问都是通过一个定义良好的REST API通过任何语言(SDK,build立在REST API之上,已经在.NET,PHP,Java,Python和Ruby的基础上)实现。

MongoDB是一个面向文档的数据库。 要在Azure中运行它,需要将MongoDB安装到Web / Workerangular色或虚拟机上,将其指向云驱动器(从而提供驱动器盘符)或附加的磁盘(对于Windows / Linux虚拟机),可选地启用日记function(我build议),并可select定义一个外部端点供您使用(或通过虚拟networking访问它)。 云端硬盘/连接磁盘,实际上存储在Azure Blob中,为您提供与Azure Tables相同的耐久性和地理复制。

比较两者时,请记住,表存储是“即服即用”存储:您只需访问众所周知的REST端点即可。 使用MongoDB,您负责维护数据库(例如,无论MongoDB Inc(以前称为10gen)推出新版本的MongoDB,您都需要相应地更新您的服务器)。

关于MongoDB公司的jtoberon指出的alpha版本:如果仔细看看,你会看到一些关键的东西:

  • 该设置是针对独立的mongodb实例,没有副本集或分片。 关于副本集,由于Blob存储的工作方式,您仍然可以使用Standalone版本获得多项优势。
  • 为了提供高可用性,您可以运行多个实例。 在这种情况下,只有一个实例服务于数据库,一个是“热备份”,只要另一个实例失败(用于维护重启,硬件故障等)就会启动mongod进程。

虽然10gen的Windows Azure包装仍然被认为是“alpha”,但是mongod.exe不是。 您可以像启动其他Windows exe文件一样启动mongod exe文件。 这只是围绕启动的pipe理代码,这就是ALPA实施展示的内容。

编辑2011-12-8:这不再是一个阿尔法状态。 您可以在这里下载最新的MongoDB + Windows Azure项目,它提供副本集支持。

为了performance,我认为你需要做一些基准testing。 话虽如此,考虑如下:

  • 当从Webangular色访问Table Storage或MongoDB时,您仍然接触到Windows Azure存储系统。
  • MongoDB为自己的caching使用大量的内存。 出于这个原因,许多高规模的MongoDB系统被部署到更大的实例大小。 对于表存储访问,您不会有相同的内存大小考虑。

编辑2015年4月7日如果您想使用基于文档的数据库即服务,Azure现在提供DocumentDB。

我已经使用了两个。

Azure Tables:简单,快速,甚至简单的查询都很难写。

Mongo:运行良好,有很多查询function,需要几个实例才能可靠。

简而言之,如果您的查询非常简单(key-> value),则必须运行成本比较(主要是针对存储的事务数与在Azure上托pipeMongo的成本)。 我宁愿去那个表的存储。 如果你需要更详细的查询,而不想去SQL Azure,Mongo可能是你最好的select。

我意识到这个问题是过时的。 我想为在search中遇到此问题的人添加以下信息。

请注意,现在,MongoDB作为Azure上的完全托pipe服务提供。 (截至2015年4月正式在Beta版)

请参阅: 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/

我的第一select是AzureTables,因为SAAS模型和低成本以及SLA 99.99%
http://alexandrebrisebois.wordpress.com/2013/07/09/what-if-20000-windows-azure-storage-transactions-per-second-isnt-enough/

一些限制.. 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/

第二select是许多云提供商,包括亚马逊提供的S3

或Google表格https://developers.google.com/bigquery/pricing

不pipe怎么说,我自己都不会睡觉MongoDB,我会再看看前两个SAAS

我的select,如果我正在运行“云”我会尽可能多地去SAAS模型“租金”…

问题是我的应用程序需要的是AzureTables或DocumentDB或AzureSQL
DocumentDB文档http://azure.microsoft.com/en-us/documentation/services/documentdb/

Azure定价如何工作http://azure.microsoft.com/zh-CN/pricing/details/documentdb/

这很有趣http://www.documentdb.com/sql/demo

以上答案都很好 – 但真正的答案取决于你的要求是什么。 您需要了解正在处理的数据大小,要对数据执行的操作types,然后select满足您需求的解决scheme。

Build 2016宣布DocumentDB将支持所有的MongoDB驱动程序。 这解决了DocDB中缺less工具问题的一些问题,也使迁移Mongo应用变得更加容易。

有一点要记住的是,Azure Table Storage不支持复杂的数据types。它支持实体中的每个属性都是string或数字或布尔值或date等。一个不能存储一个对象的对象,我觉得是必须的为NoSql DB。 https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/understanding-the-table-service-data-model滚动到;属性types