mongoDB基础知识

文章目录

  • 为什么使用mongoDB?
        • 数据模型
    • 想了解什么mongoDB首先我们得先知道什么事“三高”?三高什么呐?
      • 具体的应用场景?
      • 在这些应用场景中,数据操作方面共同特点是:
    • 什么时候选择mongoDB?
    • mySQL和mongoDB对比?

为什么使用mongoDB?

MongoDB是一个开源、高性能、无模式的文档型数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品中的一种。是最 像关系型数据库(MySQL)的非关系型数据库。
它支持的数据结构非常松散,是一种类似于 JSON 的 格式叫BSON,所以它既可以存储比较复杂的数据类型,又相当的灵活。
MongoDB中的记录是一个文档,它是一个由字段和值对(field:value) 组成的数据结构。MongoDB文档类似于JSON对象,即一个文档认为就是一个对象。字段的数据类型是字符型,它的值除了使用基本的一些类型外,还可以包括其他文档、普通数组和文档数组。

数据模型

MongoDB的最小存储单位就是文档(document)对象。文档(document)对象对应于关系型数据库的行。数据在MongoDB中以 BSON(Binary-JSON)文档的格式存储在磁盘上。
BSON(Binary Serialized Document Format)是一种类json的一种二进制形式的存储格式,简称Binary JSON。BSON和JSON一样,支持 内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。
BSON采用了类似于 C 语言结构体的名称、对表示方法,支持内嵌的文档对象和数组对象,具有轻量性、可遍历性、高效性的三个特点,可 以有效描述非结构化数据和结构化数据。这种格式的优点是灵活性高,但它的缺点是空间利用率不是很理想。
Bson中,除了基本的JSON类型:string,integer,boolean,double,null,array和object,mongo还使用了特殊的数据类型。这些类型包括 date,object id,binary data,regular expression 和code。每一个驱动都以特定语言的方式实现了这些类型,查看你的驱动的文档来获取详 细信息。

想了解什么mongoDB首先我们得先知道什么事“三高”?三高什么呐?

  • 对数据库高并发读写需求
  • 对海量数据的高效率存储和访问需求
  • 对数据库的高可扩展性和高可用性的需求

具体的应用场景?

  1. 社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。
  2. 游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、高效率存储和访问。
  3. 车辆进出场景,使用mongoDB存储小区车辆进出的信息,用户车牌号等,可以进行统计查询。
  4. 物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将 订单所有的变更读取出来。

在这些应用场景中,数据操作方面共同特点是:

数据量大、写入操作频繁、价格较低的数据,对事务性要求不高

什么时候选择mongoDB?

  1. 应用不需要事务及复杂 join 支持
  2. 应用需要2000-3000以上的读写QPS
  3. 应用需要TB甚至 PB 级别数据存储
  4. 应用发展迅速,需要能快速水平扩展
  5. 应用要求存储的数据不丢失 应用需要99.999%高可用
  6. 应用需要大量的地理位置查询、文本查询

mySQL和mongoDB对比?

在这里插入图片描述

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

React基础知识(一) - React初体验

React是在2013年, 由Faceboo开源的,用于构建用户界面的 JavaScript 库。总所周知啊,React是前端三大框架之一啊现在前端领域最为流行的是三大框架: ReactVueAngular 前端三大框架 React开发的特点: (1)声明…

编程考古-计算机发展(上)

计算机/器现在是我们日常生活中的重要工具,它的发展历程见证了人类数学计算能力的不断提升。 什么是计算 计算的本质在于基于规则对符号串进行变换。简言之,从一个初始的符号串(输入)出发,依据既定的法则逐步改变这个…

NewStarCTF2024-Week2-Misc-WP

目录 1、wireshark_checkin 2、wireshark_secret 3、字里行间的秘密 4、你也玩原神吗 5、Hertas Study 6、用溯流仪见证伏特台风 7、热心助人的小明 1、wireshark_checkin 直接字符串搜 flag flag{ez_traffic_analyze_isnt_it} 2、wireshark_secret 查看原始数据 导出十…

STM32应用详解(2)GPIO之LED闪烁——学习使用寄存器操作方法编写延时函数

文章目录 前言一、笔记1.GPIO控制LED闪烁的两种方法:2.系统时钟3.延时函数的实现(us) 二、代码1.main函数2.延时函数3.固件库函数4.毫秒和秒延时函数5.整体函数结构 前言 学习使用寄存器操作方法编写延时函数。 一、笔记 1.GPIO控制LED闪烁的两种方法:…

C语言小游戏--猜数字

游戏过程: 由电脑随机在某个范围内生成一个数字,玩家猜数字并且输入,电脑判断是否正确,正确则游戏结束,错误则给出提示,直到玩家所给的答案正确为止 思路分析: 1.生成随机数 2.玩家可以多次…

springboot037基于SpringBoot的墙绘产品展示交易平台的设计与实现(论文+源码)_kaic

毕 业 设 计(论 文) 题目:墙绘产品展示交易平台设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本墙绘产品展示…

