MongoDB(1)

文章目录

  • 一、MongoDB简介
  • 二、MongoDB历史
    • MongoDB支持语言
    • MongoDB与关系型数据库术语对比
    • 数据类型
  • 三、部署MongoDB
    • 下载二进制包
    • 安装步骤
    • 启动MongoDB
    • 客户端配置
    • 关闭MongoDB
      • 前台启动
      • 后台启动
      • kill 命令关闭
      • MongoDB函数关闭

一、MongoDB简介

Mongo并非芒果(Mango)的意思,而是源于Humongous(巨大的、庞大的)一词

MongoDB是一个基于分布式文件存储的NoSQL数据库,由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系数据库的。

MongoDB使用了BSON(Binary JSON)对象来存储,与JSON格式的键值对(key/value)类似,字段值可以包含其他文档,数组及文档数组。支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系型数据库单表查询的绝大部分功能,而且还指出对数据建立索引。

二、MongoDB历史

2007年,Dwight Merriman,Eliot Horowitz和Kevin Ryan成立10gen软件公司,在成立之初,这家的公司目标是进军云计算行业,为企业提供云计算服务。在开发云计算产品时,他们准备开发一个类似于数据库的组件,为云计算产品提供存储服务。当时是关系型数据库一统天下的时间,他们觉得传统的关系型数据库无法满足他们的要求,他们想要一款程序员不懂SQL语言也可以使用的数据库产品。

在网络上找了一圈,不管是开源的还是闭源的产品,都没找到让他们满意的东西,那既然找不到,就自己开发吧,反正他们也有那个技术实力,10gen的创始人都来自谷歌,他们创建的网络广告公司DoubleClick被谷歌收购了,这是他们的第二次创业。

10gen公司不适用关系型数据库是有一定原因的,当时他们还在DoubleClick公司的时候,就吃过关系型数据库的苦头。DoubleClick是一家网络广告公司,服务美国众多的知名公司,该公司每秒提供40万个广告,但在可伸缩性和敏捷性方面经常遇到困难,因此他们不得不经常自己开发使用许多自定义数据存储来解决现有关系型数据库的不足,这让他们很是苦恼。

因此他们决定开发一款数据库产品解决他们在DoubleClick时遇到的问题,并为自己的云计算产品提供存储服务。

  • MongoDB最初于2007年开发,由位于纽约的一个名为10gen的组织开发,现在被称为MongoDB Inc.
  • 2009年,经过将近2年的开发,10gen开发出了MongoDB的雏形并将它开源以及正式命名为MongoDB,同时成立开源社区,通过社区运营MongoDB。
  • 2009年02月MongoDB 1.0发布,提供了大部分基本的查询功能。
  • 2009年12月MongoDB 1.2发布,引入了map-reduce,支持大规模数据处理。
  • MongoDB的第一个真正产品是从2010年03月发布的MongoDB 1.4版本开始的。
  • 2010年8月MongoDB 1.6发布,引入了一些主要特性,比如用于水平伸缩的分片、具备自动故障转移能力的副本集以及对IPv6的支持。
  • 2012年05月23日,MongoDB 2.1发布。该版本采用全新架构,包含诸多增强。
  • 2012年06月06日,MongoDB 2.0.6发布,分布式文档数据库。
  • 2012年8月MongoDB 2.2发布,引入了聚合管道,可以将多个数据处理步骤组合成一个操作链。
  • 2013年MongoDB推出第一款商业版本MongoDB Enterprise Advanced。
  • 2013年04月23日,MongoDB 2.4.3发布,此版本包括了一些性能优化,功能增强以及bug修复。
  • 2013年08月20日,MongoDB 2.4.6发布,仍然是以性能优化,功能增强和bug修复为主。
  • 2015年03月 MongoDB 3.0发布,包含了新的Wired Tiger存储引擎、可插拔存储引擎API、增加了50个副本集限制和安全改进。同年晚些时候又发布了3.2版本,支持文档验证、部分索引和一些主要的聚合增强。
  • 2016年MongoDB 推出了Atlas服务。。。

MongoDB支持语言

img

MongoDB与关系型数据库术语对比

img
img

数据类型

