什么是MongoDB?简介、架构、功能和示例

栏目: 数据库 · 发布时间: 6年前

内容简介:什么是MongoDB?MongoDB是一个面向文档的NoSQL数据库,用于大容量数据存储。MongoDB是2000年代中期出现的一个数据库,属于NoSQL数据库。在这个教学大纲里,你会学习• 什么是MongoDB?

什么是MongoDB?

什么是MongoDB?MongoDB是一个面向文档的NoSQL数据库,用于大容量数据存储。MongoDB是2000年代中期出现的一个数据库,属于NoSQL数据库。

在这个教学大纲里,你会学习

• 什么是MongoDB?

• MongoDB功能

• MongoDB 例子

• MongoDB架构的关键组件

• 为什么使用MongoDB

• MongoDB中的数据建模

• MongoDB和RDBMS之间的差异

MongoDB功能

  1. 每个数据库都包含集合,而集合又包含文档。每个文档可以有不同的字段数。每个文档的大小和内容可以彼此不同。

  2. 文档结构更符合开发人员如何用各自的编程语言构造类和对象。开发人员通常会说,他们的类不是行和列,而是有一个带有键值对的清晰结构。

  3. 正如NoSQL数据库简介中所看到的,行(或 MongoDB 中调用的文档)不需要预先定义模式。相反,可以动态创建字段。

  4. MongoDB中可用的数据模型允许您更容易地表示层次关系、存储数组和其他更复杂的结构。

1.可扩展性—MongoDB环境非常容易扩展。世界各地的公司都定义了集群,其中一些公司运行100多个节点,数据库中有大约数百万个文档。

MongoDB 例子

下面的示例显示如何在MongoDB中建模文档。

  1. MongoDB添加了_id字段以唯一标识集合中的文档。

  2. 您可以注意到,RDBMS中的订单数据(OrderID、Product和Quantity )通常存储在单独的表中,而在MongoDB中,它实际上存储在集合本身的一个嵌入文档中。这是MongoDB中数据建模方式的主要区别之一。

    什么是MongoDB?简介、架构、功能和示例

MongoDB架构的关键组件

以下是MongoDB中使用的一些常用术语

1. _ id – 这是每个MongoDB文档中都需要的字段。_id字段表示MongoDB文档中的唯一值。“ID”字段类似于文档的主键。如果创建一个没有id字段的新文档,MongoDB将自动创建该字段。例如,如果我们看到上面的customer表的示例,MongoDB 将向集合中的每个文档添加一个24位的唯一标识符。

_Id CustomerID CustomerName OrderID

563479cc8a8a4246bd27d784 11 Guru99 111

563479cc7a8a4246bd47d784 22 Trevor Smith 222

563479cc9a8a4246bd57d784 33 Nicole 333

  1. 集合 – 这是一组MongoDB文档。集合相当于在任何其他RDM(如Oracle或MS SQL)中创建的表。单个数据库中存在集合。从介绍集合中可以看出,不强制任何类型的结构。

  2. 游标 – 这是指向查询结果集的指针。客户机可以遍历光标以检索结果。

  3. 数据库 – 这是一个用于集合的容器,就像在RDMS中一样,其中它是一个用于表的容器。每个数据库在文件系统上都有自己的文件集。MongoDB服务器可以存储多个数据库。

  4. 文件 – MongoDB集合中的记录基本上称为文档。文档将依次由字段名和值组成。

  5. 字段 – 文档中的名称-值对。文档有零个或多个字段。字段类似于关系数据库中的列。

下图显示了具有键值对的字段示例。因此在下面的示例中,CustomerID和11是文档中定义的键值对之一。

什么是MongoDB?简介、架构、功能和示例

6.JSON – 这被称为javascript对象表示法。这是一种人类可读的纯文本格式,用于表示结构化数据。目前许多编程语言都支持JSON。

只需简单说明ID字段和普通集合字段之间的关键区别。标识字段用于唯一标识集合中的文档,并在创建集合时由MongoDB自动添加。

