正规365娱乐平台-365bet官方游戏-365体育官网全球最大

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

通过这个教程,我们将学习如下内容: 什么是MongoDB? MongoDB功能 MongoDB示例演示 MongoDB架构的关键组件 为什么要使用MongoDB MongoDB中的数据建模 Mon

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

通过这个教程,我们将学习如下内容:

什么是MongoDB?

MongoDB功能

MongoDB示例演示

MongoDB架构的关键组件

为什么要使用MongoDB

MongoDB中的数据建模

MongoDB和RDBMS之间的区别

什么是MongoDB?

MongoDB是面向文档的NoSQL数据库,用于大量数据存储。MongoDB是一个在2000年代中期问世的数据库。属于NoSQL数据库的类别。

MongoDB功能

每个数据库都包含集合,而集合又包含文档。每个文档可以具有不同数量的字段。每个文档的大小和内容可以互不相同。

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

从NoSQL数据库的简介中可以看出,行(或在MongoDB中调用的文档)不需要预先定义架构。相反,可以动态创建字段。

MongoDB中可用的数据模型使我们可以更轻松地表示层次结构关系,存储数组和其他更复杂的结构。

可伸缩性– MongoDB环境具有很高的可伸缩性。全球各地的公司已经定义了自己的集群,其中一些集群运行着100多个节点,数据库中包含大约数百万个文档。

MongoDB示例

以下示例展示在MongoDB中如何建立文档模型。

_id字段由MongoDB添加,以唯一标识集合中的文档。

请注意,RDBMS中的订单数据(OrderID,Product和Quantity)通常将存储在单独的表中,而在MongoDB中,这些数据实际上是作为嵌入式文档存储在集合本身中的。这是MongoDB中数据建模方式的主要差异之一。

MongoDB架构的关键组件

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

_id–这是每个MongoDB文档中必填的字段。_id字段表示MongoDB文档中的唯一值。_id字段类似于文档的主键。如果创建的新文档中没有_id字段,MongoDB将自动创建该字段。因此,例如,如果我们看到上述客户表的示例,Mongo DB将为集合中的每个文档添加24位唯一标识符。

_ID

CustomerID

CustomerName

OrderID

563479cc8a8a4246bd27d784

11

Guru99

111

563479cc7a8a4246bd47d784

22

Trevor Smith

222

563479cc9a8a4246bd57d784

33

Nicole

333

集合–这是MongoDB文档的分组。集合等效于在任何其他RDMS(例如Oracle或MS SQL)中创建的表。集合存在于单个数据库中。从介绍中可以看出,集合不强制执行任何结构。

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

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

文档-MongoDB集合中的记录基本上称为文档。文档包含字段名称和值。

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

下图显示了带有键值对的字段的示例。如下的例子中,CustomerID和11是文档中定义的键值对之一。

JSON –JavaScript Object Notation 是一种轻量级的数据交换格式。是可读性高用于表示结构化数据的纯文本格式,用于表达结构化数据。目前,许多编程语言都支持JSON。

简要说明一下_id字段和常规collection字段之间的主要区别。_id字段用于唯一标识集合中的文档,MongoDB在创建集合时会自动添加_id字段。

为什么要使用MongoDB?

以下是一些为什么应该开始使用MongoDB的原因

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

临时查询-MongoDB支持按字段,范围查询和正则表达式搜索。可以查询返回文档中的特定字段。

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

复制-MongoDB可以提供副本集的高可用性。副本集由两个或多个mongo数据库实例组成。每个副本集成员可以随时充当主副本或辅助副本的角色。主副本是与客户端交互并执行所有读/写操作的主服务器。辅助副本使用内置复制维护主数据的副本。当主副本发生故障时,副本集将自动切换到辅助副本,然后它将成为主服务器。

负载平衡-MongoDB使用分片的概念,通过在多个MongoDB实例之间拆分数据来水平扩展。MongoDB可以在多台服务器上运行,以平衡负载或复制数据,以便在硬件出现故障时保持系统正常运行。

MongoDB中的数据建模

从“简介”部分可以看出,MongoDB中的数据具有灵活的架构。与SQL数据库不同,在SQL数据库中必须在插入数据之前声明表的架构,而MongoDB的集合不会强制执行文档结构。这种灵活性使MongoDB如此强大。

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

应用程序的需求是什么–查看应用程序的业务需求,并查看应用程序所需的数据和数据类型。基于此,确保相应地确定文档的结构。

什么是数据检索模式–如果我们可能使用大量查询操作,则可以考虑在数据模型中使用索引来提高查询效率。

数据库中是否频繁发生插入,更新和删除操作–如果数据建模设计需要重新考虑使用索引或合并分片,以提高整体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中没有联接的概念。

除了常见术语的差异,还包括其他一些差异:

关系数据库以强制执行数据完整性而闻名。这不是MongoDB中的明确要求。

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

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

译者:徐扬

源地址:https://www.guru99.com/what-is-mongodb.html

← 上一篇: 《魔兽争霸3》冰封王座地图下载网址一览
下一篇: 聚美优品退换货相关问题具体说明! →

相关推荐

全球购哪个app靠谱 全球购哪个App最好?

全球购哪个app靠谱 全球购哪个App最好?

全球购已经成为越来越多人的购物选择,但是面对众多全球购物App,很多人不知道该选择哪一个才是最可靠的。本文将为大家揭秘最可靠的全球

dnf雪人套每年都什么时候出-dnf雪人套每年都什么时候出新的

dnf雪人套每年都什么时候出-dnf雪人套每年都什么时候出新的

在《地下城与勇士》(DNF)这款极受欢迎的网络游戏中,每年冬季活动总是备受玩家关注。而其中,雪人套作为一款充满节日氛围的装备,不仅

洗衣机磁敏开关(如何检测和更换)

洗衣机磁敏开关(如何检测和更换)

洗衣机是我们日常生活中必不可少的家电之一,而磁敏开关则是洗衣机中一个非常重要的部件。磁敏开关的作用是检测洗衣机的盖子是否关闭,

上林春天家具怎么样有质量问题吗?内幕分析到底如何?

上林春天家具怎么样有质量问题吗?内幕分析到底如何?

查看: 187|回复: 7 上林春天家具怎么样有质量问题吗?内幕分析到底如何? [复制链接] hei*** hei*** 当前离线 积分305918 在线时间 小时 楼主 发表于 20

双卡双待手机怎么设置单张手机卡黑名单?

双卡双待手机怎么设置单张手机卡黑名单?

xiangzi0127 首先启动手机的系统设置功能。点击进入“安全和隐私”。点击进入“骚扰拦截”。点击右上角的齿轮,进入骚扰拦截设置页面。点击

无忧名字寓意及打分

无忧名字寓意及打分

名字寓意 无忧名字寓意:才高八斗、博学多才之意。 名字取自:胸无城府、乐以忘忧 胸无城府:无,不有也。《荀子·法行》无内人之疏,而外