繁体   English   中英

Azure表与Azure上的MongoDB

[英]Azure Table Vs MongoDB on Azure

我想在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/microsofthttps://azure.microsoft.com/en-us/blog/announcing-new-mongodb-instances-on-microsoft-azure/

请参阅(包括定价): https//azure.microsoft.com/en-us/marketplace/partners/mongolab/mongolab/

我的第一选择是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/


第二选择是许多云提供商,包括亚马逊提供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

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

以上答案都很好 - 但真正的答案取决于您的要求。 您需要了解要处理的数据大小,要对数据执行的操作类型,然后选择满足您需求的解决方案。

要记住的一件事是Azure表存储不支持复杂的数据类型。它支持实体中的每个属性都是字符串或数字或布尔或日期等。一个人不能存储对象的对象,我认为这是必须的对于NoSql DB。 https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/understanding-the-table-service-data-model滚动到属性类型

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM