MongoDB 常见问题解答

MongoDB 是什么?

MongoDB 是为现代应用程序开发者和云构建的基于文档的通用分布式数据平台。其高效使用性令任何其他数据平台望尘莫及。

MongoDB 为什么有用?

MongoDB 数据平台基于三个核心设计原则构建,旨在使您能够以更快的速度和更高的质量进行开发:

  1. 文档数据模型 – 为您提供处理数据的最佳方式。

  2. 分布式系统设计 – 支持您将数据智能地放置在所需的位置

  1. 统一的体验,带给您在任何地方运行的自由 – 让您的应用适应未来需求并避免供应商锁定问题。

通过阅读 MongoDB 架构指南了解更多信息。

我应当何时使用 MongoDB?

MongoDB 数据平台可用于各种 OLTP 和分析应用。

MongoDB Server 和 MongoDB Atlas Data Lake(当前处于 Beta 版),可满足广泛的应用程序需求。

MongoDB Server 和 Atlas:OLTP 和在线分析

MongoDB Server 是旨在服务于大多数 OLTP 和在线分析工作负载的通用数据库:

每当您考虑使用关系型数据库时,均应考虑使用 MongoDB。

  • 每当您考虑使用 NoSQL 数据库时,均应考虑 MongoDB。

无论您打算在自己的设施中将应用作为无服务器的云本机解决方案运行,还是作为二者之间的混合部署模型运行,MongoDB Server 均可提供完整的基础架构敏捷性。您既可在自己的基础架构上自行运行 MongoDB,也可以使用 MongoDB Atlas (我们的完全托管和完全自动化的全球云数据库服务,可在 AWS、Azure 和 GCP 60 多个区域中使用)

MongoDB Atlas Data Lake (Beta):离线分析

除了 MongoDB 服务器之外,MongoDB Atlas Data Lake 还将 MongoDB 的功能和生产率扩展到了离线分析工作负载。Atlas Data Lake 支持您使用 MongoDB 查询语言和工具快速轻松地在 Amazon S3 上以任何格式查询数据(其他云提供商即将推出)。

借助 Atlas Data Lake,您可以更快地实现数据湖的价值:您无需将数据移动到任何地方,您可以以其本机形式立即处理复杂数据,并通过其完全托管的无服务器架构来控制成本并消除运营负担。

MongoDB 数据平台

通过 MongoDB Server 和 Atlas Data Lake,您拥有一个集成的数据平台,该平台共享相同的查询语言和工具,并由原生于云的 Atlas 服务完全为您管理,从而使您可以广泛的运营和分析应用程序:

  1. MongoDB Atlas:专为在线 OLTP 应用程序设计,需要毫秒级的响应时间,并配有专用的分析节点,可针对实时的运营数据进行实时分析。
  1. MongoDB Atlas:在线分析,具有优化的二级索引,可支持可预测的查询模式,要求的响应时间在亚秒至几秒的范围内。

  2. MongoDB Atlas Data Lake:专为针对离线数据分析而设计*针对驻留在云存储中的大量数据,其延迟范围在数秒之内(至少),但更常见的是几分钟或更长时间,具体取决于您正在查询多少数据以及如何对其进行分区。

要了解 MongoDB 使用案例以及应当评估哪些领域的替代技术的工作量,请查看 MongoDB 使用案例指南白皮书

MongoDB 与 Oracle 等关系型数据库有何不同?

关系型数据库(如 Oracle、MySQL、SQL Server、Postgres 等)建立在 40 年前设计的架构上。二十世纪 70 年代对应用程序的要求与对当今现代应用程序的要求十分不同。Oracle 在 1979 年首次发布其商业数据库时,每 MB 存储的成本约为 3,000 美元。此类成本迫使软件架构师将数据规范化并创建多个连接表以存储应用程序数据,从而消除任何冗余。结果,当今的关系数据库应用程序包含数十个、数百个、在某些情况下甚至是成千上万个表,需要将它们连接在一起以获得查询结果。这种复杂性不仅要求开发者编写复杂的 SQL 查询,而且查询中有很多表需要更高的 I/O,这会增加基础架构成本。

MongoDB 在设计时就考虑到了开发者,可以使数据库摆脱困境并提高生产率。利用 MongoDB,仅需将其使用的数据存储在应用程序内并使用现代查询语言查询数据即可。您的架构非常灵活,使开发者能够不断集成新功能。

