当前位置: 首页 > news >正文

mongodb总概

一、mongodb概述

mongodb是最流行的nosql数据库,由C++语言编写。其功能非常丰富,包括:

  • 面向集合文档的存储:适合存储Bson(json的扩展)形式的数据;
  • 格式自由,数据格式不固定,生产环境下修改结构都可以不影响程序运行;
  • 强大的查询语句,面向对象的查询语言,基本覆盖sql语言所有能力:
  • 完整的索引支持,支持查询计划;
  • 支持复制和自动故障转移;
  • 支持二进制数据及大型对象(文件)的高效存储;
  • 使用分片集群提升系统扩展性;
  • 使用内存映射存储引擎,把磁盘的IO操作转换成为内存的操作:

mongodb中几个概念 :
实例: 一个mongodb的服务进程就是一个实例。
库: 一个库里有多个集合。
集合: 表的概念,表里可以存多条文档。
文档: 就是数据的概念,mongodb中数据统称为文档。

关系如下图所示:
在这里插入图片描述

二、 mongodb的特点

  1. mongodb对Bson(json)格式的数据处理很友好。我们可以不遍历json格式中的key,而是直接获取json中key所对应的值。
  2. mongodb读写的QPS比mysql等关系型数据库快很多。
  3. 数据存储占用空间小
  4. 对事物支持不友好,对联表查询支持不友好。

综上所述,当我们可以存储json格式的数据时,且无需考虑事务,无需联表查询时,可以考虑使用mongodb来代替关系型数据库,使应用轻量级。

三、 索引,执行计划,慢sql

数据库三板斧:索引、执行计划和开启慢sql。mongodb都支持。这里不再过多展开概述。当然,mongodb也支持集群模式和数据分片机制。

四、 Bson数据格式

mongodb采用的是Bson数据格式进行存储。BSON 全称“Binary Serialized Document Format”,译为“二进制序列化文档格式”。
Bson数据格式并非只能在mongodb中使用。我们在自己的应用中,也可以执行Bson来定义数据结构。使用时需要引入Bson类库的包,然后定义Bson类型的数据进行操作即可。因为Bson占用的空间更小,查询性能更高,所以可以考虑使用Bson定义数据结构。

bson与json的比较如下:

在这里插入图片描述
几个注意点是:

数据结构:json是像字符串一样存储的,bson是按结构存储的(像数组 或者说struct)

存储空间: bson>json

操作速度: bson>json。比如,遍历查找:json需要扫字符串,而bson可以直接定位

修改:json也要大动大移,bson就不需要。

bson增加了“byte array”数据类型。这使得二进制的存储不再需要先base64转换后再存成json,大大减少了计算开销和数据大小。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 以无厚,入有间,做一件事为什么靠努力不行,不能长期维持
  • 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序。.net 读取excel的时候报错(实测有效)
  • 高效学习LabVIEW的方法
  • 二叉树的最小深度-力扣
  • CasaOS玩客云如何部署小雅AList并结合内网穿透远程访问海量资源
  • Android基础-AIDL的实现
  • 【人工智能】AI绘画工具基本介绍
  • 07.组件间通信-provide-inject(祖孙通信)
  • 记一次极其坑爹的 process.waitFor() 卡死问题
  • 【RAG入门教程04】Langchian的文档切分
  • 【代码随想录】【算法训练营】【第32天】 [122]买卖股票的最佳时机II [376]摆动序列 [53]最大子序和
  • string类的模拟实现的一些改进
  • R语言探索与分析18-基于时间序列的汇率预测
  • Spring Cloud Gateway CORS 跨域方案
  • 引入Springcloud--Sleuth-链路追踪中MDC是如何获取到traceid和何时放入traceid的
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Android Studio:GIT提交项目到远程仓库
  • Asm.js的简单介绍
  • Java-详解HashMap
  • mysql 数据库四种事务隔离级别
  • Python学习之路13-记分
  • redis学习笔记(三):列表、集合、有序集合
  • SpiderData 2019年2月13日 DApp数据排行榜
  • SpiderData 2019年2月25日 DApp数据排行榜
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 面试总结JavaScript篇
  • 前端路由实现-history
  • 我与Jetbrains的这些年
  • 用Canvas画一棵二叉树
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • #includecmath
  • (11)MSP430F5529 定时器B
  • (13)DroneCAN 适配器节点(一)
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (层次遍历)104. 二叉树的最大深度
  • (二)斐波那契Fabonacci函数
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (十三)MipMap
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (自用)仿写程序
  • ../depcomp: line 571: exec: g++: not found
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .NET Core中Emit的使用
  • .net 提取注释生成API文档 帮助文档
  • .NetCore发布到IIS
  • .NET程序集编辑器/调试器 dnSpy 使用介绍
  • /dev/sda2 is mounted; will not make a filesystem here!
  • [ C++ ] STL---stack与queue
  • []FET-430SIM508 研究日志 11.3.31
  • [20140403]查询是否产生日志
  • [20190416]完善shared latch测试脚本2.txt
  • [AIGC] 解题神器:Python中常用的高级数据结构