《MongoDB》MongoDB的简介与体系结构

2023-05-16

这是一个没有套路的前端博主,热衷各种前端向的骚操作,经常想到哪就写到哪,如果有感兴趣的技术和前端效果可以留言~博主看到后会去代替大家踩坑的~
主页: oliver尹的主页
格言: 跌倒了爬起来就好~
来个关注吧,点个赞吧,谢谢

MongoDB的简介与体系结构

  • 一、简介
  • 二、数据库类型
    • 2.1 关系型数据库
    • 2.2 非关系型数据库
  • 三、体系结构
  • 四、数据模型
  • 五、小结

一、简介

MongoDB 是一个 基于分布式文件存储的数据库。它具有开源、高性能无模式等优点,由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。属于NoSQL的一种(NoSQL数据库不仅仅只有MongoDB,还有redis等),非关系型数据库我们通常认为就是NoSQL类型的数据库。
MongoDB支持的数据结构类似于JSON,叫做 BSON,所以它既可以存储比较复杂的数据类型,又相当的灵活;

二、数据库类型

首先,得了解什么是 关系型数据非关系型数据库

2.1 关系型数据库

是指采用了 关系模型 来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为 二维表格模型,而一个 关系型数据库就是由二维表及其之间的关系组成的一个数据组织

2.2 非关系型数据库

NoSQL泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是 超大规模高并发 的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题。
NoSQL仅仅是一个概念,泛指非关系型的数据库,区别于关系数据库,它们不保证关系数据的ACID特性。NoSQL无须事先为要存储的数据建立字段,NoSQL是一项全新的数据库革命性运动,其拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。
NoSQL有如下优点:易扩展,NoSQL数据库种类繁多,但是一个 共同的特点都是去掉关系数据库的关系型特性数据之间无关系,这样就非常容易扩展。无形之间也在架构的层面上带来了可扩展的能力。大数据量,高性能,NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。
主要的优点有:易扩展,大数据量下高性能,灵活的数据模型,高可用

三、体系结构

MySQL和MongoDB对比
在这里插入图片描述

可以看的出,两者其实非常接近,再来看看专业术语

SQL术语/概念MongoDB术语/概念解释/说明
databasedatabase数据库
tablecollection数据库中的表/集合
rowdocument数据库的行/文档
columnfileld字段/域
indexindex索引
table joins表链接,MongoDB不支持表链接
嵌入文档MongoDB通过嵌入式文档替代多表链接
primary keyprimary key主键,MongoDB自动将_id字段设置为主键

四、数据模型

MongoDB的 最小存储单位是文档,也就是document对象,文档document对象对应在关系型数据库中就是 。数据在MongoDB中以BSON文档的格式存储在磁盘上;
BSON是一种 类似JSON格式的存储格式,简称:Binary-JSON,BSON和JSON一样,支持内嵌的文档对象和数据对象,但是BSON的数据格式比JSON更加丰富,比如Date类型和BinData类型;

数据类型描述举例
字符串UTF-8字符串可表示为字符串类型的数据{“name”:“oliver”}
对象id对象ID是问的12字节唯一id
布尔值true/false{“name”:true}
数组值的集合或者列表{“name”:[‘oliver’,‘yin’]}
32位整数类型不支持,javascript没有区分整数和浮点数类型
64位整数类型不支持,javascript没有区分整数和浮点数类型
64位浮点数shell中的数字就是这一种类型{“name”:18.5123,“age”:18}
null空值或者未定义{“name”:null}
undefined未定义{“name”:undefined}
正则表达式正则表达式{“name”:/oliver/i}
代码可以包含代码{“name”:function(){}}
二进制数据二进制数据可以由任意字节的串组成
最大值和最小值BSON的一个特殊类型

五、小结

归根结底,MongoDB的主要特点有以下几点:

  • 高性能:MongoDB提供高性能的数据持久性,由于其非关联数据结构,对大数据量的存储天然友好;
  • 高可用性:MongoDB的肤质工具称作为副本集,它提供自动故障转移和数据冗余;
  • 高扩展性:MongoDB提供了水平可扩展性作为其核心功能的一部分,分片数据分布在一组集群机器上,从3.4开始,支持基于片键创建数据区域;
  • 丰富的查询支持:支持丰富的查询语言,支持读和写操作,比如数据聚合,文本吧搜索和地理空间查询;