数据类型描述举例
字符串utf8字符串都可以表示为字符串类型的数据{”x“:“foobar”}
对象id对象id是文档的12字节的唯一ID{”x“:Objectid()}
布尔值真或者假:true或者false{”x“:true}
数组值的集合或者列表都可以表示成数组{”x“:[‘a’,‘b’,‘c’]}
整数(Int32 int64){”x“:18}
null表示空值或者未定义的对象{”x“:null}
undefined文档中也可以使用未定义类型{”x“:undifined}

三、部署MongoDB

下载二进制包

  • 下载地址:https://www.mongodb.com/try/download/community

安装步骤

  • 下载安装包并且解压
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.6.tgz
tar xzvf mongodb-linux-x86_64-rhel70-4.4.6.tgz -C /usr/local # 指定解压到哪个目录
cd /usr/local
ln -s /usr/local/mongodb-linux-x86_64-rhel70-4.4.6 /usr/local/mongodb
  • 创建用于存放数据和日志的文件夹,并修改其权限增加读写权限
# 创建存放数据的目录
mkdir -p /usr/local/mongodb/data/db
# 创建存放日志的目录
mkdir -p /usr/local/mongodb/logs
# 创建日志记录文件
touch -p /usr/local/mongodb/logs/mongodb.log

启动MongoDB

  • MongoDB的默认启动方式为前台启动。所谓的前台启动就是MongoDB启动进程后会占用当前的终端窗口
cd /usr/local/mongodb
bin/mongod \
--dbpath /usr/local/mongodb/data/db \
--logpath /usr/local/mongodb/logs/mongodb.log \
--logappend \
--port 27017 \
--bind_ip 0.0.0.0
--dbpath:指定数据文件存放目录
--logpath:指定日志文件,注意是指定文件不是目录
--logappend:使用追加的方式记录日志
--port:指定端口,默认为27017
--bind_ip:绑定服务IP,若绑定127.0.0.1,则只能本机访问,默认为本机地址
  • 所谓的后台启动就是以守护进程的方式启动MongoDB。命令中添加–fork即可
# 后台启动
cd /usr/local/mongodb
bin/mongod \
--dbpath /usr/local/mongodb/data/db \
--logpath /usr/local/mongodb/logs/mongodb.log \
--logappend \
--port 27017 \
--bind_ip 0.0.0.0
--forkbin/mongod -f /usr/local/mongodb/bin/mongodb.conf

通过命令启动的方式并不适合管理,毕竟每次输入命令都需要考虑各参数的配置。我们可以通过配置文件来配置启动参数,然后通过指定配置文件的方式启动服务,这样在管理MongoDB上就毕竟方便了。

  • 在bin目录下增加一个mongodb.conf配置文件
vim /usr/local/mongodb/bin/mongodb.conf
# 数据文件存放目录
dbpath = /usr/local/mongodb/data/db
# 日志文件存放目录
logpath = /usr/local/mongodb/logs/mongodb.log
# 以追加的方式记录日志
logappend = true
# 端口默认为27017
port = 27017
# 对访问IP地址不做限制,默认为本机地址
bind_ip = 0.0.0.0
# 以守护进程的方式启用,即在后台运行
fork = true
  • 配置systemd服务
