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