MongoDB 数据库(一):MongoDB的介绍与安装

news2025/4/8 8:00:59

目录

  • 一、MongoDB数据库的介绍与安装
    • 1.1 NoSQL数据库简介
    • 1.2 MongoDB 简介
      • 1.2.1 再议业务应用场景
      • 1.2.2 为什么要使用 MongoDB
      • 1.2.3 适用场景
  • 二、安装和使用MongoDB客户端
    • 2.1 Windows 安装 MongoDB
    • 2.2 Linux-Centos7 安装 MongoDB
    • 2.3 安装Studio 3T

一、MongoDB数据库的介绍与安装

1.1 NoSQL数据库简介

最常见的数据库可以分为下面的两种类型:

  1. RDBMS(关系型数据库): 常见的关系型数据库有 Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL;
  2. NoSQL(非关系型数据库): 常见的非关系型数据库有 MongoDB、Redis、Cassandra、Hbase、Neo4j 等。

NoSQL 全称为 Not only SQL,它仅仅是一个概念,用来表示非关系型数据库,本文中将要介绍的 MongoDB 就是非关系型数据库的一种。相对于 RDBMS(关系型数据库),NoSQL 具有以下优点:

  1. 易扩展:NoSQL 数据库种类繁多,但它们都有一个共同的特点,那就是都去掉了关系型数据库的关系型特性,数据与数据之间没有关系,这样就非常容易扩展,无形之间也在架构的层面上带来了可扩展的能力;
  2. 大数据量,高性能:NoSQL 数据库都具有非常高的读写性能,尤其是在处理庞大数据时表现优秀;
  3. 灵活:NoSQL 随时都可以存储任意类型的数据,无须提前为要存储的数据建立字段;
  4. 高可用:NoSQL 在不太影响性能的情况下,就可以方便地实现高可用的架构,比如 Cassandra、HBase 模型,通过复制模型也能实现高可用。

为什么使用 NoSQL? 随着互联网的不断发展,传统的关系型数据库在处理超大规模数据以及开发高并发应用时已经显得力不从心了,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL 数据库的产生就是为了解决大规模数据集合多重数据种类带来的问题,特别是大数据应用的难题。

体系框架:NoSQL 整体框架分为四层,由下至上分别为 数据持久层(data persistence)、整体分布层(data distribution model)、数据逻辑模型层(data logical model)、和接口层(interface), 层次之间相辅相成,协调工作。

1、数据持久层: 数据持久层定义了数据的存储形式,主要包括基于内存、硬盘、内存与硬盘相结合、订制可插拔四种形式。

基于内存形式的数据存取速度最快,但可能会造成数据丢失
基于硬盘的数据可能保存很久,但存取速度较基于内存的形式慢
内存和硬盘相结合的形式,结合了前两种形式的优点,既保证了速度,又保证了数据不丢失
订制可插拔则保证了数据存取具有较高的灵活性

2、数据分布层: 数据分布层定义了数据是如何分布的,相对于关系型数据库,NoSQL 可选的机制比较多,主要有三种形式:

CAP 支持: 可用于水平扩展
多数据中心支持: 可以保证在横跨多数据中心时也能够平稳运行
动态部署支持: 可以在运行着的集群中动态地添加或删除节点

3、数据逻辑层: 数据逻辑层表述了数据的逻辑表现形式,与关系型数据库相比,NoSQL 在逻辑表现形式上相当灵活,主要有四种形式:

键值模型: 这种模型在表现形式上比较单一,却有很强的扩展性
列式模型: 这种模型相比于键值模型能够支持较为复杂的数据,但扩展性相对较差
文档模型: 这种模型对于复杂数据的支持和扩展性都有很大优势
图模型: 这种模型的使用场景不多,通常是基于图数据结构的数据定制的

4、接口层: 接口层为上层应用提供了方便的数据调用接口,提供的选择远多于关系型数据库。接口层提供了五种选择,分别是 Rest、Thrift、Map/Reduce、Get/Put 和特定语言 API,使得应用程序在与数据库交互时更加方便。

NoSQL 分层架构并不代表每个产品在每一层只有一种选择。相反,这种分层设计提供了很大的灵活性和兼容性,每种数据库在不同层面可以支持多种特性。NoSQL 数据库在以下的这几种情况下比较适用:

数据模型比较简单;
对灵活性要求很强的系统;
对数据库性能要求较高;
不需要高度的数据一致性;
对于给定 key,比较容易映射复杂值的环境。

