MongoDB 介绍与安装

19 篇文章 2 订阅
2 篇文章 0 订阅


前言

  分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供多用户访问的服务器。另外,对等特性允许一些系统扮演客户机和服务器的双重角色。

一、什么是 MongoDB

  • MongoDB 是由 C++ 语言编写的开源数据库系统。
  • 在高负载的情况下,添加更多的节点,可以保证服务器性能。
  • MongoDB 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
  • MongoDB 将数据存储为一个文档。MongoDB 是一个基于分布式文件存储的数据库。

在这里插入图片描述
官网:https://www.mongodb.com/try/download/enterprise

二、MongoDB 的特点

  • 面向集合存储,易存储对象类型的数据。
  • 模式自由
  • 支持动态查询
  • 可通过网络访问
  • 支持查询
  • 支持复制和故障恢复
  • 支持完全索引,包含内部对象
  • 文件存储格式为 BSON(一种 JSON 的扩展)
  • 自动处理碎片,以支持云计算层次的扩展性
  • 使用高效的二进制数据存储,包括大型对象(如视频等)
  • 支持 Golang,RUBY,PYTHON,JAVA,C++,PHP,C# 等多种语言
  • MongoDB 安装简单

三、MongoDB 的适用场景

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

  • 网站数据:Mongo 非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
  • 缓存:由于性能很高,Mongo 也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo 搭建的持久化缓存层可以避免下层的数据源过载。
  • 缓存:由于性能很高,Mongo 也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo 搭建的持久化缓存层可以避免下层的数据源过载。
  • 高伸缩性的场景:Mongo 非常适合由数十或数百台服务器组成的数据库,Mongo 的路线图中已经包含对MapReduce 引擎的内置支持。
  • 用于对象及 JSON 数据的存储:Mongo 的 BSON 数据格式非常适合文档化格式的存储及查询。

MongoDB 的使用也会有一些限制,例如:它不适合于以下几个地方。

  • 高度事务性的系统:例如银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。
  • 传统的商业智能应用:针对特定问题的 BI 数据库会产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。
  • 需要 SQL 的问题。

四、MongoDB 概念解析

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

在这里插入图片描述

五、MongoDB 安装

下载

#wget http://101.34.22.188/mongodb/mongodb-linux-x86_64-4.0.9.tgz -P /opt
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.9.tgz -P /opt

解压移动

tar xf /opt/mongodb-linux-x86_64-4.0.9.tgz -C /opt
mv /opt/mongodb-linux-x86_64-4.0.9 /usr/local/mongodb

配置 conf 与目录

mkdir -p /usr/local/mongodb/data/db
mkdir -p /usr/local/mongodb/logs
touch /usr/local/mongodb/logs/mongodb.log

vim /usr/local/mongodb/mongodb.conf
#端口号
port=27017
#db目录
dbpath=/usr/local/mongodb/data/db
#日志目录
logpath=//usr/local/mongodb/logs/mongodb.log
#后台
fork=true
#日志输出
logappend=true
#允许远程IP连接
bind_ip=0.0.0.0

启动测试

启动

/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf

连接

/usr/local/mongodb/bin/mongo

测试

[root@c7-1 ~]#/usr/local/mongodb/bin/mongo
......
......
> use qydb
switched to db qydb
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
> db.createCollection("tab001")
{ "ok" : 1 }
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
qydb    0.000GB
> db.tab001.insert({"name":"深渊浩劫"})
WriteResult({ "nInserted" : 1 })
> db.tab001.find()
{ "_id" : ObjectId("619c3ebc03637f727893d601"), "name" : "深渊浩劫" }

mongodb 注册系统服务

设置 mongodb.service 开机服务启动

cat > /usr/lib/systemd/system/mongodb.service << EOF
[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/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/bin/mongod --shutdown --config /usr/local/mongodb/mongodb.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF
chmod +x /usr/lib/systemd/system/mongodb.service
pkill -9 mongo
systemctl daemon-reload
systemctl enable mongodb.service && systemctl start mongodb.service

添加环境变量

#直接用 export 命令
export PATH=$PATH:/usr/local/mongodb/bin

#修改 profile 文件
cat >> /etc/profile <<"EOF"
export PATH="$PATH:/usr/local/mongodb/bin"
EOF

source /etc/profile

#修改 .bashrc 文件
cat >> /root/.bashrc <<"EOF"
export PATH="$PATH:/usr/local/mongodb/bin"
EOF

添加环境变量是为了优化启动路径

[root@c7-1 ~]#mongo
MongoDB shell version v4.0.9
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("68d26417-7f63-4ab9-8a9b-190716bfb020") }
MongoDB server version: 4.0.9
Server has startup warnings: 
2021-11-23T09:47:26.573+0800 I CONTROL  [initandlisten] 
2021-11-23T09:47:26.574+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2021-11-23T09:47:26.574+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2021-11-23T09:47:26.574+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2021-11-23T09:47:26.574+0800 I CONTROL  [initandlisten] 
2021-11-23T09:47:26.574+0800 I CONTROL  [initandlisten] 
2021-11-23T09:47:26.574+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2021-11-23T09:47:26.574+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2021-11-23T09:47:26.574+0800 I CONTROL  [initandlisten] 
2021-11-23T09:47:26.574+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2021-11-23T09:47:26.574+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2021-11-23T09:47:26.574+0800 I CONTROL  [initandlisten] 
> ^C
bye

NoSQL 简介
MongoDB 简介
Centos7 安装 Mongodb
Redis、Memcache、MongoDB 区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值