MongoDB-介绍与安装部署

news2024/11/18 4:34:59

介绍与安装部署

  • 1.MongoDB简介
    • a) 体系结构
    • b) 数据模型
    • c) MongoDB的特点
      • c.1) 高性能
      • c.2) 高性可用性
      • c.3) 高拓展性
      • c.4) 丰富的查询支持
  • 2.单机部署
    • a) Windows系统中的安装启动
    • b) Shell连接(mongo命令)
    • c) Linux系统中的安装启动和连接

1.MongoDB简介

MongoDB是一个开源、高性能、无模式的文档型数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品中的一种。是最像关系型数据库(MySQL)的非关系型数据库。

它支持的数据结构非常松散,是一种类似于 JSON 的 格式叫BSON,所以它既可以存储比较复杂的数据类型,又相当的灵活。

MongoDB中的记录是一个文档,它是一个由字段和值对(field:value)组成的数据结构。MongoDB文档类似于JSON对象,即一个文档认为就是一个对象。字段的数据类型是字符型,它的值除了使用基本的一些类型外,还可以包括其他文档、普通数组和文档数组。

a) 体系结构

MySQL和MongoDB对比

在这里插入图片描述

SQL术语/概念MongoDB术语/概念解释/说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
table joins表连接,MongoDB不支持
嵌入文档MongoDB通过嵌入式文档来替代多表连接
primary keyprimary key主键,MongoDB自动将_id字段设置为主键

b) 数据模型

MongoDB的最小存储单位就是文档(document)对象。文档(document)对象对应于关系型数据库的行。数据在MongoDB中以BSON(Binary-JSON)文档的格式存储在磁盘上。

BSON(Binary Serialized Document Format)是一种类json的一种二进制形式的存储格式,简称Binary JSON。BSON和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。

BSON采用了类似于 C 语言结构体的名称、对表示方法,支持内嵌的文档对象和数组对象,具有轻量性、可遍历性、高效性的三个特点,可以有效描述非结构化数据和结构化数据。这种格式的优点是灵活性高,但它的缺点是空间利用率不是很理想。

Bson中,除了基本的JSON类型:string,integer,boolean,double,null,array和object,mongo还使用了特殊的数据类型。这些类型包括date,object id,binary data,regular expression 和code。每一个驱动都以特定语言的方式实现了这些类型,查看你的驱动的文档来获取详细信息。

BSON数据类型参考列表:

数据类型描述举例
字符串UTF-8字符串都可表示为字符串类型的数据{“x” : “foobar”}
对象id对象id是文档的12字节的唯一 ID{“X” :ObjectId()}
布尔值真或者假:true或者false{“x”:true}+
数组值的集合或者列表可以表示成数组{“x” : [“a”, “b”, “c”]}
32位整数类型不可用。JavaScript仅支持64位浮点数,所以32位整数会被自动转换shell是不支持该类型的,shell中默认会转换成64位浮点数
64位整数不支持这个类型。shell会使用一个特殊的内嵌文档来显示64位整数shell是不支持该类型的,shell中默认会转换成64位浮点数
64位浮点数shell中的数字就是这一种类型{“x”:3.14159,“y”:3}
null表示空值或者未定义的对象{“x”:null}
undefined文档中也可以使用未定义类型{“x”:undefined}
符号shell不支持,shell会将数据库中的符号类型的数据自动转换成字符串
正则表达式文档中可以包含正则表达式,采用JavaScript的正则表达式语法{“x” : /foobar/i}
代码文档中还可以包含JavaScript代码{“x” : function() { /* …… */ }}
二进制数据二进制数据可以由任意字节的串组成,不过shell中无法使用
最大值/最小智BSON包括一个特殊类型,表示可能的最大值。shell中没有这个类型

c) MongoDB的特点

MongoDB主要有如下特点:

c.1) 高性能

MongoDB提供高性能的数据持久性。特别是,对嵌入式数据模型的支持减少了数据库系统上的I/O活动。索引支持更快的查询,并且可以包含来自嵌入式文档和数组的键。