Golang | Leetcode Golang题解之第479题最大回文数乘积

题目: 题解: func largestPalindrome(n int) int {if n 1 {return 9}upper : int(math.Pow10(n)) - 1for left : upper; ; left-- { // 枚举回文数的左半部分p : leftfor x : left; x > 0; x / 10 {p p*10 x%10 // 翻转左半部分到其自身末尾&…

CMOS 图像传感器:像素寻址与信号处理

CMOS image sensor : pixel addressing and signal processing CMOS image sensor 对于寻址和信号处理有三种架构 pixel serial readout and processingcolumn parallel readout and processingpixel parallel readout and processing 其中,column parallel reado…

香港举办AIHCIR 2024国际学术会议,领先人工智能、人机交互和机器人技术

第三届人工智能、人机交互和机器人国际学术会议 (AIHCIR 2024)将于2024年11月在中国香港举行,聚焦AI、人机交互与机器人领域,邀请知名学者演讲,促进学术交流。论文经评审后提交EI检索,投稿需全英文&#xf…

《宗喀大慈宏觉寺——唐蕃古道上的千年古刹》新书发布会在京举行

10月18日,《宗喀大慈宏觉寺——唐蕃古道上的千年古刹》新书发布会在中国藏学研究中心举行 发布会现场 2024年10月18日上午,由中国藏学研究中心科研业务办公室主办、中国藏学出版社承办的《宗喀大慈宏觉寺——唐蕃古道上的千年古刹》新书发布会在中国藏学…

【算法】哈希表:49.字母异位词分组

目录 1、题目链接 2、题目介绍 3、解法 初始化设定--图解 步骤图解 4、代码 1、题目链接 49. 字母异位词分组 - 力扣(LeetCode) 2、题目介绍 3、解法 字母异位词的本质是字符相同但排列不同。因此,我们可以对字符串进行排序&#xf…

Lucas带你手撕机器学习——线性回归

什么是线性回归 线性回归是机器学习中的基础算法之一,用于预测一个连续的输出值。它假设输入特征与输出值之间的关系是线性关系,即目标变量是输入变量的线性组合。我们可以从代码实现的角度来学习线性回归,包括如何使用 Python 进行简单的线…

Thread的基本用法

创建线程 方法一 继承Thread类 继承 Thread 来创建一个线程类. class MyThread extends Thread {Overridepublic void run() {System.out.println("这里是线程运行的代码");} } 创建 MyThread 类的实例 MyThread t new MyThread(); 调用 start 方法启动线程 t…

《深空彼岸》TXT完整版下载,知轩藏书校对版!

【内容简介】:   浩瀚的宇宙中,一片星系的生灭,也不过是刹那的斑驳流光。仰望星空,总有种结局已注定的伤感,千百年后你我在哪里?家国,文明火光,地球,都不过是深空中的一…

2024 年 9 月区块链游戏研报:行业回暖,Telegram 游戏引发热潮

作者:Stella L (stellafootprint.network) 数据来源:Footprint Analytics Games Research Page 9 月份,区块链游戏代币的市场总值增长了 29.2%,达到 232 亿美元,日活跃用户(DAU)数量上升了 1…

C++进阶:AVL树实现

目录 一.AVL的概念 二.AVL的实现 2.1AVL树的结构 2.2AVL树的插入 2.2.1AVL树插入一个值的大概过程 2.2.2平衡因子更新 2.2.3插入节点及更新平衡因子的实现 2.3旋转 2.3.1旋转的原则 2.3.2右单旋 2.3.3右单旋的代码实现 2.3.4左单旋 2.3.5左单旋的代码实现 2.3.6…

腾讯云宝塔面板前后端项目发版

后端发版 1. 打开“网站”页面,找到java项目,点击状态暂停服务 2.打开“文件”页面,进入jar包目录,删除原有的jar包,上传新jar包 3. 再回到第一步中的网站页面,找到jar项目,启动项目即可 前端发…

项目一:3-8译码器的设计与实现(FPGA)

本文以Altera公司生产的Cyclone IV系列的EP4CE15F17C8为主芯片的CRD500开发板作为项目的硬件实现平台,并以Quarter 18.1和ModelSim为开发工具和仿真工具。 目录 一、3-8译码器工作原理 二、设计步骤 1、创建工程文件夹和编辑设计文件 (1)…

微信小程序上传组件封装uploadHelper2.0使用整理

一、uploadHelper2.0使用步骤说明 uploadHelper.js ---上传代码封装库 cos-wx-sdk-v5.min.js---腾讯云,对象存储封装库 第一步,下载组件代码,放置到自己的小程序项目中 第二步、 创建上传对象,执行选择图片/视频 var _this th…

【成长day】SuperPointSuperGlue(02): Superglue论文算法学习与对应源码解析

论文工作地址:https://psarlin.com/superglue/ 论文地址:https://arxiv.org/abs/1911.11763 讲解PPT:https://psarlin.com/superglue/doc/superglue_slides.pdf 论文源码:https://github.com/magicleap/SuperGluePretrainedNetwor…