与 Oracle 和其他关系数据库不同,MongoDB 建立在分布式系统架构上,使您能够跨多个实例横向扩展数据库。它既可以位于一个区域,也可以全局分布在多个区域。

请查看 Oracle 和 MongoDB 对比页面,以深入了解差异。

我如何了解 MongoDB?

学习 MongoDB 的最简单方法是通过我们在 MongoDB University 为开发者和数据库管理员进行的免费在线培训课程。secondary replicasMongoDB University 在线培训课程由 MongoDB, Inc. 工程师开发和讲授。MongoDB University 在全球 196 个国家/地区拥有 100 多万个注册帐户:这些学生已经学会了如何在 MongoDB 上开发和部署应用程序。

MongoDB University 免费课程涵盖了成为 MongoDB 专家所需的所有知识。在线培训课程是专门为帮助您在重要领域掌握新技能而开发的。在线培训课程基于实际应用程序而设计,由我们内部工程师团队讲授,他们每天都在处理代码,且已查看 13,000 多家公司的使用案例。

MongoDB University 培训课程可自定进度,使您可以在方便的时候查看视频和课程资料。同时,我们通过每周布置作业作业并设定提交作业的截止日期帮您制定学习计划,以检查您的进度,并通过期末考试来测试您的学习成果。大多数课程为期三周,通常每个星期只需要 90 分钟的时间。查找适合您的课程。查看课程目录

我如何成为 MongoDB 认证专家?

参加 MongoDB 认证考试以证明您的专业度,并成为 MongoDB 认证的专业开发者或数据库管理员。MongoDB 认证认可开发者或数据库管理员具有构建和维护 MongoDB 应用程序所需的知识。

要准备认证考试,请参加我们的实践考试,使自己熟悉认证考试的出题领域和形式,从而建立信心。除了练习考试之外,还需仔细阅读我们的学习指南。学习指南涵盖了开发者考试和数据库管理员考试的所有主题。该指南的每个部分均链接到相关文档和其他在线资源。

MongoDB 服务器可免费使用。MongoDB, Inc. 销售的是什么?

我们是开发和运营 MongoDB 的公司。超过 14,200 个组织依靠我们的商业产品。我们提供的软件和服务可以使您的生活更轻松:

MongoDB 数据库

  • MongoDB Atlas 是针对现代应用程序的全球云数据库服务。通过一流的自动化和行之有效的实践在 AWS、Azure 或 Google Cloud 上部署完全托管的 MongoDB,以确保可用性、可扩展性和对安全标准的遵从性。使用 MongoDB 强大的驱动程序,集成和工具生态系统,可以更快地构建并减少操作时间和数据库管理时间。

  • MongoDB Enterprise Advanced 是在自己的基础架构上运行 MongoDB 的最佳方式。它是针对您的业务方式而精心设计的高级软件、支持、认证和其他服务的软件包。

  • MongoDB Cloud Manager 是基于云的工具,可帮助您在自己的基础架构上管理 MongoDB。这是一个带有自动化配置、细化监控和持续备份功能的全面的管理套装,能为您削减运营开销,同时让您对您的数据库保持充分的掌控。

MongoDB 分析和可视化

  • MongoDB Atlas Data Lake 支持您使用 MongoDB 查询语言和工具快速轻松地查询 Amazon S3 上任何格式的数据。您无需将数据移动到任何地方,就可以立即以其本机格式处理复杂数据,并通过其完全托管的无服务器架构来控制成本并消除运营负担。

-MongoDB Charts 是在任何位置创建 MongoDB 数据可视化效果的最佳方式。快速轻松地建立可视化文件,以分析复杂的嵌套数据。将单个图表嵌入任何 Web 应用程序中,或将它们组装到实时仪表板中以进行共享。

  • 适用于 BI 的 MongoDB Connector 支持您将 MongoDB 用作现有基于 SQL 的 BI 和 Tableau、Microstrategy、Looker 等分析平台的数据源。
MongoDB Connector for Apache Spark

展现 Spark 所有的库,包括 Scala 库、Java 库、Python 库和 R 库。MongoDB 数据通过机器学习、图形、流式传输和 SQL API 以数据框和数据集的形式呈现,用于分析。