并且,MongoDB的体系结构和关系型数据库非常接近,主要分为:Database,collection,document,其中document也就是我们称为文档的东西是其最小的存储单位;
MongoDB的数据结构称之为BSON,它的形态非常接近于JSON,只是说它的类型在JSON的基础上更多而已;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《MongoDB》MongoDB的简介与体系结构 的相关文章

  • Matlab GUI设计之坐标转换(附Matlab GUI设计学习手册完整版pdf)

    文章目录 如何开始 xff1f 1 界面布局2 编写回调函数 相信看这篇文章的你们大部分没有用Matlab做过界面设计 xff0c 其实不只是你们 xff0c 我也是第一次 xff08 手动滑稽 xff09 xff0c 在此将我的经验同大家
  • 【Linux】线程互斥

    目录 1 进程线程间的互斥相关背景概念 2 互斥量mutex 2 1 基本概念 2 2 售票系统举例 2 3 解释 3 互斥量的接口 3 1 初始化互斥量 3 1 1 静态分配 3 1 2 动态分配 xff08 pthread mutex
  • C语言经典算法(八)——递归实现斐波那契数列的两种方法

    后继续整理算法并写出自己的理解和备注 C 43 43 实现的 xff1a 递归实现斐波那契数列 1 递归实现斐波那契数列Fib n lt 1 gt 题目描述 输入n值 xff0c 求解第n项的斐波那契数列值 lt 2 gt 方法一 概念法
  • 使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)

    你是否遇到过这样的情况 xff1a 从终端软件登录远程的Linux主机 xff0c 将一堆很大的文件压缩为一个 tar gz文件 xff0c 连续压缩了半个小时还没有完成 xff0c 这时 xff0c 突然你断网了 xff0c 你登录不上远
  • Vue+Element-UI上传图片到七牛云踩过的坑——返回 404,报错:Document not found

    文章目录 前端上传图片到七牛云的流程七牛云地址1 常见问题2 分清区别 xff1a 配置区域和访问域名 代码示例 不是进来找报错原因 xff0c 看怎么上传图片的 xff0c 先看上传流程和分清区别 xff1a 配置区域和访问域名找到域名
  • MySQL8.0.3安装过程详细

    xff08 如果以前安装过MySQL先卸载 xff09 一 MySQL卸载 1 以管理员身份打开命令提示符 2 停止MySQL后台服务 MySQL8为自己设置的MySQL服务名 D mysql 8 0 30 winx64 bin gt ne
  • 基于opencv 的人脸签到系统

    import cv2 import os import numpy as np from PIL import Image pillow import pyttsx3 import sys import json def makeDir e
  • LCA算法的实现

    include lt cstdio gt include lt string h gt include lt algorithm gt include lt set gt using namespace std const int MAXN
  • 卷积神经网络原理

    看了一篇通俗易懂的好文章 https brohrer mcknote com zh Hans how machine learning works how convolutional neural networks work html 关于
  • 括号匹配问题(并给出括号的位置)

    在纸上写了一个串 xff0c 只包含 39 39 和 39 39 一个 39 39 能唯一匹配一个 39 39 xff0c 但是一个匹配的 39 39 必须出现在 39 39 之前 请判断蒜头君写的字符串能否括号完全匹配 xff0c 如果能
  • Rust学习入门--【12】Rust 循环

    系列文章目录 Rust 语言是一种高效 可靠的通用高级语言 xff0c 效率可以媲美 C C 43 43 本系列文件记录博主自学Rust的过程 欢迎大家一同学习 Rust学习入门 1 引言 Rust学习入门 2 Rust 开发环境配置 Ru
  • 一年有多少节假日

    日历有 阳历 xff08 公历 xff09 和 阴历 xff08 农历 xff09 之分 每年都有法定节假日 xff0c 这些分成三类 双休 阳历节假日 阴历节假日 双休 1 xff09 周六和周日 2 2 天 阳历节假日 1 xff09
  • 走迷宫(bfs)

    给你一个 n 行 m 列的二维迷宫 39 S 39 表示起点 xff0c 39 T 39 表示终点 xff0c 39 39 表示墙壁 xff0c 39 39 表示平地 你需要从 39 S 39 出发走到 39 T 39 xff0c 每次只能
  • 计蒜客-蒜头君回家(bfs)

    蒜头君要回家 xff0c 但是他家的钥匙在他的朋友花椰妹手里 xff0c 他要先从花椰妹手里取得钥匙才能回到家 花椰妹告诉他 xff1a 你家的钥匙被我复制了很多个 xff0c 分别放在不同的地方 蒜头君希望能尽快回到家中 xff0c 他需
  • 互质数的个数(短除法分解质因数+欧拉函数)

    题意说明 xff1a 给出一个n xff0c 求1 n互质数的个数 include lt cstdio gt include lt cmath gt using namespace std int res 100000 int main i
  • arduino +ESP8266 网页WiFi控制

    首先几个问题 xff1a 1 xff0c 关于连线 xff0c 很简单 xff0c 直接ESP8266与arduino连接 xff0c 就五根线 如果没有弄好 xff0c 就单独调试一下 VCC xff0c CH PD连5v的 xff08
  • 蓝桥杯分考场

    历届试题 分考场 时间限制 xff1a 1 0s 内存限制 xff1a 256 0MB 问题描述 n个人参加某项特殊考试 为了公平 xff0c 要求任何两个认识的人不能分在同一个考场 求是少需要分几个考场才能满足条件 输入格式 第一行 xf
  • CCF_Markdown(正则表达式)

    试题编号 xff1a 201703 3试题名称 xff1a Markdown时间限制 xff1a 1 0s内存限制 xff1a 256 0MB问题描述 xff1a 问题描述 Markdown 是一种很流行的轻量级标记语言 xff08 lig
  • idea常用的插件

    1 lombok 省略get set方法 2 Alibaba Java Coding Guidelines 阿里的代码规范 3 Translation 谷歌中英文翻译工具 4 CodeGlance 代码迷你缩放图插件 xff0c 快速下拉拖
  • Hadoop windows本地环境安装

    hadoop使用java编写 xff0c 所以windows安装和java一样也需要配置环境变量 一 下载所需文件 JDK下载地址 xff0c jdk1 8下载Hadoop下载 xff0c hadoop下载 xff0c 进去后找到一个版本然

