mongodb - Azure 表与 Azure 上的 MongoDB

标签 mongodb azure azure-storage azure-table-storage nosql

我想在Windows Azure上使用NoSQL数据库,数据量会很大。使用辅助角色运行的 Azure 表存储或 MongoDB 数据库是否可以提供更好的性能和可扩展性?有人使用 Worker 角色在 Azure 上使用过 MongoDB 吗?请分享您对在 Azure 表存储上使用 Azure 上的 MongoDB 的想法。

最佳答案

表存储是一项核心 Windows Azure 存储功能,旨在可扩展(100TB 200TB 每个帐户 500TB)、持久(在数据中心进行三重复制,可选)地理复制到另一个数据中心)和无模式(每行可以包含您想要的任何属性)。通过分区键+行键定位一行,提供非常快速的查找。所有表存储访问均通过可通过任何语言使用的明确定义的 REST API(使用基于 REST API 构建的 SDK,已适用于 .NET、PHP、Java、Python 和 Ruby)。

MongoDB 是一个面向文档的数据库。要在 Azure 中运行它,您需要将 MongoDB 安装到 Web/辅助角色或虚拟机上,将其指向云驱动器(从而提供驱动器号)或附加磁盘(对于 Windows/Linux 虚拟机),可以选择打开日志功能(我推荐),并可选择定义一个外部端点供您使用(或通过虚拟网络访问它)。顺便说一句,云驱动器/附加磁盘实际上存储在 Azure Blob 中,为您提供与 Azure 表相同的持久性和地理复制。

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

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

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

虽然 10gen 的 Windows Azure 包装器仍被视为“alpha”,但 mongod.exe 却不是。您可以启动 mongod exe,就像启动任何其他 Windows exe 一样。这只是围绕启动的管理代码,这就是 alpa 实现所演示的内容。

编辑 2011-12-8:这不再处于 alpha 状态。您可以下载最新的MongoDB+Windows Azure项目here ,它提供副本集支持。

对于性能,我认为您需要进行一些基准测试。话虽如此,请考虑以下事项:

  • 当从 Web 角色访问表存储或 MongoDB 时,您仍然会访问 Windows Azure 存储系统。
  • MongoDB 使用大量内存作为自己的缓存。因此,许多大规模 MongoDB 系统被部署到更大的实例大小。对于表存储访问,您不会有相同的内存大小考虑。

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

关于mongodb - Azure 表与 Azure 上的 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7989465/

相关文章:

java - 我们是否有任何选项可以使用 Rest API 收集 Azure 中的存储服务操作日志

azure - 将查找表与 Azure 表存储结合使用 - 值得创建一个辅助服务来管理它吗?

java - 使用 java 在 MongoDB 上的 Hadoop mapreduce

javascript - nodeJS 创建动态数组并用作响应

powershell - 使用 Powershell 更新 Azure 网站实例大小(小、中、大)

azure - 独占锁管道级别 - Azure

azure - Service Fabric Log etl 文件目标

mongodb - 创建具有读取本地数据库权限的mongo用户

mongodb - 如何将spark结构流写入mongodb集合?

c# - 将 WindowsAzure.Storage 安装到面向 Xamarin 平台的 PCL