移动数据库和无服务器应用平台

  • MongoDB Realm 数据库已安装 20 多亿次,为 SQLite 和 Core Data 提供了易于使用的快速替代方式。借助对复杂查询的支持、安全线程、可创建响应式和流畅 UI 的反应性架构、加密以及跨平台支持,开发者可以简化其代码并在更多设备上构建强大而引人入胜的体验。

-MongoDB Realm 和 Stitch 平台可帮助您更快地构建更好的全栈应用。它提供了可轻松配置的规则,用于直接从您的应用程序前端访问数据和服务,以及执行应用程序逻辑的无服务器功能。您可以自动在客户端和后端数据层之间同步数据。通过与代码库的集成,您可以在本地进行开发,然后无缝地部署版本控制的应用程序更新以进行测试和生产。

MongoDB 服务

  • MongoDB Consulting 软件包 使您能够更快地投入生产,帮助您调整生产性能并扩展规模,使您有更多精力专注于下一个发行版。

-MongoDB 培训 帮助您从设计到大规模运行关键任务系统,成为 MongoDB 专家。无论您是开发者,数据库管理员还是架构师,我们都可以使您的 MongoDB 技能有所提升。

联系我们 了解更多

我可以获得 MongoDB 的商业许可证吗?

是的,购买 MongoDB Enterprise Advanced 可以获取 MongoDB 的商业许可证。

数据如何存储在 MongoDB 数据库中?

MongoDB 中的数据存储在 BSON 文档 – JSON 样式的数据结构中。文档包含一个或多个字段,每个字段包含特定数据类型的值,包括数组、二进制数据和子文档。倾向于将相似结构的文档存放在同一个集合内。

将文档视为类似于关系型数据库中的行,将字段视为列,将集合视为表可能会有所帮助。

MongoDB 架构指南中了解更多信息。

作为开发者,我如何使用 MongoDB 文档?

为了提高开发者的工作效率,MongoDB 为所有流行的编程语言和框架提供了本机驱动程序。支持的驱动程序包括 Java、Javascript、C#/.NET、Go、Python、Perl、PHP、Scala 等。所有支持的 MongoDB 驱动程序都是根据给定的编程语言的特性而设计的。与基于字符串的语言(例如 SQL)相比,这使开发者能够更自然地使用数据,无需繁琐而脆弱的 ORM 抽象层。

您还可以使用 MongoDB Compass (用于 MongoDB 的 GUI)以图形方式与 MongoDB 进行交互。通过 Compass,您可以浏览和操作数据,从 GUI 中直观地创建查询和聚合管道,然后将它们作为代码导出到您的应用中;检查查询的执行和性能;查看和创建索引;构建模式验证规则和视图等等。

MongoDB 是否支持 ACID 事务?

是的。自 2018 年发布的 MongoDB 4.0 版本以来,已开始支持多文档 ACID 事务。

我可以在哪里运行 MongoDB?

MongoDB 可以在任何地方运行,完全不受平台锁定的困扰。

MongoDB Atlas 为您提供了在 AWS、Azure 和 Google Cloud上针对 MongoDB 的按需购买、完全托管的完整服务。

您可以下载 MongoDB 并自行在任何位置运行。MongoDB Ops Manager 是您在自己的基础架构上运行 MongoDB 的最佳方法,从而使运营团队可以快速轻松地部署、监视、备份和扩展 MongoDB。MongoDB Cloud Manager服务中也提供了 Ops Manager 的功能。

MongoDB 可以扩展吗?

数十万家企业和机构用 MongoDB 来构建大规模的高性能系统。从财富 100 强企业到极为敏捷的创业公司,均依赖 MongoDB。他们从使用单台服务器部署发展到使用带有超过 1,000 个节点的集群,对超过 1000 亿个文档和 PB 级数据执行每秒数百万次操作。了解更多

通过分片,您可以跨多个节点自动扩展 MongoDB 数据库,以处理写入密集型工作负载和不断增长的数据量。使用 MongoDB 进行分片可让您在应用超出单个服务器的硬件限制时无缝扩展数据库,且不会增加应用程序的复杂性。为了响应不断变化的工作负载需求,可以在分片之间移动文档,并且可以实时从集群中添加或删除节点。MongoDB 将根据需要自动重新平衡数据,无需手动干预。

MongoDB 如何确保高可用性?

