MongoDB 基本概念

news2024/11/29 0:34:41

MongoDB 部署模型

在这里插入图片描述

在生产环境中,MongoDB 经常会部署成一个三节点的复制集,或者一个分片集群。
我们先来看左边,当 MongoDB 部署为一个复制集时,应用程序通过驱动,直接请求复制集中的主节点,完成读写操作。另外两个从节点会自动和主节点同步,以保持数据的更新。在集群运行的过程中,万一主节点遇到故障,两个从节点会在几秒中的时间内选举出新的主节点,继续支持应用的读写操作。
我们再来看右边,当 MongoDB 被部署为一个分片集群时,应用程序通过驱动,访问路由节点,即 Mongos 节点,Mongos 节点会根据读写操作中的片键值,把读写操作分发给特定的分片执行,然后再把分片的执行结果合并,返回给应用程序。
那集群中的数据是如何分布的呢?
这些元数据记录在 Config Server 中,这也是一个高可用的复制集。每个分片管理集群中整体数据的一部分,也是一个高可用复制集。此外,路由节点(Mongos 节点)在生产环境通常会部署多个,这样整个分片集群就没有任何单点故障。

MongoDB 与关系数据的对应关系

在这里插入图片描述

  • 关系型数据通常有数据库和表的概念,对应 MongoDB 里则有数据库和集合关系;
  • 数据库有主表和子表,对应 MongoDB 里通常使用内嵌的子文档或内嵌数组;
  • 关系型数据里有 Index 索引,MongoDB 里也有类似的概念;
  • 关系数据库里一条数据称为一行,MongoDB 里则称为一个文档 Document;
  • 关系型数据库里的列,对应 MongoDB 里成为一个字段 Field;
  • 关系数据库里经常使用 Join 连接操作,对应 MongoDB 里通常使用内嵌方式解决,如果使用 Linking 方式,对应使用 $Lookup 操作符,也可支持左外连接;
  • 关系型数据库里还有视图的概念,对应 MongoDB 里也有只读视图和按需物化视图;
  • 关系型数据库里会有 ACID 的多记录事务,对应 MongoDB 里则有 ACID 的多文档事务

MongoDB 数据层次结构

MongoDB 里面数据主要分为三层,文档(Documents)、集合(Collections)和数据库(Databases),多个文档存储在一个集合中,多个集合存放在一个数据库里,每个集群里面可能会有多个数据库。

  • 数据库(Database): Products
  • 集合(Collections): Books,Movies,Music

数据库和集合的组合,构成 MongoDB 的命名空间。

  • Products.Books
  • Products.Movies
  • Products.Music

数据库名最长不能超过 64 个字节,命名空间最长不能超过 120 字节。FCV >= 4.4(指 MongoDB 功能兼容版本在 4.4 或更高版本时),命名空间长度限制为 255 字节。

MongoDB 为什么只有左外连接?

  • 反范式设计;
  • 读取效率低下;
  • 分布式环境

MongoDB 里面连接 Join 操作只有左外连接,因为 Join 这种操作是违反 MongoDB 设计的初衷的,这种操作经常要对两个表的不同数据进行连接操作,而这些数据在物理存储的时候,通常不是在相邻的区域里面,读取的效率比较低。
此外 MongoDB 是一个分布式的环境,当进行 Join 操作的时候,可能在分片一上要连接的一条数据可能在分片二上,下一条数据可能又是另外一种情况,在这种情况下数据库很难保证整个操作的性能。
基于这些原因,MongoDB 只提供左外连接,并且要求 From 表不能是分片表,左边的表(主表)可以是分片表。

参考资料

  • 玩转MongoDB 从入门到实战

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/597610.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端学习(DAY51)面试1