c.2) 高性可用性

MongoDB的复制工具称为副本集(replica set),它可提供自动故障转移和数据冗余。

c.3) 高拓展性

MongoDB提供了水平可扩展性作为其核心功能的一部分。

分片将数据分布在一组集群的机器上。(海量数据存储,服务能力水平扩展)

从3.4开始,MongoDB支持基于片键创建数据区域。在一个平衡的集群中,MongoDB将一个区域所覆盖的读写只定向到该区域内的那些

片。

c.4) 丰富的查询支持

MongoDB支持丰富的查询语言,支持读和写操作(CRUD),比如数据聚合、文本搜索和地理空间查询等。

2.单机部署

a) Windows系统中的安装启动

方式1:命令行参数方式启动服务

bin 目录中打开命令行提示符,输入如下命令:

mongod --dbpath=..\data\db

我们在启动信息中可以看到,mongoDB的默认端口是27017,如果我们想改变默认的启动端口,可以通过–port来指定端口。

为了方便我们每次启动,可以将安装目录的bin目录设置到环境变量的path中, bin 目录下是一些常用命令,比如 mongod 启动服务用的,mongo 客户端连接服务用的。

方式2:配置文件方式启动服务

在解压目录中新建 config 文件夹,该文件夹中新建配置文件 mongod.conf ,内如参考如下:

storage:
	#The directory where the mongod instance stores its data.Default Value is "\data\db" on Windows.
	dbPath: D:\02_Server\DBServer\mongodb-win32-x86_64-2008plus-ssl-4.0.1\data

【注意】

1)配置文件中如果使用双引号,比如路径地址,自动会将双引号的内容转义。如果不转义,则会报错:

error-parsing-yaml-config-file-yaml-cpp-error-at-line-3-column-15-unknown-escape-character-d

解决:

a. 对 \ 换成 / 或 \

b. 如果路径中没有空格,则无需加引号。

2)配置文件中不能以Tab分割字段

解决:

将其转换成空格。

启动方式:

mongod -f ../conf/mongod.conf
或
mongod --conf ../config/mongod.conf

更多参数配置:

systemLog:
	destination: file
	#The path of the log file to which mongod or mongos should send all diagnostic logging information
	path: "D:/02_Server/DBServer/mongodb-win32-x86_64-2008plus-ssl-4.0.1/log/mongod.log"
	logAppend: true
storage:
	journal:
	enabled: true
	#The directory where the mongod instance stores its data.Default Value is "/data/db".
	dbPath: "D:/02_Server/DBServer/mongodb-win32-x86_64-2008plus-ssl-4.0.1/data"
net:
    #bindIp: 127.0.0.1
    port: 27017
setParameter:
    enableLocalhostAuthBypass: false

b) Shell连接(mongo命令)

在命令提示符输入以下shell命令即可完成登陆

mongo
或
mongo --host=127.0.0.1 --port=27017

查看已经有的数据库

show dbs

c) Linux系统中的安装启动和连接

1.下载/上传到Linux/解压到指定目录

2.新建几个目录,分别用来存储数据和日志

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

3.新建并修改配置文件

vi /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: localhost,192.168.0.2
	#bindIp
	#绑定的端口,默认是27017
	port: 27017

4.启动MongoDB服务

[root@bobohost single]# /usr/local/mongodb/bin/mongod -f /mongodb/single/mongod.conf
about to fork child process, waiting until server is ready for connections.
forked process: 90384
child process started successfully, parent exiting

注意:

如果启动后不是 successfully ,则是启动失败了。原因基本上就是配置文件有问题。

【补充】

(8)停止关闭服务

停止服务的方式有两种:快速关闭和标准关闭,下面依次说明:

**(一)**快速关闭方法(快速,简单,数据可能会出错)

目标:通过系统的kill命令直接杀死进程

如果一旦是因为数据损坏,则需要进行如下操作(了解):

