1、MongoDb综述

2023-09-15 14:24:28

1. MongoDb综述

1.1. 什么是Nosql

NoSQL:Not Only SQL ,本质也是一种数据库的技术,相对于传统数据库技术,它不会遵循一些约束,比如:sql标准、ACID属性,表结构等。

Nosql优点

l 满足对数据库的高并发读写

l 对海量数据的高效存储和访问

l 对数据库高扩展性和高可用性

l 灵活的数据结构,满足数据结构不固定的场景

Nosql缺点

l 一般不支持事务

l 实现复杂SQL查询比较复杂

l 运维人员数据维护门槛较高

l 目前不是主流的数据库技术

1.1.1. NoSql分类

image.png

1.1.2. 数据库流行程度排行

https://db-engines.com/en/ranking

image.png

1.2. MongoDb概念入门

1.2.1. 什么是MongoDB

MongoDB:是一个数据库 ,高性能、无模式、文档性,目前nosql中最热门的数据库,开源产品,基于c++开发。是nosql数据库中功能最丰富,最像关系数据库的。

特性

l 面向集合文档的存储:适合存储Bson(json的扩展)形式的数据;

l 格式自由,数据格式不固定,生产环境下修改结构都可以不影响程序运行;

l 强大的查询语句,面向对象的查询语言,基本覆盖sql语言所有能力;

l 完整的索引支持,支持查询计划;

l 支持复制和自动故障转移;

l 支持二进制数据及大型对象(文件)的高效存储;

l 使用分片集群提升系统扩展性;

l 使用内存映射存储引擎,把磁盘的IO操作转换成为内存的操作;

1.2.2. MongoDB核心概念

image.png

1.2.3. 应不应该用MongoDB?

并没有某个业务场景必须要使用 MongoDB才能解决,但使用 MongoDB 通常能让你以更低的成本解决问题(包括学习、开发、运维等成本)

image.png

如果上述有1个 Yes,可以考虑 MongoDB,2个及以上的 Yes,选择MongoDB绝不会后悔!

1.2.4. MongoDB使用场景

MongoDB 的应用已经渗透到各个领域,比如游戏、物流、电商、内容管理、社交、物联网、视频直播等,以下是几个实际的应用案例:

l 游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新

l 物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。

l 社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能

l 物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析

l 视频直播,使用 MongoDB 存储用户信息、礼物信息等

1.2.4.1. 不使用MongoDB的场景

l 高度事务性系统:例如银行、财务等系统。MongoDB对事物的支持较弱;

l 传统的商业智能应用:特定问题的数据分析,多数据实体关联,涉及到复杂的、高度优化的查询方式;

l 使用sql方便的时候;数据结构相对固定,使用sql进行查询统计更加便利的时候;

1.2.4.2. 谁在使用MongoDB

image.png

更多推荐

SMS--短信服务

1短信服务介绍短信服务(ShortMessageService)是阿里云为用户提供的一种通信服务的能力。2短信服务使用接下来,我们使用短信验证码功能来演示短信服务的使用。流程如下:2.1准备工作2.1.1实名认证https://help.aliyun.com/document_detail/48263.html?spm

Algorithm基础算法学习

算法学习贪心算法贪心算法简介:这种算法模式一般将求解过程分成若干个步骤,但每个步骤都应用贪心原则,选取当前状态下最好/最优的选择(局部最有利的选择),并以此希望最后堆叠出的结果也是最好/最优的解。这就好像一个贪婪的人,他事事都想要眼前看到最好的那个,看不到长远的东西,也不为最终的结果和将来着想,贪图眼前局部的利益最大化

JMM内存模型

JMM概念JMM:JavaMemoryModel(JAVA内存模型)。是Java语言中用于定义多线程并发访问共享内存的规范。它规定了多线程环境下,如何保证共享内存的一致性和可见性,以及如何协调多个线程之间的操作。主内存和工作内存(本地内存)JMM将内存划分为主内存和每个线程的工作内存。主内存是所有线程共享的内存,而每个

二级配电箱智能监测系统

随着现代电力工业的发展,电力系统的复杂性和安全性要求日益提高。二级配电箱作为电力系统的重要环节,其运行状态直接影响到电力供应和电力系统的稳定性。因此,对二级配电箱进行智能监测显得尤为重要。本文将探讨如何实现二级配电箱的智能监测。一、配电箱智能监测系统架构力安科技通过在配电箱/柜场所安装“智慧供配电综合探测器”前端物联探

检索技术核心学习总结

一、学习检索技术的必要性分析(一)关键原因分析学习检索技术(InformationRetrieval,IR)具有多种重要的原因,特别是在今天信息爆炸的数字化时代。总的来说,学习检索技术有助于提高信息处理和利用的效率,无论是个人生活还是在职业和学术领域中。这些技能可以增强信息搜索、分析和组织的能力,有助于更好地满足各种需

【eslint】屏蔽语言提醒

在JavaScript中,ESLint是一种常用的静态代码分析工具,它用于检测和提醒代码中的潜在问题和风格问题。有时候,在某些特定情况下,你可能希望临时屏蔽或禁用某些ESLint的提醒信息,以便消除不必要的警告或避免不符合项目规范的代码被标记为错误。例如,当你遍历一个dom数组,并想要修改每个item的dom元素的st

如何将办公文档导入到内容编辑区?

办公文档导入到内容编辑区功能让用户能够快速、轻松地将办公文档中的内容导入到内容编辑区中,以便进行进一步的编辑、排版和格式化。这个功能适用于多种场景,例如从Word文档、Excel表格或PowerPoint演示文稿中提取内容并将其导入到网页编辑器、博客平台或内容管理系统等。通过使用这个功能,用户可以省去手动复制和粘贴文本

通讯网关软件003——利用CommGate X2Mbt实现Modbus TCP访问OPC Server

本文介绍利用CommGateX2Mbt实现Modbus访问OPCServer。CommGateX2MBT是宁波科安网信开发的网关软件,软件可以登录到网信智汇(wangxinzhihui.com)下载。【案例】如下图所示,SCADA系统配置OPCServer,现在上位机需要通过Modbus主站软件来获SCADA的数据。【

Python的简单使用与应用

在当今互联网时代,网络爬虫成为了获取数据的重要工具之一。而使用代理IP进行爬虫操作,则是提高爬虫效率、绕过访问限制的利器。本文将向大家介绍Python代理IP爬虫的简单使用,帮助大家了解代理IP的原理、获取代理IP的方法,并探索其在实际应用中的无限可能。一、代理IP的原理和作用代理IP,顾名思义,即为代替本机IP进行网

计算机竞赛 深度学习 opencv python 公式识别(图像识别 机器视觉)

文章目录0前言1课题说明2效果展示3具体实现4关键代码实现5算法综合效果6最后0前言🔥优质竞赛项目系列,今天要分享的是🚩基于深度学习的数学公式识别算法实现该项目较为新颖,适合作为竞赛课题方向,学长非常推荐!🥇学长这里给一个题目综合评分(每项满分5分)难度系数:3分工作量:4分创新点:4分🧿更多资料,项目分享:h

【计算机网络】Tcp详解

文章目录前言Tcp协议段格式TCP的可靠性面向字节流应答机制超时重传流量控制滑动窗口(重要)拥塞控制延迟应答捎带应答标志位具体标志位三次握手四次挥手粘包问题TCP异常情况listen的第二个参数前言前面我们学习了传输层协议Udp,今天我们一起学习Tcp,Tcp比Udp复杂,但可靠,非常多的场景需要这种可靠。Tcp协议段

热文推荐