MongoDB:MySQL,Redis,ES,MongoDB的应用场景
简单明了说明MySQL,ES,MongoDB的各自特点,应用场景,以及MongoDB如何使用的第一章节.
一. SQL与NoSQL
SQL被称为结构化查询语言.是传统意义上的数据库,数据之间存在很明确的关联关系,例如主外键关联,这种结构可以确保数据的完整性(数据没有缺失并且正确).但是正因为这种严密的结构使得扩展起来不方便,而且系统越膨胀,关系越复杂,如果遇到系统升级,数据量增加,数据表增加,程序员就该头痛了.
如果把SQL称为正规化设计,那么NoSQL是反正规化设计,其中的数据没有关联,更容易扩展,数据模型更加的灵活,你甚至可以随时修改数据存储的结构.这样有违规范的设计,带来了数据扩充的便利性,在信息飞速发展的互联网时代,这真是每个程序员所需要的,但是由于这种缺少关联和规则,对数据的完整性就是它的一大缺点,正所谓有利有弊.
二.MySQL,Redis,ES,MongDB
1.MySQL应用场景
MySQL是典型的SQL代表,在数据结构比较固定,对数据完整性有严格要求的地方应该使用MySQL,例如商品库存,用户积分,用户个人信息等地方.
2.Redis应用场景
前面提到的集中数据库,除了MySQL之外,其它的都属于NoSQL.
Redis是键值对存储系统,通过Key进行数据的操作,通常是将数据存储在内存中,当然也可以做持久化,但是通常也没有太多必要,用来做数据持久化的数据库很多,而且比它好用,所以Reids通常用来做数据的缓存.因为是通过key进行数据的操作,并且存储在内存中,所以操作速度非常快,但是你也别往里面存很多数据,并且数据也要设置一个过期时间.
Redis通常用来存储用户登录信息,例如token,根据明确id值查询的并且可能再同一个时间段内会被反复读取的数据.
3.ES应用场景
ES是分布式搜索和分析引擎,大概类似于百度搜索,淘宝搜索一类的,它的作用是对大量数据进行快速检索,并且根据要求对检索出来的数据进行评分,你可以按照评分或者其它规则对其进行排序,并且它的数据存储采用主分片,父分片的形式.有利于做大数据的搜索功能.并且可以对数据进行聚合等操作.
ES可以用于做一些低质量,大数据记录的检索功能,所谓低质量就是这些数据并不是要求很严密的或者说实时的,ES数据被称为准实时,也就是离实时数据还有不少差距.类似于信息检索,用户日志检索,商品检索数据可以放在ES中.
4.MongoDB以及应用场景
MongoDB是本篇文章介绍的重点,让我多啰嗦几句.
MongoDB是NoSQL中的文档形数据库,采用文档的形式存储数据,也就是将单个实体的所有数据都存储在文档中,而文档又存在集合中.MongoDB是半结构化的非关系型数据库,相当于是在NoSQL中混入了一个不坚定的叛徒.在MongoDB中有以下概念.这里只介绍了几个特殊之处.
1.DataBase:不同与另外集中NoSQL,MongoDB有数据库的概念;大概等用于mysql中的数据库概念.
2.集合:MongoDB是面向集合Collection进行存储的,这个相当于MySQL中的数据表;
3.文档:Document是MongoDB存储数据的基本单元,相当于MySQL中的一个实体(也就是一行数据),MongoDB中的文档形式是一种叫做BSON的文本.
4.MongoDB中也有MySQL中的视图,索引,存储过程,用户,字段的概念.字段相当于数据表的列,但是这个列可以弹性的增加或者减少.
就是这样一个SQL与NoSQL结合起来的怪胎确实目前做系统开发经常用到的一种数据库,因为在实际应用中它的优点是其他数据库所不具备的.
2.4.1 MongoDB的文档
MongoDB的数据是已文档的形式存储的,而文档是已BSON格式存储的,BSON是以JSON为基础经过改良好的一种文本格式,使用JSON的基本格式(例如:键值对,{},[]等),但是引入了新的数据类型,例如日期ObjectId等.但是BSON会占用更大的空间,以此来换取更快的查询速度,典型的以空间换取时间模式.
2.4.2 MongoDB的特征
SQL具有ACID(原子性,一致性,隔离性和持久性),NoSQL具有BASE(基本可用性,可伸缩性,最终一致性),而MongoDB在NoSQL的基础上增加了原子性和事务.
2.4.3 MongoDB的应用场景
鉴于MongoDB的这些特性,它可以用来处理大量的低价值数据,并且对数据处理性能要求比较高,而且还可能存在数据结构需要高度的伸缩性.
通俗来说,就是处理一些数据量多,而且数据相关度不高,不存在需要很高的准确性(例如实时的库存),数据格式可能会有变化,并且还对数据的操作要求响应比较快.那么哪些场景符合这些特征了?
例如:用户评论,评分,商品详情,这类信息.
三. MongoDB的安装
3.1 安装MogoDB Server
这个比较简单,下载社区版,直接安装,没有什么特别需要注意的地方.
http://MongoDB 社区版
3.2 下载 MogoDB Shell
MogoDB Shell可以使用命令操作MongoDB,下载之后直接可以用,建议放在MongoDB安装文件夹里面,以免找不到.
MongoDB Shell
3.3 使用Navicat Premium连接数据库
和连接MySQL差不多,用Navicat操作MongoDB比较方便.
四.创建MongoDB的登录用户
在下载的MongoDB Shell中找到 mongosh-1.10.4\bin\mongosh.exe 文件,双击运行.显示一个DOS窗口,打开后敲回车(使用默认连接方式).输入以下命令:
use admin
连接到admin数据库,这个数据库可以让你创建用户.然后再输入下面的命令:
db.createUser({user:"<用户名>",pwd:"<密码>",roles:["root"]})
输入的时候替换<>的内容,包括<>.这样就可以创建用户名和密码了.
创建用户名和密码之后,还需要修改一个配置.打开
C:\Program Files\MongoDB\Server\6.0\bin\mongod.cfg 这个文件,并且新增下面的配置:
#security:
security:authorization: enabled
好了,MongoDB的用户名就已经创建好了.
相关文章:
MongoDB:MySQL,Redis,ES,MongoDB的应用场景
简单明了说明MySQL,ES,MongoDB的各自特点,应用场景,以及MongoDB如何使用的第一章节. 一. SQL与NoSQL SQL被称为结构化查询语言.是传统意义上的数据库,数据之间存在很明确的关联关系,例如主外键关联,这种结构可以确保数据的完整性(数据没有缺失并且正确).但是正因为这种严密的结…...
leetcode每日一题_2682.找出转圈游戏输家
2682.找出转圈游戏输家 题目: n 个朋友在玩游戏。这些朋友坐成一个圈,按 顺时针方向 从 1 到 n 编号。从第 i 个朋友的位置开始顺时针移动 1 步会到达第 (i 1) 个朋友的位置(1 < i < n),而从第 n 个朋友的位置开始顺时针移…...
OpenCV之薄板样条插值(ThinPlateSpline)
官方文档:OpenCV: cv::ThinPlateSplineShapeTransformer Class Reference 使用方法: 头文件:#include <opencv2/shape/shape_transformer.hpp> (1)点匹配 一般根据有多少个样本(或者点)…...
034_小驰私房菜_[问题复盘] Qcom平台,某些三方相机拍照旋转90度
全网最具价值的Android Camera开发学习系列资料~ 作者:8年Android Camera开发,从Camera app一直做到Hal和驱动~ 欢迎订阅,相信能扩展你的知识面,提升个人能力~ 【一、问题】 某些三方相机,预览正常,拍照旋转90度 【二、问题排查】 1 ) HAL这边Jpeg编码数据在哪个地方…...
【TI-CCS笔记】工程编译配置 bin文件的编译和生成 各种架构的Post-build配置汇总
【TI-CCS笔记】工程编译配置 bin文件的编译和生成 各种架构的Post-build配置汇总 TI编译器分类 在CCS按照目录下 有个名为${CG_TOOL_ROOT}的目录 其下就是当前工程的编译器 存放目录为: C:\ti\ccs1240\ccs\tools\compiler按类型分为五种: ti-cgt-arm…...
深入探索Java中的File类与IO操作:从路径到文件的一切
文章目录 1. File类的作用与构造方法2. File类常用方法:获取、判断和创建2.1 获取功能方法2.2 判断功能方法2.3 创建和删除功能方法2.4 目录的遍历方法 3. 递归:探索更深的层次代码示例:递归遍历文件夹 结论 🎉欢迎来到Java学习路…...
Python 处理 Excel 表格的 14 个常用操作
目录 1. 安装依赖库 2. 导入库 3. 读取Excel文件 4. 写入Excel文件 5. 创建工作表 6. 访问工作表 7. 读取单元格数据 8. 写入单元格数据 9. 获取行数和列数 10. 过滤数据 11. 排序数据 12. 添加新行 13. 删除行或列 14. 计算汇总统计 总结 无论是数据分析师、财…...
PyQt有哪些主要组件?
这是一个非常强大的跨平台GUI库,可以让你用Python语言创建美观且功能强大的桌面应用程序。让我们先来了解一下它的主要组件。 首先,我们要介绍的是窗口。窗口是PyQt应用程序的基本元素,所有的GUI元素都放置在窗口中。你可以创建主窗口、模态…...
力推C语言必会题目终章(完结篇)
W...Y的主页 😊 代码仓库分享 💕 今天是分享C语言必会题目最终章,全部都是硬货,大家都坐好准备开始喽!!! 编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内…...
CS5263替代停产IT6561连接DP转HDMI音视频转换器ASL 集睿致远CS5263设计电路原理图
ASL集睿致远CS5263是一款DP1.4到HDMI2.0b转换器芯片,设计用于将DP1.4源连接到HDMI2.0b接收器。 CS5263功能特性: DP接口包括4条主通道、辅助通道和HPD信号。接收器支持每通道5.4Gbps(HBR2)数据速率。DP接收机结合了HDCP1.4和HDCP…...
数据分析 | 随机森林如何确定参数空间的搜索范围
1. 随机森林超参数 极其重要的三个超参数是必须要调整的,一般再加上两到三个其他超参数进行优化即可。 2. 学习曲线确定n_estimators搜索范围 首先导入必要的库,使用sklearn自带的房价预测数据集: import numpy as np import pandas as pd f…...
5G+AI数字化智能工厂建设解决方案PPT
导读:原文《5GAI数字化智能工厂建设解决方案》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。数字化智能工厂定义 智能基础架构协同框架 - 端、边、云、网…...
Windows配置编译ffmpeg +音视频地址
Windows配置MinGW及MinGW-make使用实例 https://blog.csdn.net/Henoiiy/article/details/122550618 ffmpeg安装遇错:nasm/yasm not found or too old. Use --disable-x86asm for a crippled build. https://blog.csdn.net/sayyy/article/details/124337834https://…...
C语言 常用工具型API --------system()
函数名: system() 用 法: int system(char *command); 原理: 加载一个子进程去执行指定的程序,而想Linux命令基本都是一个单独的进程实现的,所以你所掌握的Linux命令越多,该函数功…...
车规级半导体分类(汽车芯片介绍)
车规级半导体,也被称为“汽车芯片”,主要应用于车辆控制装置、车载监控系统和车载电子控制装置等领域。这些半导体器件主要分布在车体控制模块上,以及车载信息娱乐系统方面,包括动力传动综合控制系统、主动安全系统和高级辅助驾驶…...
opencv图像轮廓检测
效果展示: 代码部分: import cv2 import numpy as np img cv2.imread(C:/Users/ibe/Desktop/picture.PNG,cv2.IMREAD_UNCHANGED) # 类型转换 img cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 结构元 kernel cv2.getStructuringElement(cv2.MORPH_REC…...
诚迈科技荣膺小米“最佳供应商奖”
近日,诚迈科技受邀参加小米战略合作伙伴HBR总结会。诚迈科技以尽职尽责的合作态度、精益求精的交付质量荣膺小米公司颁发的最佳供应商奖,其性能测试团队荣获优秀团队奖。 诚迈科技与小米在手机终端方向一直保持着密切的合作关系,涉及系统框架…...
分布式 - 消息队列Kafka:Kafka 消费者的消费位移
文章目录 01. Kafka 分区位移02. Kafka 消费位移03. kafka 消费位移的作用04. Kafka 消费位移的提交05. kafka 消费位移的存储位置06. Kafka 消费位移与消费者提交的位移07. kafka 消费位移的提交时机08. Kafka 维护消费状态跟踪的方法 01. Kafka 分区位移 对于Kafka中的分区而…...
H3C QoS打标签和限速配置案例
EF:快速转发 AF:确保转发 CS:给各种协议用的 BE:默认标记(尽力而为) VSR-88-2 出口路由配置: [H3C]dis current-configuration version 7.1.075, ESS 8305 vlan 1 traffic classifier vlan10 operator and if-match a…...
带curl的docker镜像image
带curl的docker镜像,便于k8s中查找问题,确认容器内部是否可用。 用于测试网络的工具,带有curl nslookup等命令 镜像名docker.io/appropriate/curl 测试命令docker run --rm -it docker.io/appropriate/curl /bin/sh 已测试可用 用于测试网…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
