首页 > 数据库 >MongoDB - 简单了解

MongoDB - 简单了解

时间:2022-11-01 09:12:14浏览次数:42  
标签:存储 NoSQL MongoDB 数据库 扩展 JSON 了解 简单

什么是 NoSQL

NoSQL 是一种非关系型数据库管理系统,不需要固定的架构,可以避免 JOIN 连接,并且易于扩展。

NoSQL 常用于具有庞大数据存储需求的分布式数据存储,通常是大数据和实时 Web 应用程序等场景。

对于海量数据,使用 RDBMS 处理是会导致系统响应时间变慢,一般的替代方案都是在负载增加时横向扩展到其他的服务器上,而 NoSQL 比关系型数据库更容易扩展。

NoSQL 的功能和优点主要是以下几点:

  • NoSQL 数据库不遵循关系模型
  • NoSQL 数据库是无模式或具有宽松模式的数据库
  • NoSQL 提供简单的 API 作为存储和查询
  • NoSQL 可以以分布式方式执行,易于扩展

关于 MongoDB

MongoDB 是一个以 BSON 为数据模型的文档数据库,其中 BSON 是一种类 JSON 的二进制存储格式。

一个 MongoDB 文档

文档类似于 JSON 对象,其中存储的也是键值对的数据结构,字段的值也可以包括其他文档、数组和文档数组。

主要特点

  • 易于使用:建模不是必需的,类 JSON 数据模型仅用一条数据表示复杂的层次关系
  • 易于扩展:自带分片功能,完美支持横向扩展(更多机器),无需更改应用程序的逻辑
  • 功能丰富:支持通用的二级索引,支持聚合分析数据,支持生命周期有限集合,针对大文件存储等等功能
  • 性能卓越:使用多粒度锁尽可能提高并发和吞吐量,使用尽可能多的内存作为缓存,尽可能为查询自动选择正确的索引
  • 高可用:自带副本集的概念,支持自动故障转移和数据冗余,对读负载均衡非常友好
  • 支持多种存储引擎:自带 WiredTiger 存储引擎、内存存储引擎,并且提供可插拔的 API 允许第三方开发存储引擎

适用场景

MongoDB 主要有以下适用场景:

  • 作为应用数据库使用,类似于 Oracle、MySQL,由于其建模是非必需的,更适合创业公司快速迭代使用
  • 由于其性能较高,且易于扩展,也常用在大数据领域中,通常是用作海量数据处理及搭建数据平台

MongoDB 也有以下不适用场景:

  • 高度事务化的系统:需要大量原子性复杂事务的应用程序使用传统的关系型数据库会更好
  • 传统的商业智能应用:针对特定问题的 BI 数据库会产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择

技术优势总结

  • 类 JSON 结构和对象模型接近,开发代码量低
  • 类 JSON 的动态模型意味着更容易响应新的业务需求
  • MongoDB 原生支持的副本集提供 99.999% 高可用
  • MongoDB 使用分片架构支持海量数据和无缝扩容

MongoDB vs 关系型数据库

不同点 MongoDB RDBMS
数据模型 文档模型 关系模型
数据库类型 OLTP(联机事务处理) OLTP
CRUD MQL/SQL SQL
高可用 复制集 集群模式
横向扩展能力 原生分片完美支持 数据分区或者应用侵入式
索引支持 B 树
全文索引
地理位置索引
多键索引
TTL 索引
B+ 树
开发难度 容易 困难
数据容量 没有理论上限 千万、亿
扩展方式 垂直扩展 + 水平扩展 垂直扩展

标签:存储,NoSQL,MongoDB,数据库,扩展,JSON,了解,简单
From: https://www.cnblogs.com/fatedeity/p/16846581.html

相关文章

  • 717. 简单斐波那契
    //递推//数列01123581321...被称为斐波纳契数列#include<iostream>#include<cstring>usingnamespacestd;constintN=50;intn;intf[N];intmain(......
  • MongoDB 索引笔记
    索引(Index)合适的索引可以大大提高数据库搜索性能集合层面的索引支持复合键索引可以对多个字段进行排序复合索引:(A,B,C)可以支持的索引:{A},{A,B},{A,B,C}......
  • 注解@JSONField和@JsonProperty的简单使用
    本注解的使用,需要引入fastjson依赖<!--添加fastjson依赖--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</art......
  • [Pyhton] SimPy 离散事件模拟框架详解 —— 以一个简单的汽车充电排队模拟为例
    目录一、背景知识二、SimPy讲解2.1SimPy概述2.2基本概念2.3一个汽车开开停停的例子2.4在走走停停过程中增加充电过程(过程交互)2.5共享资源三、后续参考链接附录二......
  • 了解计算机网络
    计算机网络1、概念计算机网络:是一个将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。计算机网络是互连......
  • MongoDB 分片集群均衡器导致的性能下降
        近期,有人反馈其mongodb分片集群,在加载处理大批量数据时,程序处理十分缓慢并且应用还会报错:versionmismatchdetectedfor。现将分析汇总如下备用。    ......
  • Qt+VLC简单的使用显示视频Demo
    先看看效果: vlc播放视频,要比QMediaPlayer实用的多,并且同时运行20个视频时不会出现卡顿。 这个Demo功能实现非常简单,简单的说一下vlc流程:1、创建并初始化一个libvlc实例LI......
  • 如何使用容联SDK,以及如何使用回调简单示例
    一、容联SDK如何使用A、收费标准(公有云走网络的都是免费的)     语音会议提供一个房间最大支持32方     视频会议提供一个房间最大支持30方(免费的弊......
  • Qt用Poppler库解析PDF成图片的简单示例
    解析PDF这里用的是Poppler库,与之相关的库还有MuPDF库,参考了这个链接:​​https://people.freedesktop.org/~aacid/docs/qt5/​​相关链接:​​qt显示pdf——poppler-qt问题​......
  • CentOS9上面使用rpm方式安装SQLServer2022的简单总结
    CentOS9上面使用rpm方式安装SQLServer2022的简单总结下载需要的资料下载CentOS9Stream的安装介质https://mirrors.bfsu.edu.cn/centos-stream/9-stream/BaseOS/x86_64......