为什么使用MongoDB?

下面是为什么应该开始使用MongoDB的几个原因

  1. 面向文档 – 由于MongoDB是一个NoSQL类型的数据库,因此它不使用关系类型格式的数据,而是将数据存储在文档中。这使得MongoDB非常灵活,能够适应实际的业务环境和需求。

  2. 即席查询 – MongoDB支持按字段、范围查询和正则表达式搜索。可以进行查询以返回文档中的特定字段。

  3. 索引-可以创建索引以提高MongoDB中搜索的性能。MongoDB文档中的任何字段都可以被索引。

  4. 复制-MongoDB可以为副本集提供高可用性。副本集由两个或多个Mongo DB实例组成。每个副本集成员可以随时扮演主副本或辅助副本的角色。主副本是与客户机交互并执行所有读/写操作的主服务器。辅助副本使用内置复制来维护主副本的数据。当主副本失败时,副本集会自动切换到辅助副本,然后成为主服务器。

  5. 负载均衡 – MongoDB使用sharding的概念,通过跨多个MongoDB实例拆分数据来横向扩展。MongoDB可以在多个服务器上运行,平衡负载和/或复制数据,以在硬件故障时保持系统的正常运行。

MongoDB中的数据建模

正如我们在介绍部分看到的,MongoDB中的数据有一个灵活的模式。与 SQL 数据库不同,在插入数据之前必须声明表的模式,MongoDB的集合不强制使用文档结构。这种灵活性正是MongoDB如此强大的原因。

在Mongo中建模数据时,请记住以下几点

  1. 应用程序的需求是什么?查看应用程序的业务需求,并查看应用程序所需的数据和数据类型。在此基础上,确保相应地确定文件的结构。

  2. 什么是数据检索模式?如果您预见到大量的查询使用,那么考虑在数据模型中使用索引来提高查询的效率。

  3. 数据库中是否经常发生插入、更新和删除操作?如果数据建模设计中需要,请重新考虑索引的使用或合并碎片,以提高整个MongoDB环境的效率。

MongoDB和RDBMS之间的差异

以下是MongoDB和RDBMS之间的一些关键术语差异

RDBMS MongoDB 不同点

Table Collection 在RDBMS中,该表包含用于存储数据的列和行,而在MongoDB中,该结构称为集合。集合包含的文档依次包含字段,而字段又是键值对。

Row Document 在RDBMS中,该行表示表中的单个隐式结构化数据项。在MongoDB中,数据存储在文档中.

Column Field 在RDBMS中,该列表示一组数据值。在MongoDB中,这些被称为字段。

Joins Embedded documents 在RDBMS中,数据有时分布在不同的表中,为了显示所有数据的完整视图,有时会在表中形成一个连接来获取数据。在MongoDB中,数据通常存储在单个集合中,但使用嵌入式文档进行分隔。所以MongoDB中没有连接的概念。

除术语差异外,其他一些差异如下所示

  1. 关系数据库以增强数据完整性而闻名。这在MongoDB中不是一个明确的要求。

  2. RDBMS要求首先对数据进行规范化,这样可以防止孤立记录和重复的规范化数据,然后需要更多的表,这将导致更多的表联接,从而需要更多的键和索引。

随着数据库的增长,性能可能开始成为一个问题。这在MongoDB中不是一个明确的要求。MongoDB是灵活的,不需要首先对数据进行规范化。

原文链接:https://www.guru99.com/what-is-mongodb.html

译者:张鹏


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Modeling the Internet and the Web

Modeling the Internet and the Web

Pierre Baldi、Paolo Frasconi、Padhraic Smyth / Wiley / 2003-7-7 / USD 115.00

Modeling the Internet and the Web covers the most important aspects of modeling the Web using a modern mathematical and probabilistic treatment. It focuses on the information and application layers, a......一起来看看 《Modeling the Internet and the Web》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具