1)删除lock文件:

rm -f /mongodb/single/data/db/*.lock

2)修复数据:

/usr/local/mongdb/bin/mongod --repair --dbpath=/mongodb/single/data/db

**(二)**标准的关闭方法(数据不容易出错,但麻烦):

目标:通过mongo客户端中的shutdownServer命令来关闭服务

主要的操作步骤参考如下:

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

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

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

相关文章

OpenSSL安装过程总结

1 OpenSSL是什么及怎么用 参考: openssl中文手册 2 下载源文件 Github: https://github.com/openssl/openssl 官网: https://www.openssl.org/source/ 3 安装 先查看README.md文档,根据描述找到自己对应平台的NOTES-*.md文档和INSTALL.m…

RunnerGo亮相QECon大会上海站,来看看这款全栈测试平台

QECon(Quality Efficiency Conference)质量效能大会在上海正式开幕!本次大会以"数生智慧:高质量发展新引擎"为主题,深入探讨如何借助数字化和智能化技术推动软件质量的发展,为高质量经济发展提供…

【TES720D-KIT】青翼科技支持双网口的全国产化四核CPU+FPGA处理器开发套件

TES720D-KIT是专门针对我司TES710D(基于复旦微FMQL10S400的全国产化ARM核心板)的一套开发套件,它包含1个TES720D核心板,加上一个TES720D-EXT扩展底板。 FMQL20S400是复旦微电子研制的全可编程融合芯片,在单芯片内集成…

第八章 排序 七、堆排序

目录 一、堆的概念 1、大根堆 2、小根堆 二、建立大根堆 1、举个例子,我们要让一个序列变换成为一个大根堆 2、我们把序列看成一棵完全二叉树,而完全二叉树有以下特性: 3、在此序列中,由于是从1开始的序列,所以分…

海外网红营销:赢得年轻人的心,打破传统的秘密武器

随着数字时代的崛起,社交媒体已经成为了年轻人生活的一部分。年轻人在社媒平台上创造和分享内容,构建着他们的社交圈子,也塑造着全球的文化和趋势。对于企业来说,赢得年轻人的心已经成为了一项关键任务,而海外网红营销…

linux环境下 查看 进程内存占用情况

新版本 -o %MEM 按内存排序 top -o %MEM -b -n 1 | grep java | awk {print "PID: "$1" \t MEM: "$6" \t %CPU: "$9"% \t %MEM: "$10"%"} 通过指令找到内存消耗量最大的几个进程 查看内存消耗情况 top -b -n 1 | grep jav…

Linux从时间服务器同步时间

一、基本设定 自己的时间服务器:111.11.11.111 二、操作 查看当前时间命令:date,发现时间不一致。 同步命令:/usr/sbin/ntpdate 111.11.11.111 然后等待同步完成即可。 如果同步命令不可用,需要先安装Ntp服务&…

使用运放产生各种波形

目录复制 文章目录 RC正弦振荡电路文氏电桥振荡电路移项式正弦波振荡电路 集成函数发生器运算放大器驱动电容性负载峰值检波多通道运放未使用的运放接法 RC正弦振荡电路 文氏电桥振荡电路 这个振荡器起振条件RF > 2R1,起振后又希望RF 2R1产生矛盾怎么办? 将RF换…

LeetCode 1251. 平均售价

题目链接:1251. 平均售价 题目描述 表:Prices Column NameTypeproduct_idintstart_datedateend_datedatepriceint (product_id,start_date,end_date) 是 prices 表的主键(具有唯一值的列的组合)。 price…

开发者指南:如何集成一对一直播美颜SDK到你的应用中

本文将为开发者们提供一个详细的指南,教你如何将一对一直播美颜SDK集成到你的应用中,以提供更具吸引力的直播体验。 -为什么选择一对一直播美颜SDK? 在开始之前,让我们先明确一下为什么选择一对一直播美颜SDK是一个明智的决定。…

WorkPlus即时通讯app打通业务与生态,实现高效管理与协同

作为移动应用管理领域的领先品牌,WorkPlus通过其创新性的解决方案,成为企业级应用管理平台中的佼佼者。WorkPlus的使命是连接业务和生态,为企业提供一体化的移动应用管理解决方案,从而助力企业实现数字化转型和有效的业务运营。 …

PTE阶段规划

目录 复习的各个阶段 线下应该如何 rs应对 从来都是流利度大于内容 推荐的练习网站 口语 DI 关键词是不能念错 口语 RL rl每日练习方法 ASQ 写作 swt 阅读 一半靠机经 听力 口语和听力 考模版来熟悉 熟悉模版 强调的是,整个的逻辑思维 字字和句句都…

OpenAI举办“ChatGPT应用开发大赛”:226个团队参加,异常火热!

韩国先驱报消息,OpenAI与全球最大电信公司之一SKT在首尔圆满举办,生成式AI开发者大赛“Prompter DaySeoul 2023”。主要通过ChatGPT等大模型,开发造福社会的生成式AI应用。 本次大赛受到热烈欢迎共有226个团队参加,奖金共计1亿韩…

蓝桥等考Python组别十六级002

第一部分:选择题 1、Python L16 (15分) a和b是两个集合,它们的关系如下图所示: 以下哪个表达式的值是True?( ) a > ba < ba == ba >= b正确答案:B 2、Python

Git 学习笔记 | Git 项目创建及克隆

Git 学习笔记 | Git 项目创建及克隆 Git 学习笔记 | Git 项目创建及克隆创建工作目录与常用指令本地仓库搭建克隆远程仓库 Git 学习笔记 | Git 项目创建及克隆 创建工作目录与常用指令 工作目录&#xff08;WorkSpace)一般就是你希望Git帮助你管理的文件夹&#xff0c;可以是…

SSO单点登录和OAuth2.0区别

一、概述 SSO是Single Sign On的缩写&#xff0c;OAuth是Open Authority的缩写&#xff0c;这两者都是使用令牌的方式来代替用户密码访问应用。流程上来说他们非常相似&#xff0c;但概念上又十分不同。SSO大家应该比较熟悉&#xff0c;它将登录认证和业务系统分离&#xff0c…

OpenCV实现单目相机检测物体尺寸

目录 步骤&#xff1a; Canny边缘检测算法介绍&#xff1a; 多边形逼近 代码实现&#xff1a; 效果展示&#xff1a; 步骤&#xff1a; 导入必要的库&#xff1a;cv2用于图像处理&#xff0c;numpy用于数组操作。定义了一个函数preprocess&#xff0c;用于对图像进行预处理…

在OpenWRT上自动重拨号获取公网IP(手记)

在OpenWRT上自动重拨号获取公网IP&#xff08;手记&#xff09; 前言 哈喽&#xff0c;大家是否有过这样的经历&#xff1a;想在家里搭建一个小型的服务器、或者是一个NAS&#xff0c;但由于运营商提供的IP地址是一个内网地址&#xff0c;但有一定的概率能获得公网IP。这篇文…

牙齿矫正后需要戴保持器有哪几种?

牙齿矫正后需要戴保持器有哪几种&#xff1f; 矫正牙齿一般是采取通过牙套产生的力量&#xff0c;能够使牙齿回归到正常的牙列当中&#xff0c;在矫正牙齿之后&#xff0c;就需要适当的佩戴保持器&#xff0c;能够起到固定牙齿的效果&#xff0c;目前临床上常见的保持器有两大…

COS流量被盗刷了

背景 家人们谁懂啊&#xff0c;早上起来发了日常的文章&#xff0c;出门的时候发现手机上腾讯云给的提示&#xff1a;COS欠费了。我不敢相信的我的眼睛&#xff01;我之前每个月才花费几毛钱的&#xff0c;知道的伙伴都知道我这可是卖废品攒下来的钱&#xff01;敢看了一下账单…