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,大大减少了计算开销和数据大小。

相关推荐
IvorySQL8 小时前
PostgreSQL 技术日报 (3月9日)|EXPLAIN ANALYZE 计时优化与复制语法讨论
数据库·postgresql·开源
stark张宇11 小时前
MySQL 核心内幕:从索引原理、字段选型到日志机制与外键约束,一篇打通数据库任督二脉
数据库·mysql·架构
倔强的石头_11 小时前
融合数据库架构实践:关系型、JSON与全文检索的“一库多能”深度解析
数据库
星辰员13 小时前
KingbaseES数据库:ksql 命令行用户与权限全攻略,从创建到删除
数据库
华仔啊1 天前
千万别给数据库字段加默认值 null!真的会出问题
java·数据库·后端
随风飘的云2 天前
MySQL的慢查询优化解决思路
数据库
IvorySQL2 天前
PostgreSQL 技术日报 (3月7日)|生态更新与内核性能讨论
数据库·postgresql·开源
赵渝强老师2 天前
【赵渝强老师】金仓数据库的数据文件
数据库·国产数据库·kingbase·金仓数据库
随逸1773 天前
《Milvus向量数据库从入门到实战,手把手搭建语义检索系统》
数据库
神秘的猪头3 天前
🚀 React 开发者进阶:RAG 核心——手把手带你玩转 Milvus 向量数据库
数据库·后端·llm