当前位置: 首页 > news >正文

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的用户名就已经创建好了.

        

http://www.lryc.cn/news/126847.html

相关文章:

  • leetcode每日一题_2682.找出转圈游戏输家
  • OpenCV之薄板样条插值(ThinPlateSpline)
  • 034_小驰私房菜_[问题复盘] Qcom平台,某些三方相机拍照旋转90度
  • 【TI-CCS笔记】工程编译配置 bin文件的编译和生成 各种架构的Post-build配置汇总
  • 深入探索Java中的File类与IO操作:从路径到文件的一切
  • Python 处理 Excel 表格的 14 个常用操作
  • PyQt有哪些主要组件?
  • 力推C语言必会题目终章(完结篇)
  • CS5263替代停产IT6561连接DP转HDMI音视频转换器ASL 集睿致远CS5263设计电路原理图
  • 数据分析 | 随机森林如何确定参数空间的搜索范围
  • 5G+AI数字化智能工厂建设解决方案PPT
  • Windows配置编译ffmpeg +音视频地址
  • C语言 常用工具型API --------system()
  • 车规级半导体分类(汽车芯片介绍)
  • opencv图像轮廓检测
  • 诚迈科技荣膺小米“最佳供应商奖”
  • 分布式 - 消息队列Kafka:Kafka 消费者的消费位移
  • H3C QoS打标签和限速配置案例
  • 带curl的docker镜像image
  • Hadoop数据迁移distcp
  • QT-Mysql数据库图形化接口
  • LeetCode150道面试经典题-- 合并两个有序链表(简单)
  • GitHub 如何部署写好的H5静态页面
  • SharkTeam:Worldcoin运营数据及业务安全分析
  • C语言编程练习
  • vue入门(增查改!)
  • 移动端身份证识别技术的应用,告别手动录入证件信息
  • 网络通信原理TCP字段解析(第四十七课)
  • uniapp微信小程序消息订阅快速上手
  • MySQL 根据多字段查询重复数据