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

相关推荐

  1. 分布式微服务 -

    2024-06-10 08:42:03       21 阅读
  2. <span style='color:red;'>mongoDB</span>

    mongoDB

    2024-06-10 08:42:03      50 阅读
  3. <span style='color:red;'>MongoDB</span>

    MongoDB

    2024-06-10 08:42:03      29 阅读
  4. <span style='color:red;'>MongoDB</span>

    MongoDB

    2024-06-10 08:42:03      41 阅读
  5. MongoDB

    2024-06-10 08:42:03       29 阅读
  6. mongodb

    2024-06-10 08:42:03       29 阅读
  7. <span style='color:red;'>MongoDB</span>

    MongoDB

    2024-06-10 08:42:03      25 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-10 08:42:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-10 08:42:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-10 08:42:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-10 08:42:03       20 阅读

热门阅读

  1. 数据库漫谈-MongoDB

    2024-06-10 08:42:03       10 阅读
  2. Linux C/C++ 进程控制

    2024-06-10 08:42:03       8 阅读
  3. 使用Kotlin编写一个Http服务器

    2024-06-10 08:42:03       10 阅读
  4. Python怎么编辑前端:深度探索与实践

    2024-06-10 08:42:03       11 阅读
  5. Oracle和Random Oracle

    2024-06-10 08:42:03       10 阅读
  6. Next.js初始化和一些配置

    2024-06-10 08:42:03       8 阅读
  7. HTML5 新的语义化标签

    2024-06-10 08:42:03       9 阅读
  8. 什么是幂等问题?

    2024-06-10 08:42:03       11 阅读
  9. kmp算法c++

    2024-06-10 08:42:03       8 阅读
  10. 树莓派 ubuntu linux 去除蓝牙历史配对信息

    2024-06-10 08:42:03       12 阅读
  11. 从零手写实现 nginx-13-nginx.conf 是 HOCON 的格式吗?

    2024-06-10 08:42:03       13 阅读
  12. 使用cython将现有c/c++库移植为python模块

    2024-06-10 08:42:03       14 阅读
  13. 【冲刺秋招,许愿offer】第 二 天

    2024-06-10 08:42:03       8 阅读