MongoDB 使用介绍
一、MongoDB 简介
MongoDB 是由 C++ 语言编写的,是一个基于分布式文件存储的非关系型开源数据库系统。其优势在于可以存放海量数据,具备强大的查询功能,是一个独立的面向集合文档形式的。
- 应用平台:MongoDB 支持
Unix``````Linux``````Windows
等系统平台。
MySQL 与 MongoDB 区别:
MySQL数据库数据表数据MongDB数据库集合文档
1.MongoDB 特点
存储性:
- 面向集合:数据被分组存储在数据集中,被称为一个集合。
- 面向文档:存储在集合中的文档,被存储为键值对的形式。
- 高效二进制数据存储:使用二进制格式存储,可以保存任何类型的数据对象。
操作性:
- 完全索引:可以在任意属性上建立索引,包含内部对象。以提高查询的速度。
- 强大的聚合工具:MongoDB 除了提供丰富的查询功能外,还提供了强大的聚合工具,如
count``````group
等。 - 支持
Perl``````PHP``````Java``````C#``````JavaScript``````Ruby``````Python``````C
和C++
语言的驱动程序。
可用性:
- 支持复制和数据恢复:MongoDB 支持主从复制机制,可以实现数据的备份、故障恢复、读扩展等功能。而基于副本集的复制机制提供了自动故障恢复的功能,确保了集群数据不会丢失。
- 自动处理分片:MongoDB 支持集群自动切分数据,对数据进行切分可以使用集群存储更多的数据,实现更大的负载,也能保证存储的负载均衡。
2.MongoDB 适用场景
- 网站实时数据处理:它非常适合实时的插入、更新与查询,并具备网站实时数据存储所需的复制及高伸缩性。
- 缓存:它适合作为信息基础设施的缓存层。在系统重启之后,由它搭建的持久化缓存层可以避免下层的数据源过载。
- 高伸缩性的场景:非常适合由数十台或数百台服务器组成的数据库。
不适用于的场景如下:
- 要求高度事务性的系统(例如:银行和会计系统)
- 传统的商业只能应用。
- 复杂的跨文档(表)级联查询。
3.MongoDB 存储结构
逻辑结构:
- 文档
document
:存放的数据。 - 集合
collection
:由多个文档组成,相当于表,但不同的是集合是无固定架构。 - 数据库
database
:多个集合组成的数据库。
物理结构:
.wt
文件:每个表或索引对应一个命名空间,数据量增加,文件数量增多,存储了分配和正在使用的磁盘空间。- 数据文件:存放数据的实体,并且使用预分配空间机制。
- 日志文件:系统日志文件、
journal
日志文件(用于 MongoDB 崩溃恢复的保障)、oplog
复制操作日志文件(相当于 MySQL 的 BinLog 文件)、慢查询日志(查询操作超出指定时间的语句)
物理结构就是真正存放数据的位置。
4.MongoDB 数据类型
二、部署 MongoDB 数据库应用
主机名操作系统IP 地址版本MongoDBCentOS 7.4192.168.1.1
mongodb-linux-x86_64-rhel70-4.4.5.tgz
1.准备系统环境
[root@MongoDB ~]#ulimit-n25000#同一时间最多开启的文件数[root@MongoDB ~]#ulimit-u25000#用户最多开启的程序数目[root@MongoDB ~]#echo0>/proc/sys/vm/zone_reclaim_mode#设置内核参数.当某个节点内存不足时可以借用其它节点的内存[root@MongoDB ~]#sysctl-wvm.zone_reclaim_mode=0vm.zone_reclaim_mode=0[root@MongoDB ~]#echonever>/sys/kernel/mm/transparent_hugepage/enabled[root@MongoDB ~]#echonever>/sys/kernel/mm/transparent_hugepage/defrag
因为下面安装的版本为
4.4.5
,而 MongoDB
4
版本以上的
/bin
目录中的工具进行了分离,所以需要安装:传送门
[root@MongoDB ~]#tarxfmongodb-database-tools-rhel70-x86_64-100.3.1.tgz
2.安装 MongoDB
[root@MongoDB ~]#wgethttps://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.5.tgz[root@MongoDB ~]#tarxfmongodb-linux-x86_64-rhel70-4.4.5.tgz[root@MongoDB ~]#mvmongodb-linux-x86_64-rhel70-4.4.5/usr/local/mongodb[root@MongoDB ~]#mvmongodb-database-tools-rhel70-x86_64-100.3.1/bin/*/usr/local/mongodb/bin/[root@MongoDB ~]#echo"export PATH=/usr/local/mongodb/bin:\$PATH">>/etc/profile[root@MongoDB ~]#source/etc/profile
3.创建 MongoDB 存储目录以及配置文件
[root@MongoDB ~]#mkdir/usr/local/mongodb/{data,logs,conf}[root@MongoDB ~]#touch/usr/local/mongodb/logs/mongodb.log[root@MongoDB ~]#chmod777/usr/local/mongodb/logs/mongodb.log[root@MongoDB ~]#cat<<END>/usr/local/mongodb/conf/mongodb.confbind_ip=192.168.1.1port=27017dbpath=/usr/local/mongodb/data/logpath=/usr/local/mongodb/logs/mongodb.loglogappend=true#日志以文件追加的方式写入fork=true#通过后台运行MongoDB服务maxConns=5000#MongoDB最大连接数END
4.编写服务启动脚本
[root@MongoDB ~]#mongod-f/usr/local/mongodb/conf/mongodb.conf#启动MongoDB服务[root@MongoDB ~]#mongo192.168.1.1:27017#登录验证[root@MongoDB ~]#mongod-f/usr/local/mongodb/conf/mongodb.conf--shutdown#关闭MongoDB服务[root@MongoDB ~]#vim/etc/init.d/mongodb#!/bin/bashcase"$1"instart)/usr/local/mongodb/bin/mongod-f/usr/local/mongodb/conf/mongodb.conf;;stop)/usr/local/mongodb/bin/mongod-f/usr/local/mongodb/conf/mongodb.conf--shutdown;;restart)/usr/local/mongodb/bin/mongod-f/usr/local/mongodb/conf/mongodb.conf--shutdown/usr/local/mongodb/bin/mongod-f/usr/local/mongodb/conf/mongodb.conf;;esac[root@MongoDB ~]#chmod+x/etc/init.d/mongodb#添加执行权限[root@MongoDB ~]#/etc/init.d/mongodbstart#启动
登录验证
[root@MongoDB ~]#mongo192.168.1.1:27017#登录MongoDB数据库(默认在test库中)>showdatabases#查看数据库中所有库admin0.000GBconfig0.000GBlocal0.000GB>db.getName()#查看当前登录库test
MongoDB 安装完后的默认 4 个库:
admin
:存放了有关数据库账号的相关信息。config
:用于分片集群环境,存放分片相关的元数据信息。local
:用于存储限于本地单台服务器的任意集合(因为该库并不会被复制到从节点,简单来说就是没有冗余性)test
:MongoDB 默认创建的一个测试库,连接 MongoDB 服务时,如果不指定连接的具体数据库,默认就会连接到test
库。
版权归原作者 愿许浪尽天涯 所有, 如有侵权,请联系我们删除。