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,mongodb,mysql,elasticsearch)