随机推荐

  • Gitlab的安装及使用

    1 GitLab概述 1 1 GitLab介绍 GitLab是利用Ruby on Rails一个开源的版本管理系统 xff0c 实现一个自托管的Git项目仓库 xff0c 可通过Web界面进行访问公开的或者私人项目 GitLab能够浏览源代
  • C语言例程:用二维数组实现矩阵转置

    用二维数组实现矩阵转置 本实例将输入的 3 4 矩阵转置为 4 3 矩阵 xff0c 并输出结果 通过本实例 xff0c 可以学习如何使用二 维数组 实例解析 二维数组的定义 二维数组定义的一般形式为 xff1a 第一部分 基础篇 X227
  • C++头文件的相互引用问题(#include” xxx“使用)

    188条消息 C C 43 43 头文件的引用问题 xff08 include使用 xff09 保护大苹果 CSDN博客 c 43 43 include头文件
  • 树莓派设置自动连接无线网络

    树莓派开机后自动连接无线网络方法 xff0c 亲测有效 1 在任意方法 xff08 无线或有线 xff09 已经连接树莓派的基础上 xff0c 执行该命令 xff0c 意思是编辑wpa supplicant conf这个文件 内容如下 xf
  • 常用快捷键(1)----Windows组合键

    单个的Windows键是打开和隐藏开始菜单 xff0c 功能与 Esc 43 Ctrl 组合键功能相同 下面是一些常用的Windows组合键 xff1a 1 快捷键 xff1a Windows 43 Shift 43 S 功能 xff1a
  • android 获取唯一Id,小小总结一下。仅供参考

    1 获取imei xff1a 前言 xff1a 因传统的移动终端设备标识如国际移动设备识别码 xff08 IMEI xff09 等已被部分国家认定为用户隐私的一部分 xff0c 并存在被篡改和冒用的风险 xff0c 所以在Android 1
  • xib中添加自定义可编辑属性

    IOS开发中 xff0c 有些人喜欢使用xib来进行项目的开发 xff0c 使用xib可以使界面可视化 xff0c 很多控件的属性设置都可以在 xib 中设置 xff0c 减少了代码量 xff1b 同时不用一遍遍的运行程序看效果 xff0c
  • STM32使用寄存器工程模板点亮一个LED灯

    1 环境说明 xff08 1 xff09 使用的是普中STM32F103开发板 xff08 2 xff09 keil 5软件 2 目的 点亮开发板上的LED1灯 3 步骤 xff08 1 xff09 定义一系列寄存器的宏 span clas
  • 结构体数组的使用

    测试源码 span class token macro property span class token directive keyword include span span class token string lt stdio h
  • string字符串拼接

    功能描述 实现在字符串末尾拼接字符串 函数原型 xff1a string amp operator 43 61 const char str 重载 43 61 操作符string amp operator 43 61 const char
  • 千万不要在TX2上安装Qt6

    失败 xff01 Nvidia TX2安装Qt6 和qtCreator7 手把手一步步 千万不要想在TX2上安装QT6 xff01 XCB缺失几乎无解 xff0c 如果有大佬可以指导一下 最开始准备使用交叉编译的方案给TX2写程序 因为台式
  • 最新WSL2 ubuntu环境 cuda,教程,适用于40系显卡

    实验环境 xff1a ubuntu2204 ubuntu1804 xff0c 最新4060笔记本电脑 xff0c 自我觉得是目前比较好用的搭配 xff1a wsl2 43 gnome 43 wsl中的pycharm xff0c 写的很全 x
  • 高分辨率机器安装 Ubuntu虚拟机的屏幕显示字体过小问题的解决

    在网上搜索了很多的解决方案 xff0c 有的试了没效果 xff0c 有的比较麻烦 xff0c 没尝试了 我说一下我的解决方案 问题 xff1a 首先我这个机器是2k屏的 xff0c 分辨率就是会大于 1920x1080 xff1b 然后我是
  • IDEA rebuild project idea如何重新编译项目

    idea如何重新编译项目 1 2 3 4 5 6 7 分步阅读 idea工具可以用于多种语言来开发项目 xff0c 如果是像java这样需要编译之后运行的编程语言 xff0c 每次在运行项目之前都需要对源码进行编译 一般的情况下都是idea
  • Ubuntu更新软件时报"http://cn.archive.ubuntu.com/ubuntu"相关错误的解决方案

    一 问题日志 W 仓库 http cn archive ubuntu com ubuntu xenial Release 没有 Release 文件 N 无法认证来自该源的数据 xff0c 所以使用它会带来潜在风险 N 参见 apt sec
  • 《uni-app》一个非canvas的飞机对战小游戏实现-我方飞机实现

    这是一个没有套路的前端博主 xff0c 热衷各种前端向的骚操作 xff0c 经常想到哪就写到哪 xff0c 如果有感兴趣的技术和前端效果可以留言 xff5e 博主看到后会去代替大家踩坑的 xff5e 接下来的几篇都是uni app的小实战
  • 《Vue插件》瀑布流插件vue-masonry的使用与踩坑记录

    这是一个没有套路的前端博主 xff0c 热衷各种前端向的骚操作 xff0c 经常想到哪就写到哪 xff0c 如果有感兴趣的技术和前端效果可以留言 xff5e 博主看到后会去代替大家踩坑的 xff5e 主页 oliver尹的主页 格言 跌倒了
  • 《uni-app》一个非canvas的飞机对战小游戏实现-子弹模型的实现

    这是一个没有套路的前端博主 xff0c 热衷各种前端向的骚操作 xff0c 经常想到哪就写到哪 xff0c 如果有感兴趣的技术和前端效果可以留言 xff5e 博主看到后会去代替大家踩坑的 xff5e 接下来的几篇都是uni app的小实战
  • 《uni-app》一个非canvas的飞机对战小游戏实现-碰撞检测的实现

    这是一个没有套路的前端博主 xff0c 热衷各种前端向的骚操作 xff0c 经常想到哪就写到哪 xff0c 如果有感兴趣的技术和前端效果可以留言 xff5e 博主看到后会去代替大家踩坑的 xff5e 接下来的几篇都是uni app的小实战
  • 《MongoDB》MongoDB的简介与体系结构

    这是一个没有套路的前端博主 xff0c 热衷各种前端向的骚操作 xff0c 经常想到哪就写到哪 xff0c 如果有感兴趣的技术和前端效果可以留言 xff5e 博主看到后会去代替大家踩坑的 xff5e 主页 oliver尹的主页 格言 跌倒了