数据库-nosql-mongodb简介及安装

本文介绍了MongoDB,包括其概念、特点、功能和适用场景,并详细阐述了MongoDB的局限性和不足。针对安装,提供了两种方法:yum安装和源码安装,指引读者进行MongoDB的部署。
摘要由CSDN通过智能技术生成

MongoDB 的官方网站地址

概念

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
 在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。 
MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

特点

面向集合存储,易于存储对象类型的数据
模式自由
支持动态查询
支持完全索引,包含内部对象
支持查询
支持复制和故障恢复
使用高效的二进制数据存储,包括大型对象(如视频等)
自动处理碎片,以支持云计算层次的扩展性
支持 Python, PHP,Ruby,Java,C,C#,Javascript,Perl 及 C++语言的驱动程序,社区
中也提供了对 Erlang 及.NET 等平台的驱动程序
文件存储格式为 BSON(一种 JSON的扩展)
可通过网络访问

功能

1、面向集合的存储:适合存储对象及JSON形式的数据
2、动态查询: MongoDB 支持丰富的查询表达式。 查询指令使用 JSON形式的标记,可轻易查询文档中内嵌的对象及数组
3、完整的索引支持:包括文档内嵌对象及数组。 MongoDB 的查询优化器会分析查询表达式,并生成一个高效的查询计划
4、查询监视: MongoDB 包含一系列监视工具用于分析数据库操作的性能
5、复制及自动故障转移: MongoDB 数据库支持服务器之间的数据复制,支持主 -从模式及服务器之间的相互复制。复制的主要目标是提供冗余及自动故障转移
6、高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)
7、自动分片以支持云级别的伸缩性: 自动分片功能支持水平的数据库集群, 可动态添加额外的机器

适用场合

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

MongoDB局限与不足

 1、32位系统上,不支持大于2.5G的数据。   
 2、单个文档大小限制为16M。
 3、锁粒度太粗,MongoDB使用一把全局读写锁。 
 4、不支持join操作和事务机制 对内存要求比较大,至少要保证热数据(索引,数据及系统其他开销)都能装进内存 
 5、用户权限方面较弱 
 6、MapReduce在单个实例上无法运行,可用Auto-Sharding实现,是由JS引擎限制造成。 
 7、MapReduce的结果无法写入到一个被Sharding的collection中,待后续版本解决 
 8、对于数组型的数据操作不够丰富

MongoDB数据类型

null 
布尔			 ture|false 
整数 		 123 
浮点 		 12.3
字符串		 “hello world” 
对象ID		 用 new ObjectId()来申明。 
日期 		 用 new Date()来申明时间戳 
数组			 [“apple”,”blanan”,”pear”] 
内嵌文档 	 {“username” : “jone”, “age”: 13, “contact” : {“home”:”123”,” moblie”:”456”}} 
RegExp	     正则表达式 /[a-z]/

MongoDB 安装

yum安装

参考官方文档:http://docs.mongoing.com/manual-zh/tutorial/install-mongodb- enterprise-on-red-hat.html
https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el7-4.2/

1、配置MongoDB Enterprise的yum 源文件
[root@node1 ~]# vim /etc/yum.repos.d/mongodb.repo
[mongodb-enterprise]
name=MongoDB Enterprise Repository
baseurl=https://repo.mongodb.com/yum/redhat/$releasever/mongodb-enterprise/4.2/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc

2、安装包
[root@node1 ~]# yum install mongodb-enterprise-4.2.8 -y

3、启动服务
[root@node1 ~]# systemctl start mongod.service 
[root@node1 ~]# systemctl enable mongod           开机自启动
[root@node2 ~]# mongo
MongoDB Enterprise > 

4、测试:
[root@node1 ~]# netstat -lnupt | grep 27017
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      11661/mongod  
[root@node1 ~]# ps -ef | grep mongd
root      11686  11408  0 15:24 pts/0    00:00:00 grep --color=auto mongd

源码安装

[root@slave02 ~]# wget -c  https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.8.tgz
[root@slave02 ~]# tar xf mongodb-linux-x86_64-rhel70-4.2.8.tgz -C /usr/local/
[root@slave02 ~]# cd /usr/local/
[root@slave02 local]# ln -sv mongodb-linux-x86_64-rhel70-4.2.8/ mongodb
"mongodb" -> "mongodb-linux-x86_64-rhel70-4.2.8/"

启动:
1、命令行启动
[root@node4 ~]#  mongod --dbpath /var/lib/mongo/ &
[root@node4 ~]# mongo
>

2、配置文件启动
[root@node2 ~]# scp /etc/mongod.conf 192.168.16.140:/etc
[root@node2 ~]# scp /usr/lib/systemd/system/mongod.service 192.168.16.140:/usr/lib/systemd/system/

创建组和用户
[root@slave02 ~]# mkdir  -p  /var/log/mongodb/  /var/run/mongodb/
[root@slave02 ~]# groupadd -g 995 -r mongod
[root@slave02 ~]# useradd -r -u 995 -g 995 -d /var/lib/mongo  -c 'mongod' -s /bin/false mongod
[root@slave02 ~]# chown -R mongod.mongod /usr/local/mongodb/*
[root@slave02 ~]# vim /etc/profile.d/mongo.sh
export PATH=/usr/local/mongodb/bin/:$PATH
[root@slave02 ~]# source /etc/profile.d/mongo.sh
[root@slave02 ~]# mkdir /var/lib/mongo
[root@slave02 ~]# chown -R mongod.mongod /var/lib/mongo

编辑配置文件
[root@node4 local]# vim /etc/mongod.conf 
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true
processManagement:
  fork: true  
  pidFilePath: /var/run/mongodb/mongod.pid 
  timeZoneInfo: /usr/share/zoneinfo
net:
  port: 27017
  bindIp: 127.0.0.1 


编辑启动脚本
[root@slave02 mongodb]# vim /usr/lib/systemd/system/mongod.service 
[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/mongodb/bin/mongod -f /etc/mongod.conf
ExecStop=/usr/local/mongodb/bin/mongod --shutdown -f /etc/mongod.conf                  
PrivateTmp=true

[Install]
WantedBy=multi-user.target

启动测试:
[root@node4 ~]# systemctl daemon-reload 
[root@node4 ~]# systemctl start mongod.service
[root@node4 ~]# netstat -lnupt | grep mongod
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      12076/mongod      
[root@node4 ~]# mongo
> 

关闭测试
[root@node4 ~]# systemctl stop mongod.service
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值