MongoDB 自动维护副本集、跨服务器、机架和数据中心分布的多个数据副本。副本集使用本机复制和自动故障转移帮助防止数据库停机。

一个副本集由多个副本集成员组成。在任何给定时间,一个成员充当主要成员,其他成员充当次要成员。如果主要成员由于某种原因(例如,硬件故障)而失败,则次要成员之一会自动选为主要成员,并开始处理所有读取和写入操作。

MongoDB 架构指南中了解更多信息。

MongoDB 如何确保一致性?

默认情况下,MongoDB 是一致的:读取和写入均会发布到副本集的主节点。应用程序可以选择从从节点中读取,默认情况下,从节点数据最终会保持一致。在一些数据延迟可被接收的场景下(例如某些报告应用程序),从从节点中读取可能会很有用。当延迟比一致性更重要时,应用程序还可以从最近的数据副本中读取(通过 ping 距离衡量)。

MongoDB 架构指南中了解更多信息。

MongoDB 是schema-less的吗?

否。在 MongoDB 中,架构设计仍然很重要。但是,MongoDB 的文档模型确实采用了与传统关系数据库不同的架构范例。 在 MongoDB 中,文档是自描述性的;没有用于声明和维护模式的中央目录。该架构可能会因文档而异,且该架构可以快速演变而无需修改现有数据。

MongoDB 的动态架构还使表示半结构化和多态数据变得更容易,因为文档并不需要全部具有完全相同的字段。例如,一组金融交易头寸可能具有作为股票头寸的头寸,一些是债券头寸,有些则是现金头寸。所有字段可能都有一些共同的字段,但是某些字段(例如“ ticker”、“ numberofshares”)并不适用于所有头寸类型。

利用Schema Validation ,您可以选择对数据强制校验,以确保数据存在必填字段、允许的值和适当的数据类型。 在 MongoDB 中设计架构时,您需要考虑的有很多,包括应用程序将需要执行的查询类型,如何在应用程序代码中管理对象以及文档将如何随着时间的变化而增长。

了解有关模式设计的更多信息:

阅读文档,包括示例和模式

数据存储到 MongoDB 中之前,是否需要对数据进行规范化?

不是。使用 MongoDB 时,模型设计非常重要,但与关系数据库的模型设计有很大不同。

了解有关模式设计的更多信息:

阅读文档,包括示例和模式

MongoDB 如何保护我的数据安全?

MongoDB 具有广泛的功能来保护、检测和控制对数据的访问:

-身份验证。MongoDB 简化了对数据库的访问控制,它提供了基于 SCRAM-256 的强大的质询-响应机制,以及与企业安全基础架构(包括 LDAP、Windows Active Directory、Kerberos 和 x.509 证书)的集成。 -授权。基于角色的访问控制 (RBAC) 使您可以根据用户或应用程序执行其工作所需的特权来为其配置精细权限。 -审核。为了符合法规要求,安全管理员可以使用 MongoDB 的本机审核日志来记录所有数据库活动和更改。 -无处不在的加密。无论是在磁盘上还是在备份中,MongoDB 数据都可以在网络中移动,在数据库中使用以及在静止时进行加密。

查看文档

了解有关 MongoDB 安全控制的更多信息。前往 MongoDB 信任中心了解有关云中安全性的更多信息。

MongoDB 4.4 版本中有哪些新功能?

查看新功能指南了解详情。

MongoDB Realm 和 MongoDB Stitch 之间是什么关系?

MongoDB Realm 将流行的移动数据库和数据同步技术 Realm 与 MongoDB 的无服务器平台 MongoDB Stitch 结合至单个统一的解决方案中,使您可以轻松地在更多设备上为用户提供强大的互动体验。点击此处了解详情。

MongoDB 这个名字从何而来?

MongoDB 来自“humongous (巨大)”一词。我们的创始人们创立了很多大型互联网公司,例如 DoubleClick。而他们总是遇到相同的数据库问题,其中最大的问题之一是可扩展性。所以当他们开始构建 MongoDB 时,他们希望这是一个可扩展的数据库。因此,将之命名为“a humongous database(大型数据库)”或 MongoDB。

MongoDB 徽标中的树叶有何含义?

我们的创始人坚信,编码应当成为一种自然行为,因此使用数据库也应当如此。他们希望使用 MongoDB 的体验既简便又自然。因此,树叶徽标随之而来。