1.2 MongoDB 简介

MongoDB 是一个开源的、可扩展的、跨平台的、面向文档的非关系型数据库,它由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

在 MongoDB 中支持以类似 json 的 bson(一种计算机数据交换格式) 格式来存储数据,因此可以存储比较复杂的数据类型。MongoDB 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象语言中函数调用,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还可以对数据建立索引。MongoDB官网: https://www.mongodb.com/

1.2.1 再议业务应用场景

传统的关系型数据库(如MySQL),在数据操作的 三高 需求以及应对 Web2.0及Web3.0 的网站需求面前,显得力不从心。三高 需求:

High performance - 对数据库高并发读写的需求
Huge Storage - 对海量数据的高效率存储和访问的需求
High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求。

MongoDB 可应对 三高 需求。具体的应用场景如:

社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能
游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、高效率存储和访问
物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有
的变更读取出来
物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析
视频直播,使用 MongoDB 存储用户信息、点赞互动信息等

这些应用场景中,数据操作方面的共同特点是:

数据量大
写入操作频繁(读写都很频繁)
价值较低的数据,对事务性要求不高

对于这样的数据,我们更适合使用 MongoDB 来实现数据的存储。什么时候选择 MongoDB? 在架构选型上,除了上述的三个特点外,如果你还犹豫是否要选择它?可以考虑以下的一些问题:

应用不需要事务及复杂 join 支持
新应用,需求会变,数据模型无法确定,想快速迭代开发
应用需要2000-3000以上的读写QPS(更高也可以)
应用需要TB甚至 PB 级别数据存储
应用发展迅速,需要能快速水平扩展
应用要求存储的数据不丢失
应用需要99.999%高可用
应用需要大量的地理位置查询、文本查询

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

1.2.2 为什么要使用 MongoDB

市面上的数据库软件众多,我们为什么要选择 MongoDB 呢?换句话说就是 MongDB 有什么优势呢?下面列举了几点原因。

1、面向文档。 由于 MongoDB 是 NoSQL 类型的数据库,它不是像关系类型数据库那样以固定的格式存储数据,而是将数据存储在文档中,这使 MongoDB 非常灵活,可以适应实际的商业环境和需求。

2、临时查询。 MongoDB 支持按字段、范围和正则表达式查询并返回文档中的数据

3、索引。 可以创建索引以提高 MongoDB 中的搜索性能,文档中的任何字段都可以建立索引

4、复制。 MongoDB 支持高可用性的副本集。副本集由两个或多个 MongoDB 数据库实例组成,每个副本集成员可以随时充当主副本或辅助副本的角色,主副本是与客户端交互并执行所有读/写操作的主服务器。辅助副本使用内置复制维护主副本种的数据。当主副本失败时,副本集将自动切换到辅助副本,然后将辅助副本作为主服务器;

5、负载平衡。 MongoDB 可以在多台服务器上运行,以平衡负载或复制数据,以便在硬件出现故障时保持系统正常运行。

1.2.3 适用场景

MongoDB 的主要目标是在键/值存储方式和传统的 RDBMS(关系型数据库) 系统之间架起一座桥梁,它集两者的优势于一身。根据官方网站的描述,MongoDB 适用于以下场景:

1、网站数据。 MongoDB 非常适合实时的插入、更新与查询数据,并具备网站实时存储数据所需的复制及高度伸缩的特性

2、缓存。 由于性能很高,MongoDB 也适合作为信息基础设施的缓存层,在系统重启之后,由 MongoDB 搭建的持久化缓存层可以避免下层的数据源过载

3、庞大的、低价值的数据。 使用传统的关系型数据库存取大量数据时,数据库的运行效率往往并不尽人意,而 MongoDB 的出现使这个问题迎刃而解,MongoDB 非常适合庞大数据的存储

4、高伸缩性的场景。 MongoDB 内置了 MapReduce 引擎,因此非常适合由数十或数百台服务器组成的数据库

5、用于对象及 JSON 数据的存储。 MongoDB 的 BSON 数据格式非常适合文档化格式的存储及查询。

说了这么多 MongoDB 的好处,但它也不是万能的,比如以下这几个地方就不适合使用 MongoDB:

1、高度事务性的系统: 例如银行或会计系统,传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序

