📜  MongoDB:简介

📅  最后修改于: 2021-10-19 04:49:24             🧑  作者: Mango

MongoDB是最流行的 NoSQL 数据库,是一个开源的面向文档的数据库。术语“NoSQL”意味着“非关系”。这意味着 MongoDB 不是基于类似表的关系数据库结构,而是提供了一种完全不同的数据存储和检索机制。这种存储格式称为 BSON(类似于 JSON 格式)。

一个简单的MongoDB文档结构:

{
  title: 'Geeksforgeeks',
  by: 'Harshit Gupta',
  url: 'https://www.geeksforgeeks.org',
  type: 'NoSQL'
} 

SQL 数据库以表格格式存储数据。这些数据存储在预定义的数据模型中,对于当今现实世界中高度增长的应用程序而言,该模型不是很灵活。现代应用程序比以往任何时候都更加网络化、社交化和互动化。应用程序正在存储越来越多的数据并以更高的速率访问这些数据。

关系数据库管理系统 (RDBMS)因其设计而无法处理大数据,因此不是水平可扩展的正确选择。如果数据库在单个服务器上运行,那么它将达到扩展限制。 NoSQL 数据库更具可扩展性并提供卓越的性能。 MongoDB 就是这样一个 NoSQL 数据库,它通过添加越来越多的服务器来扩展,并通过其灵活的文档模型提高生产力。

RDBMS 与 MongoDB 对比

  • RDBMS 具有典型的模式设计,显示表的数量和这些表之间的关系,而 MongoDB 是面向文档的。没有模式或关系的概念。
  • MongoDB 不支持复杂事务,因为复杂的联接操作不可用。
  • MongoDB 允许高度灵活和可扩展的文档结构。例如,MongoDB 中某个集合的一个数据文档可以有两个字段,而同一集合中的另一个文档可以有四个字段。
  • 由于高效的索引和存储技术,MongoDB 比 RDBMS 更快。
  • 两个数据库中都有一些相关的术语。在 RDBMS 中称为 Table 的内容在 MongoDB 中称为集合。同样,元组称为文档,列称为字段。 MongoDB 提供了一个默认的“_id”(如果没有明确提供),它是一个 12 字节的十六进制数,它确保每个文档的唯一性。它类似于 RDBMS 中的主键。

MongoDB的特点:

  • 面向文档:MongoDB 将主要主题存储在最少数量的文档中,而不是将其分解为多个关系结构,如 RDBMS。例如,它将计算机的所有信息存储在一个名为 Computer 的单个文档中,而不是存储在 CPU、RAM、硬盘等不同的关系结构中。
  • 索引:如果没有索引,数据库将不得不扫描集合中的每个文档以选择与查询匹配的文档,这将是低效的。因此,为了高效搜索索引是必须的,MongoDB 使用它在非常短的时间内处理大量数据。
  • 可扩展性:MongoDB 使用分片(跨各种服务器对数据进行分区)进行水平扩展。使用分片键将数据划分为数据块,这些数据块均匀分布在多个物理服务器上的分片上。此外,可以将新机器添加到正在运行的数据库中。
  • 复制和高可用性:MongoDB 通过在不同服务器上的多个数据副本来提高数据可用性。通过提供冗余,它可以保护数据库免受硬件故障的影响。如果一台服务器出现故障,可以从其他活动服务器轻松检索数据,这些服务器也存储了数据。
  • 聚合:聚合操作处理数据记录并返回计算结果。它类似于 SQL 中的 GROUPBY 子句。一些聚合表达式是 sum、avg、min、max 等

我们在哪里使用MongoDB?

在以下场景中,MongoDB 优于 RDBMS:

  • 大数据:如果您有大量数据要存储在表中,请先考虑 MongoDB,然后再考虑 RDBMS 数据库。 MongoDB 内置了用于对数据库进行分区和分片的解决方案。
  • 不稳定的架构:在 RDBMS 中添加新列很困难,而 MongoDB 是无架构的。添加新字段,不会影响旧文档,并且非常容易。
  • 分布式数据由于多个数据副本存储在不同的服务器上,因此即使出现硬件故障,数据的恢复也是即时且安全的。

MongoDB 的语言支持

MongoDB 目前为所有流行的编程语言提供官方驱动程序支持,如 C、C++、C#、 Java、Node.js、Perl、 PHP、 Python、Ruby、Scala、Go 和 Erlang。

安装 MongoDB

只需访问 http://www.mongodb.org/downloads 并从 Windows、Linux、Mac OS X 和 Solaris 中选择您的操作系统。他们的网站上提供了有关安装 MongoDB 的详细说明。

对于 Windows,64 位操作系统的一些选项下降了。当您在 Windows 7、8 或更新版本上运行时,选择Windows 64-bit 2008 R2+ 。当您使用 Windows XP 或 Vista 时,请选择Windows 64-bit 2008 R2+ legacy

谁在使用 MongoDB?

MongoDB 已被许多主要网站和服务采用作为后端软件,包括 EA、Cisco、Shutterfly、Adobe、爱立信、Craigslist、eBay 和 Foursquare。

下一篇:
MongoDB 和Python

有关更多信息,请访问他们的网站:https://www.mongodb.com/nosql-explained

关于作者——总部位于加尔各答的Harshit Gupta是一位活跃的博主,对撰写时事、技术博客、故事和个人生活经历有着浓厚的兴趣。除了热爱写作,他还喜欢编码和跳舞。目前在 IIEST 学习,他是 geeksforgeeks 的活跃博客撰稿人。

如果您还想在这里展示您的博客,请参阅 GBlog,了解 GeeksforGeeks 上的客座博客写作。