我想在Windows Azure上使用NoSQL数据库,数据量会非常大。 Azure Table存储或使用Worker角色运行的MongoDB数据库是否可以提供更好的性能和可伸缩性?有没有人使用Worker角色在Azure上使用MongoDB?请分享您在Azure桌面存储上使用Azure上的MongoDB的想法。
答案 0 :(得分:72)
表存储是一个核心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时,您需要相应地更新服务器。)
关于joberon指出的MongoDB Inc的alpha版本:如果你仔细看看它,你会看到一些关键的东西:
虽然10gen的Windows Azure包装仍然被认为是“alpha”,但mongod.exe却不是。您可以像启动任何其他Windows exe一样启动mongod exe。这只是围绕启动的管理代码,这就是alpa实现所展示的内容。
编辑2011-12-8:这不再处于alpha状态。您可以下载最新的MongoDB + Windows Azure项目here,该项目提供副本集支持。
为了表现,我认为你需要做一些基准测试。话虽如此,请考虑以下事项:
编辑2015年4月7日 如果要使用基于文档的数据库作为服务,Azure现在提供DocumentDB。
答案 1 :(得分:35)
我用过两者。
Azure表:简单,快速,甚至很难编写简单的查询。
Mongo:运行良好,有很多查询功能,需要多个实例才能可靠。
简而言之, 如果您的查询非常简单(key-> value),则必须进行成本比较(主要是针对存储的事务数量与Azure上托管Mongo的成本)。我宁愿去那个桌面存储。 如果您需要更复杂的查询并且不想访问SQL Azure,那么Mongo可能是您最好的选择。
答案 2 :(得分:9)
我意识到这个问题已经过时了。我想为那些可能在搜索中遇到此问题的人添加以下信息。
请注意,现在,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/
答案 3 :(得分:5)
我的首选是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
我的选择,如果我正在跑步"云"我将尽可能地选择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答案 4 :(得分:2)
在Build 2016,宣布DocumentDB将支持所有MongoDB驱动程序。这解决了DocDB缺少工具问题的一些问题,也使得迁移Mongo应用程序变得更加容易。
答案 5 :(得分:1)
以上答案都很好 - 但真正的答案取决于您的要求。您需要了解要处理的数据大小,要对数据执行的操作类型,然后选择满足您需求的解决方案。
答案 6 :(得分:0)
要记住的一件事是Azure表存储不支持复杂数据类型。它支持实体中的每个属性为String或数字或布尔值或日期等。 一个人不能存储对象的对象,我认为这对于NoSql DB是必须的。 https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/understanding-the-table-service-data-model滚动到属性类型