vim /usr/lib/systemd/system/mongodb.service[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/bin/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/bin/mongod --shutdown --config /usr/local/mongodb/bin/mongodb.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.targetchmod 754 /usr/lib/systemd/system/mongodb.service
  • 启动
systemctl restart mongodb

客户端配置

  • 添加环境变量
vim /etc/profile
export PATH=/usr/local/mongodb/bin/:$PATHsource /etc/profile
mongo #客户端工具
  • 客户端常用命令
# 查看帮助
> help# 查看版本信息
> db.version()#查看数据库
> show dbs;
> show databases;

关闭MongoDB

前台启动

Ctrl+c

后台启动

  • 使用–shutdown参数即可关闭
# 命令启动方式的关闭
bin/mongod \
--bpath /usr/local/mongodb/data/db \
--logpath /usr/local/mongodb/logs/mongodb.log \
--logappend \
--port 27017 \
--bind_ip 0.0.0.0
--fork
--shutdown# 配置文件启动方式的关闭
bin/mongod -f /usr/local/mongodb/bin/mongodb.conf --shutdown

kill 命令关闭

  • 通过kill -9的方式强制关闭进程,一般这种方式都不怎么推荐
# 查看mongodb运行的进程信息
ps -ef | grep mongodb
kill -9 pid

MongoDB函数关闭

  • 连接到MongoDB 服务后,切换到admin数据库,使用相关函数关闭服务
# 连接mongodb
bin/mongo
# 切换 admin 数据库
use admin
# 执行以下函数即可关闭服务2选1
db.shutdownServer()
db.runCommand("shutdown")

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bert提取词向量比较两文本相似度

使用 bert-base-chinese 预训练模型做词嵌入(文本转向量) 模型下载:bert预训练模型下载-CSDN博客 参考文章:使用bert提取词向量 下面这段代码是一个传入句子转为词向量的函数 from transformers import BertTokenizer, BertMod…

防御保护----防火墙基本知识

一.防火墙的基本知识--------------------------------------------------------- 防火墙:可以想象为古代每个城市的城墙,用来防守敌军的攻击。墙,始于防,忠于守。从古至今,墙予人以安全之意。 防火墙的主要职责在于&…

【第七在线】数字化转型:智能商品计划管理的核心要素

随着科技的快速发展,数字化转型已经成为企业适应市场变化、提高运营效率的必由之路。尤其在服装行业,快速的市场反应和精准的供应链管理显得尤为重要。其中,智能商品计划管理作为数字化转型的核心要素,正在重塑整个行业的竞争格局…

vite 脚手架搭建 vue3 项目

一、版本 node 版本:18.11.0 二、创建前准备 如果还未安装 vite 需先安装: 1、winr,输入 cmd 进入命令提示符窗口,输入以下命令全局安装vite npm install -g vite2、查看安装成功后的 vite 版本 npm list vite三、步骤 1、…

添加了gateway之后远程调用失败

前端提示500,后端提示[400 ] during [GET] to [http://userservice/user/1] 原因是这个,因为在请求地址写了两个参数,实际上只传了一个参数 解决方案:加上(required false)并重启所有相关服务

老铁,公网访问局域网,一起游戏远程联机

下载地址 Windows 64位 (切勿直接在压缩文件中操作,全部解压到一处后再操作,请关闭某60(会胡乱拦截),可用其他任意安全软件)Mac OS X 64位 (给fastnat执行权限 chmod x ./fastnat.. 终端运行二进制,自行百度)Linux 64位 (给fastnat执行权限 chmod x ./fastnat..)Linux/ARM 32位…

inode生命周期

1.添加inode到inode cache链表 当inode的引用计数器i_count为0后,会调用iput_final去释放 static void iput_final(struct inode *inode) {struct super_block *sb inode->i_sb;const struct super_operations *op inode->i_sb->s_op;unsigned long sta…

Flask 入门1

1. 关于 Flask Flask诞生于2010年, Armin Ronacher的一个愚人节玩笑。不过现在已经是一个用python语言基于Werkzeug工具箱编写的轻量级web开发框架,它主要面向需求简单,项目周期短的小应用。 Flask本身相当于一个内核,其他几乎所…

提升工作效率,畅享便捷PDF编辑体验——Adobe Acrobat Pro DC 2023

作为全球领先的PDF编辑软件,Adobe Acrobat Pro DC 2023将为您带来前所未有的PDF编辑体验。无论您是个人用户还是企业用户,Adobe Acrobat Pro DC 2023将成为您提高工作效率、简化工作流程的得力助手。 一、全面编辑功能 Adobe Acrobat Pro DC 2023提供了…

FPGA光纤Aurora_8B_10B

本章基于Vivado开发工具中Aurora的IP核进行验证。 本章包括了光纤眼图的验证、单个Aurora核下板验证、两个Aurora核下板验证。 光纤接口眼图验证 在协议的选项中,本次实验采用的是 Custom (自定义模式)。 Line Rate (行速率)选项在 QPLL/CPLL 都支持的情况下带…

数字图像处理(实践篇)三十六 OpenCV-Python 使用ORB和BFmatcher对两个输入图像的关键点进行匹配实践

目录 一 涉及的函数 二 实践 ORB(Oriented FAST and Rotated BRIEF)是一种特征点检测和描述算法,它结合了FAST关键点检测和BRIEF描述子。ORB算法具有以下优势: ①实时性:能够在实时应用中进行快速的特征点检测和描述。 ②

对鸢尾花进行分类预测-----pycharm

项目说明 #项目: 对鸢尾花进行分类预测 #实例数量150个(3类各50个) #属性数量:4(数值型,数值型,帮助预测的属性和类) #特征:花萼长度,花萼宽度,花瓣长度,花瓣宽度 单位&#xff1…