mongodb - Azure 表与 Azure 上的 MongoDB

我想在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。

https://stackoverflow.com/questions/7989465/

相关文章:

mongodb - 如何使用 Homebrew 软件安装早期版本的 mongodb?

javascript - Mongodb如何获取单个文档的大小?

mongodb - 如何将 mongodump 用于 1 个集合

mongodb - 你可以在 Mongo 中为 $addToSet 指定一个键吗?

android - 安卓上的 MongoDB

node.js - 在 Mongoose 中填充后查询

python - flask 用户认证

mongodb - 使用 mongoimport 将 json 从文件导入 mongodb

mongodb - 如何在 MongoDB 中设置主键?

mysql - MongoDB 与 MySQL