2、传统的商业智能应用: 针对特定问题的 BI(全称 Business Intelligence,中文意思为 商业智慧或商务智能,指用现代数据仓库技术、线上分析处理技术、数据挖掘和数据展现技术进行数据分析以实现商业价值)数据库会产生高度优化的查询方式,对于此类应用,数据仓库可能是更合适的选择

3、需要复杂 SQL 查询的应用

二、安装和使用MongoDB客户端

2.1 Windows 安装 MongoDB

提示:下载前需要先注册/登陆 MongoDB 官网的账号。

要在 Windows 系统上安装 MongoDB,首先需要在 MongoDB 的官网 https://www.mongodb.com/try/download/community 下载 MongoDB 的安装包,如下图所示:
在这里插入图片描述
下载完成之后,如下图所示:
在这里插入图片描述
双击运行我们刚刚下载的 .msi 格式的 MongoDB 安装包,在弹出的窗口中单击 Next,如下图所示:
在这里插入图片描述
接受用户许可协议,并单击 Next,如下图所示:
在这里插入图片描述
单击 Custom(自定义) 按钮来自定义安装,如下图所示:
在这里插入图片描述
修改安装目录,并单击 Next,如下图所示:
在这里插入图片描述
选中 Install MongoDB as a Service,并在下面的选项中选择 Run service as Network Service user,完成后单击 Next,如下图所示:
在这里插入图片描述
取消 Install MongoDB Compass 的勾选(当然也可以选择安装它,但这样就需要花费更久的安装时间),MongoDB Compass 是一个图形界面管理工具,后面如果需要我们也可以再单独下载 (https://www.mongodb.com/try/download/compass) 和安装它,完成上述操作后单击 Next,如下图所示:
在这里插入图片描述
单击 Install 按钮开始安装。如下图所示:
在这里插入图片描述
可能会弹出以下对话框,单击 即可:
在这里插入图片描述
等待安装完成,单击 Finish 按钮退出安装程序即可完成安装,如下图所示:
在这里插入图片描述
验证安装: 不出意外的话,完成上面的一系列操作后 MongoDB 就成功安装到电脑上了。想要验证安装是否成功,可以打开 服务,如果能在服务列表中找到 MongoDB Server,就说明 MongoDB 已经安装成功。打开服务,如下图所示:
在这里插入图片描述
在这里插入图片描述

2.2 Linux-Centos7 安装 MongoDB

下载:https://www.mongodb.com/try/download/community-kubernetes-operator 选择 Linux-Centos7 版本:
在这里插入图片描述
下载好的安装包如下图所示:
在这里插入图片描述
将下载好之后的安装包上传到 Linux 机器上,如下图所示:
在这里插入图片描述
解压到当前目录:tar -zxvf mongodb-linux-x86_64-rhel70-4.4.17.tgz
移动解压后的文件夹到指定的目录中:mv mongodb-linux-x86_64-rhel70-4.4.17 /usr/local/mongodb
新建几个目录,分别用来存储数据和日志:

#数据存储目录
mkdir -p /mongodb/single/data/db
#日志存储目录
mkdir -p /mongodb/single/log

新建并修改配置文件,vim /mongodb/single/mongod.conf

systemLog:
	#MongoDB发送所有日志输出的目标指定为文件
	# #The path of the log file to which mongod or mongos should send all diagnostic logging information
	destination: file
	#mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
	path: "/mongodb/single/log/mongod.log"
	#当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。
	logAppend: true
storage:
	#mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。
	##The directory where the mongod instance stores its data.Default Value is "/data/db".
	dbPath: "/mongodb/single/data/db"
	journal:
		#启用或禁用持久性日志以确保数据文件保持有效和可恢复。
		enabled: true
processManagement:
	#启用在后台运行mongos或mongod进程的守护进程模式。
	fork: true
net:
	#服务实例绑定的IP,默认是localhost
	bindIp: 0.0.0.0
	#bindIp
	#绑定的端口,默认是27017
	port: 27017
security:
    # 添加如下权限认证配置
	authorization: enabled

启动MongoDB服务:/usr/local/mongodb/bin/mongod -f /mongodb/single/mongod.conf,如下图所示:
在这里插入图片描述
如果启动后不是 successfully ,则是启动失败了。原因基本上就是配置文件有问题。通过进程来查看服务是否启动了:
在这里插入图片描述
停止服务的方式有两种:快速关闭和标准关闭,下面依次说明:快速关闭方法(快速,简单,数据可能会出错)目标,通过系统的 kill 命令直接杀死进程

#通过进程编号关闭节点
kill -9 24011

杀完要检查一下,避免有的没有杀掉。如果一旦是因为数据损坏,则需要进行如下操作(了解):

删除 lock 文件: rm -f /mongodb/single/data/db/*.lock
修复数据: /usr/local/mongdb/bin/mongod --repair --dbpath=/mongodb/single/data/db

标准的关闭方法(数据不容易出错,但麻烦),目标:通过 mongo 客户端中的 shutdownServer 命令来关闭服务,主要的操作步骤参考如下:

//客户端登录服务,注意,这里通过localhost登录,如果需要远程登录,必须先登录认证才行。
mongo --port 27017
//#切换到admin库
use admin
//关闭服务
db.shutdownServer()

2.3 安装Studio 3T

下载地址:

链接:https://pan.baidu.com/s/1hhoe1Dacfk19StJzAcxZ1g 
提取码:subm 
--来自百度网盘超级会员V8的分享

双击下载好的可执行文件,如下图所示:
在这里插入图片描述

接受协议,单击 Next 按钮,如下图所示:

单击 change 按钮,选择安装路径,路径选择完成之后,单击 Next 按钮,如下图所示:

单击 Install 按钮,开始安装,如下图所示:

安装完成之后,勾选运行 Studio 3T 复选框,单击 Finish 按钮,如下图所示:


在这里插入图片描述
填写个人信息,如下图所示:


在这里插入图片描述
在这里插入图片描述




在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2975.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyCharm连接远程Docker环境

1. docker 配置 使用-p参数暴露一个端口用于ssh连接。 docker run -itd --name wangchao_paddle --gpus all -p 8899:8888 -p 8822:22 -v /data:/root/data registry.baidubce.com/paddlepaddle/paddle:2.3.0-gpu-cuda10.2-cudnn7 /bin/bash如果镜像没有ssh则需要先安装。&am…

后台获取不到请求头中token信息的解决方法

前言 项目要做单点登录功能,于是在shiro的基础上加入了自定义的 Filter,使用 JWT 自定义生成和校验token信息。 功能写好后自己在 postman 中测试了效果,将 token 放在 Headers 中请求后台接口(如下图,还没发现问题&…

【微服务】基于Ribbon实现负载均衡

前言 我们在上篇文章中讲解了如何通过Nacos实现服务治理,由此引发的负载均衡的问题。这篇文章就介绍一个SpringCloud alibaba的另一个组件:Ribbon,如何通过Ribbon实现负载均衡。 负载均衡 什么是负载均衡? 通俗的讲&#xff0…

C语言学习笔记

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录前言C的面向过程和C的面向对象1.C的数据类型与常量2.C中的变量1、什么是变量?2、变量名字的命名规则&#…

openlayer 加载4547坐标系 以及 wfs服务数据(或其他坐标系)

1.首先查看坐标系基础信息如范围等:如下图: 2.若将地图设置成4547坐标系: 核心代码: proj4.defs("EPSG:4547","projtmerc lat_00 lon_0114 k1 x_0500000 y_00 ellpsGRS80 unitsm no_defs typecrs");register…

ModelBox姿态匹配:抖抖手动动脚勤做深呼吸

摘要:本案例使用Windows版本的ModelBox SDK进行二次开发,主要是针对姿态匹配案例开发实践。本文分享自华为云社区《姿态匹配:抖抖手动动脚勤做深呼吸》,作者:吴小鱼。 在之前发布的AI说ModelBox推理真的高效吗一文中&…

对于含有琥珀酰亚胺酯的叠氮试剂Azidoacetic Acid NHS Ester,N3-C5-NHS ester,N3-C3-NHS ester 知识分享

本文重点为大家总结关于含有琥珀酰亚胺酯基团的叠氮基相关试剂的性质特点,西安凯新生物科技有限公司​主要从Azidoacetic Acid NHS Ester、N3-C5-NHS ester、N3-C3-NHS ester进行分享。 一、Azidoacetic Acid NHS Ester CAS:824426-32-6 中文名&#xff…

Linux shell脚本之回顾及实用笔记

一、前言 我们从事运维的小伙伴,除了自动化运维外,在没有自动化条件下,借助shell脚本/Python脚本来提升运维效率,无疑是一个必选项,当前也可以自建自动化运维平台,我们这里还是以Linux shell脚本为主,来汇总一些常用的运维脚本,对于有基础的同学,也随本文一起回顾下相…

【学习笔记】《模式识别》2:聚类分析

聚类分析 文章目录聚类分析一、聚类分析的概念二、相似性的测度1.距离的四条基本公理2.欧氏距离(Euclid,欧几里得)--距离3.马氏距离(Maharanobis)4.马氏距离与欧氏距离之间的关系5.明氏距离(Minkowaki)6.汉…

4款实用的黑科技软件,白嫖党最爱,功能强大到离谱

闲话少说,直上干货。 1、Dism 这是一款国人研发,免费又好用的电脑优化工具,备受全球电脑爱好者追捧,它解决了系统安装与维护两大痛点问题——自定义设置与优化,相当于给电脑请了免费“保姆”。从系统安装到调校&#x…

LabVIEW基础-VI Scripting

文章目录使用过程前面板界面修改属性节点VI属性无输入时默认当前VI。输入VI引用的静态方法输入VI引用的动态方法获取对象引用从VI获取前面板所有控件的引用设置修饰物的前景色获取选项卡1上所有的数值控件并设置标签前景色从VI获取前面板选项卡的引用-转换为特定的类-获取选项卡…

B+树的插入、删除和分裂,注意国内教材和国外的对于B+树的定义的不同

B树 1 国内教材上B树的定义 一棵 m 阶的B树满足 (考研教材): 每个非叶子结点最多有 m 棵子树(孩子结点)根结点至少有2棵子树 (1层除外),非叶结点至少有 m/2 (向上取整) 棵子树结点的子树的个数与关键字的个数相等: 介于 m/2 (向…

DSL查询文档

目录一、DSL查询语法二、DSL查询分类全文检索查询精确查询地理坐标查询复合查询复合查询——fuction score复合查询——Boolean Query三、搜索结果处理排序分页高亮一、DSL查询语法 DSL Query基本语法 查询成功 二、DSL查询分类 DSL Query的分类 Elasticsearch提供了基于…

【数据结构基础】之树的介绍,生动形象,通俗易懂,算法入门必看

前言 本文为 数据结构基础【树】 相关知识,下边将对树的定义与相关概念,二叉树的定义、特点与性质,二叉树的存储结构,二叉树的遍历,二叉查找树,平衡二叉树,红黑树,B-树与B树等进行详…

六十九、Vue3

Vue3一 Vue3的变化二 创建Vue3项目的两种方式2.1 vue-cl创建2.2 vite创建三 常用API3.1 setup3.2 ref和reactive3.3 计算和监听属性3.4 生命周期3.5 自定义hook函数一 Vue3的变化 性能的提升 打包大小减少41% 初次渲染快55%, 更新渲染快133% 内存减少54% 源码的升级 使用Proxy…

Spring Boot 并行任务,这才是优雅的实现方式!

Spring Boot 的定时任务: 第一种:把参数配置到.properties文件中: 代码: package com.accord.task;import java.text.SimpleDateFormat; import java.util.Date;import org.springframework.scheduling.annotation.Scheduled; …

不会Python迟早失业?Python何以成为找工作必备技能(资料下载)

前言 大数据时代,没听说过Python的人可能很少。(文末送福利) 未来和data与AI紧密连接的当下,金融公司纷纷改成Fintech(financial technology),投行热衷于向科技公司砸钱,就连卖汉堡…

推进生态社会化分工 与伙伴共担未来 数商云受邀出席京东科技合作伙伴论坛

11月1日,2022京东云城市峰会上海站正式启幕。京东科技携手生态伙伴,共聚“合作伙伴论坛”。作为京东集团科技生态的总担当,京东科技秉承“生态社会化分工”理念,与伙伴共担未来。会上,8大场景合作案例依次分享&#xf…

STM32单片机可变频率幅度DDS信号发生器正弦波三角波方波AD9833

实践制作DIY- GC0094-DDS信号发生器 一、功能说明: 基于STM32单片机设计-DDS信号发生器 功能介绍: 硬件组成:STM32F103C系列最小系统板 LCD1602显示器AD9833信号模块4*4矩阵键盘多个按键 1.通过4*4键盘来设定频率值和三角波正弦波的幅度&…

内网搭建图片网站:软件安装配置 1-3

现代的手机功能越来越强大,也让我们能随时随地抓拍有趣瞬间。而照片越来越多,全都存放在手机上并不现实,存在云端又有安全隐患,只能存放在自己的电脑上。而这又带来难以随时与他人分享的问题。不过,我们完全可以在自己…