组件中的 data 为什么是一个函数? 如果 data 是对象的话,当数据改动时就会影响到所有的实例,可能会造成一些数据的冲突。 HTTP http:以安全为目标的http通道,HTTPs是以安全为目标的https通道(使用SSL进…

Linux--ServerProgramming--(3)详解高性能服务器程序框架

1. 服务器框架详解 1.1 服务器模型 1.1.1 C/S 模型 此模型很简单,就是服务器和客户端。 此模型 非常适合资源相对集中的场合。 缺点:因为服务器是通信的中心,当访问量过大时,可能所有的客户都将得到很慢的响应。此缺点可由 P2P…

利用PHP导出MySQL数据表结构和SQL文件

目录 一、获取数据库所有的数据表 方法一:TP5 方法二:原生PHP 二、导出指定数据表的数据结构 三、 导出SQL文件 四、生成SQL语句 五、完整代码 前端 后端 语言:PHP 数据库:MySQL 功能:分为四部分,① 查出数…

智大数据比赛的总结

强国杯个人赛一定要报 hive 和hadoop基础环境配置 开启单节点集群环境 (0 / 10 分) 本次使用环境为单节点集群,对应主机名为hadoop000,使用工具连接对应主机并进行相关操作。 环境中已经安装java、Hadoop、Hive、Mysql并配置对应环境变量,安装路径为/root/software/,对应…

通过python采集关键字搜索1688工厂数据接口,1688工厂数据接口,1688API接口

1688是一个行业网站,主要提供中小型批发和生产商的信息,是中国供应商向全球采购商展示其产品的平台。在1688上,可以找到许多工厂和制造商的信息,包括公司名称、地址、联系人、联系方式、主要产品等。 采集1688工厂数据可以帮助采…

MySQL数据库 2.启动与停止

目录 ​编辑 🤔 启动与停止: 🙂1.WIN加R调用windows命令行,输入:services.msc 🙂2.可以在cmd(管理员模式)中输入以下指令: 🤔 启动MySQ后的操作步骤&…

linux安装tomcat8

1.tomcat8下载 https://tomcat.apache.org/download-80.cgi 2.tomcat8安装 (1)将tomcat jar上传到usr/local目录 (2)解压tomcat压缩包 [rootiZ2ze7vthdl3oh0n0hzlu7Z local]# tar -zxvf apache-tomcat-8.5.58.tar.gz&#x…

开发小程序过程中的兼容难题,应当何去何从?

如今小程序开发已经成为了互联网行业发展的主流,而小程序开发过程中的兼容难题也让许多开发者感到头疼。那么小程序开发过程中兼容问题究竟有哪些,该如何解决?下面我们就针对这个问题展开一下分析。 什么是小程序? 小程序是一种无…

为什么魂斗罗只有 128KB 却可以实现那么长的剧情

经常看到有同学在抱怨现在的游戏、APP占用非常大的空间,基本都是 10G 起步。 这让我想到初中时玩过的一款游戏魂斗罗,为什么它只有 128KB 却可以实现那么长的剧情呢?这篇文章将会给大家讲讲这里面的奥秘~ 正文 现代程序员 A 和 1980 年代游戏…

小程序安装Vant Weapp详细步骤,下载和npm安装版

小程序安装Vant Weapp详细步骤 使用npm下载1、新建项目并初始化项目2、下载Vant Weapp3、修改 app.json4、构建 npm 包5、引入组件 下载方式1. npm下载或者下载[官方示例](https://github.com/youzan/vant-weapp)2. 把里面的dist文件夹复制出来,放到项目的根目录&am…

MKS SimpleFOC ESP32 例程7 双电机电流控制

Makerbase ESP32 FOC 例程7 双电机电流控制 第一部分 硬件介绍 1.1 硬件清单 序号品名数量1ESP32 FOC V1.0 主板12ARDUINO UNO主板23MKS SF2804电机1412V电源适配器15USB 线1 注意:YT2804是改装的云台无刷电机,带有AS5600编码器,可实现360连续运转。…

恒流间歇滴定法(GITT)测试锂离子电池的实验流程

恒流间歇滴定法(GITT)测试锂离子电池的实验流程 锂电池作为现代电子设备中最常用的电源之一,其性能和安全性对于设备的正常运行至关重要。恒电流间歇滴定法是一种常用的测试方法,用于评估锂电池的容量、循环寿命和内阻等关键参数。…

黄色荧光染料:1811539-32-8,JF549,NHS,JaneliaFluor549,SE,JF549琥珀酰亚胺酯

【产品描述】 Janelia Fluor549,SE是一种黄色荧光染料,作为NHS酯提供,用于连接伯胺基。NHS酯部分可以与伯胺特异有效地反应,形成共价酰胺键。NHS活化酯是生物标记反应中常用的活化基团。NHS活化TAMRA分子中的羧基,让它…

Ubuntu pwn环境搭建

文章目录 前言环境准备系统安装安装VMtoolsapt换源安装pip并换源安装pwntools安装gdb插件安装one_gadget安装 LibcSearcher 后记参考 前言 重新装了一下pwn环境,踩到了好多坑,顺便记录一下 环境准备 ubuntu 20.04,可以到镜像站下载&#x…

[CTFTraining] 0CTF 2016 Unserialize

​ 打开环境后是这样: ​ 找了挺多地方没啥头绪,干脆直接上dirsearch: ​ 发现有源码泄露,直接下载下来分析。先进行自动审计: ​ 发现有疑似的漏洞,但根据题目来看是反序列化的,还是要自行进…

月报总结|Moonbeam 5月份大事一览

本月,Moonbeam迎来了Uniswap V3的部署,经过一年的社区讨论,UniSwap V3终于以5000万个同意票通过,将在未来一个月内部署于Moonbeam,为Web3用户提供更广泛公链生态的多链体验,加速应用之间跨链交互&#xff0…

平板电脑系统优化垃圾清理软件CleanMyMac X

CleanMyMac 这是一款苹果系统电脑的清理软件,无论是Mac、苹果笔记本电脑还是平板电脑都可以使用。垃圾清理操作简单又方便,不但专项清理各种垃圾,还能卸载垃圾软件。 对于刚拿到苹果电脑的朋友来讲,选择一些必备的mac软件可以省去…

opencv3 模板匹配与直方图

模板匹配 尽量加上归一化操作 像素差值计算,模板在原图上滑动 ① 模板匹配和卷积原理很像,模板在原图像上从原点开始滑动,计算模板与(图像被模板覆盖的地方)的差别程度(例如值127与值190的区别),这个差别…

NVM-Nodejs多版本管理工具

NVM:🔎:下载点我 下载含有 setup.exe的 下载完成之后修改一下settings.txt 文件,在原有的基础上直接加入这些配置 root: D:\nvm path: D:\nvm\nodejs node_mirror: https://npm.taobao.org/mirrors/node/ npm_mirror: https://npm.taobao.org/mirrors…

(转载)多种群遗传算法的函数优化算法(matlab实现)

以下内容大部分来源于《MATLAB智能算法30个案例分析》,仅为学习交流所用。 1 理论基础 1.1 遗传算法早熟问题 遗传算法是一种借鉴生物界自然选择和进化机制发展起来的高度并行、随机、自适应的全局优化概率搜索算法。由于优化时不依赖于梯度,具有很强…