NOMSQL数据库之Mongodb

article/2025/10/6 19:09:55

一、业务需求

用户访问日志是在web服务器access.log存储

cat access.log | awk '{print $1}' | uniq -c | sort -nr
查看访问次数最多的ip(百万次访问24小时)

统计每日访问量,峰值访问量

把每次访问存储到mongodb中,mongodb用来筛选日志

二、Mongodb介绍

1、nosql介绍

数据库排名: https://db-elWgines.com/en/ranking

关系数据库RDBMS设计表结构,通过SQL语句进行操作。连表关系

常见的关系型数据库: mysql oracle(商业) DB2 (IBM) sqlserver(微软) access(微软) sqlite3(小型嵌入到APP中) postgresql (加州伯克利大学)

nosql泛指非关系数据库存储格式key=>value memcached redis内存缓存数据库

mongodb 具有更多的功能,可以适用于大部分的mysql场景document store文档型数据库

2、产品特点

2.1、存储性

比较适合存储大量的没有规则、无序的数据。未经过处理的数据

存储量大:单表实现存储PB级别的数据 1PB=1024TB

2.2、效率性

数据的效率,就是指存储和读写速度。

2.3、结构

三、Mongodb安装及使用

yum方式安装: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/

手动通用安装: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-linux)

1、编译安装mongodb

①上传安装包到服务器目录

②解压到安装目录并移动

tar xvf mongodb-linux-x86_64-rhe162-3.6.5.tgz
mv mongodb-linux-x86_64-rhel62-3.6.5 /usr/local/mongodb  
移动到local目录下

③创建数据存储目录和日志目录

cd /usr/local/mongodb
mkdir data
mkdir logs
可以提前创建,后面就不用创建了

④启动mongod服务

cd /usr/local/mongodb/bin
./mongod --dbpath=/usr/local/mongodb/data--logpath=/usr/local/mongodb/logs/log.txt --fork
#可以通过进程和端口的方式检测是否启动成功
ps aux |grep mongod  查看进程
netstat -lntp |grep mongod  查看端口

参数介绍:

dbpath数据存储路径

logpath日志存储路径指向到一个文件

fork 后台启动

auth权限开启

bind_ip 指定绑定网卡ip

2、命令行客户端操作

四、数据结构类型操作CURD

1、添加数据

1.1、普通数据添加 多维数据添加 数组信息添加

第一步:连接数据库之后切换使用数据库,不存在就自动创建

./mongo 启动数据库

语法:

db.集合名称.insert (bson格式数据)

2、查询数据

语法:db.集合名称.find(查询条件)

findOne(查询条件)

2.1、笼统方式查询不进行条件限制,全部取出来。

findOne会取出符合结果的第一条信息,并且以格式化形式返回

2.2、条件限制查询

条件格式,所见及所得

db.goods.find({name:'xiaomimax'})
db.goods.findOne({name:'xiaomimax'})  查询符合条件的第一条数据

2.3、范围条件查询

mysql < <= > => !=

mongo $lt 小于 $lte 小于等于 $gt 大于 $gte $ne 不等于

db.goods.find({price:{'$lte':1999}})
db.goods.find({price:{'$lt':1999}})
2.4、多个条件查询

类似mIysql中的AND语法

db.goods.find ({price:{'$lte':1999 },number:{'$gte':40}})
$转义字符 $lte小于等于  $gte大于等于
2.5、多维字段查询

通过多维字段的值进行查询

db.goods.find({'area.city':'zhengzhou'});
结果一定是河南

注意:多维字段需要用引号包含起来

2.6、数组条件查询

①查询满足其中之一即可显示

db.goods.find ( {color : ' black ' })

②满足所有的查询条件才可显示

db.集合名称.find({字段(数组):{'$all':[v1,v2]}})

db.goods.insert({name:'iphonex',price:8398,weight:100,number:200,area:
{province:'jiangsu',city:'nanjing'},color:['gray','black','white','gold']})db.goods.find({color:{'$all':['black','gold']}})
2.7、限制查询字段

在实际使用环境,不需要查询并显示太多的字段。可以选择设定显示。

语法: db.集合名称.find({查询条件},{筛选条件})

显示为1,不显示为0 要是1都是1,要是0都是0 _id除外(默认是1)

最好用什么查什么,节约内存

2.8、查看官方文档

安装下载以及使用文档,上面都有

2.9、$or查询

满足其中之一的条件就可以显示,类似mysql的中的or条件语法select * from goods where price > 5000 or number >= 100

db.goods.find( { ' $or ': [{price: { '$gt ':5000}},{number: {'$gte ' :100}}]})

格式:

db. goods .find({'$or':[{},{}]})

2.10、count语法

返回结果的数量统计

链式操作

db .goods.count()|

db.goods.find( {price : {'$gt' :500} }).count( )

db.goods.count({price : { '$gt ' :500}})

2.11、limit、skip语法

类似于mysql中的limit (skip,length)语法

limit()取几个

skip()跳过几个

查询价格最高的数据,只显示名字和价格,不显示_id .sort排序也是链式操作

3、修改数据

关系型数据修改无序的数据需要重新定义表结构,非关系型数据库就可以直接存储无序的,更灵活

语法:db.集合名称.update({查询条件},{修改条件})

updateOne()修改匹配的第—条

updateMany()修改匹配所有条

3.1、有$set的修改

db.goods.update( {name : ' iphonex ' } , { ' $set ' :{price : 8000}})

3.2、没有$set的修改

没有$set关键字语法,把设置的字段进行修改,没有设置的就会被删除掉

db. goods.update( {name : ' iphonex ' } ,{price :8000})

4、删除数据

4.1、删除记录

语法:db.集合名称.remove({查询条件})

deleteOne()删除匹配的第一条

deleteMany()删除匹配的多条 如果({})是空的则删除所有数据

一般业务环境是不会delete的,都是和回收站一样隐藏状态信息,数据还是真实存在的

db. goods.remove( {price:8000})

remove不指定字段就会默认全删除

4.2、删除字段

可以删除某个字段的操作,使用的是update语法的$unset

db.goods.update( {name : ' huawei81},{'$unset ' : {weight:0}})

删除weight字段,非关系型数据库特别灵活,字段可以随意删除

值给一个就可以删除了

真实业务当中,一般不做物理删除,会使用一个标识status,来确认是否已经被删除的数据

五、安全设置

https://docs.mongodb.com/manual/tutorial/create-users/mongodb

安全事件: https://www.jianshu.com/p/48d17a69e190 mongodb数据库公网裸奔

1、限制登录

①使用另外一台虚拟机,使用mongo命令行端进行测试

在公网裸奔也没事,因为mongodb默认只能本地连接127.0.0.1

②关闭mongodb

正常情况下不要kill -9 mongod,最好不用,很容易起不来服务,使用mongo命令客户端里的关机命令

修改mongod脚本文件

2、用户权限管理

需求:设置一个超级管理员账户,对于所有库具有读写权限

语法:

db.createUser({user: 'root',pwd:'root',roles:['root']})

实现步骤:

①切换admin库,进行用户创建

普通用户创建

roles:[{role:'read',db:'tp5shop'}]

②关闭mongod服务,重启添加权限参数并启动

最后就是登录测试

本地登录测试

忘记了参数可以 直接./mongo --help

远程登录测试

六、php扩展安装mongodb

官网:www.pecl.php.net

是真的卡,需要等

1、PHP扩展安装

安装到web服务器server01和server03上(把web服务器的日志存储到mongodb)

①上传php扩展包

②解压编译安装

③添加php.ini匹配

shell > vim /usr/local/php/etc/php.ini

④重启或者重载php-fpm查看phpinfo

shell > service php-fpm restart/reload

2、桌面管理使用

官网:https://robomongo.org/download

可以下载远程管理工具

3、日志统计展示

很多网站需要统计某个页面或者某个功能访问量,如果访问量比较大,需要记录的组件具有很快的读写效率。可以使用功能性更多的mongodb来完成此业务。mongodb具有更多的数据灵活性。

网站访问日志记录的信息;

ip 用户访问的来源ip

url 用户访问的地址功能模块页面地址time访问时间记录用户访问的时间

user_agent 用户访问的客户端信息

操作实现步骤:

①删除原来的文件

②上传修改好的文件

php中获取代理的真实IP的方式,但是一定要注意必须是代理服务器有传真实IP

③访问页面之后,可以查看到访问已经被记录

如果访问测试时连接不上web页面

可以启动nginx、mycat、redis

开启mongodb服务器

实现了把web访问日志存储在mongodb

七、mongodb数据迁移

1、mongoexport导出

第一步:导出数据

开启 mongodb服务

servcie mongod start

mongo自己连接 自己

use admin  使用或创建 数据库
db.auth({'root'},{'root'})
显示1,代表登录数据库成功
use tp5shop
db.help()  //忘记语法可以查帮助

./mongoexport -d tp5shop -c 集合 -uroot -proot --authenticationDatabase=admin -o ./集合.json 导出集合数据到当前文件的.json

db.qiubai.drop

第二步:导入数据

2、mongodump导出

第一步:导出数据(整个数据库)

./mongodump -d tp5shop -uroot -proot --authenticationDatabase=admin -o ./dump

第二步:导入数据

./mongorestore -uroot -proot --authenticationDatabase=admin --dir=./dump

八、mongoDB命令监控工具

1 ./mongostat

2 ./mongotop

定位哪个数据库在写入数据,哪些没有写入数据

3 、db.hostInfo()

mongodb扩容 主从master slave 4.0 主从方式废弃掉了

4.0后扩容用 复制集replication


http://chatgpt.dhexx.cn/article/5vvpaQfJ.shtml

相关文章

nmon的使用方法

一、认识nmon 1、简介 nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具&#xff0c;它能在系统运行过程中实时地捕捉系统资源的使用情况&#xff0c;记录的信息比较全面&#xff0c;并且能输出结果到文件中&#xff0c;然后通过nmon_analyzer工具产生数据文件与…

Linux系统性能监控工具nmon

一、简介 nmon 工具可以帮助在一个屏幕上显示所有重要的性能优化信息&#xff0c;并动态地对其进行更新。这个高效的工具可以工作于任何哑屏幕、telnet 会话、甚至拨号线路。另外&#xff0c;它并不会消耗大量的 CPU 周期&#xff0c;通常低于百分之二。在更新的计算机上&…

nmon结果分析

用nmon_analyser_hzt.xls等分析工具打开nmon结果文件&#xff0c;如果出现无法加载宏的提示&#xff0c;点击工具-宏-安全性&#xff0c;将安全及调至低&#xff0c;保存后&#xff0c;重新打开。 Sys_summ页&#xff0c;为服务器资源使用率汇总 我们需求的主要数据为cpu&am…

服务器资源监控之nmon

服务器资源监控之nmon 一、年nmon简介 nmon是一款分析 AIX 和 Linux 性能的免费工具&#xff0c;可以帮助在一个屏幕上显示所有重要的性能优化信息&#xff0c;并动态地对其进行更新。这个高效的工具可以工作于任何哑屏幕、telnet 会话、甚至拨号线路。另外&#xff0c;它并不…

linux nmon的安装及使用

1.下载nmon压缩包&#xff1a; http://nmon.sourceforge.net/pmwiki.php?nSite.Download 根据系统的发型版本及CPU位数选择相应的压缩包下载&#xff0c;如笔者的系统发行版本为&#xff1a;红帽子7.3.1611&#xff0c;64位&#xff1a; 所以选择的版本为&#xff1a;nmon16…

nmon工具的使用

原贴:http://www.alidba.net/index.php/archives/227 nmon工具的使用 nmon工具是一个收集AIX或Linux主机的性能数据&#xff0c;并分析的工具&#xff0c;使用简单易用。下载地址&#xff1a;http://www-941.haw.ibm.com/collaboration/wiki/display/Wikiptype/nmonanalyser工…

NoSQL与MongoDB简介

互联网的迅速发展&#xff0c;这样大量的交互给数据库提出了更高的性能要求&#xff0c;传统的关系数据库虽然具备良好的事物管理&#xff0c;但在处理大量数据的应用时很难在性能上满足设计要求。NoSQL就是主要为了解决当下大量高并发高要求的数据库应用需求&#xff0c;由于关…

nmon结果说明及分析

使用nmon analyser生成的结果文件包含了N多个sheet页&#xff0c;下面只是结合个人经验对几个主要的页面图标进行一些分析介绍&#xff1a; 一、整体信息页面SYS_SUMM 1.折线图中蓝线为cpu占有率变化情况&#xff1b;粉线为磁盘IO的变化情况&#xff1b; 2.下面表各种左边的位…

Nmon工具使用

一、Nmon介绍 Nmon是一款计算机资源性能监控工具&#xff0c;因为它免费&#xff0c;体积小&#xff0c;安装简单&#xff0c;耗费资源低&#xff0c;广泛应用于AIX和Linux系统。 二、Nmon下载安装 nmon压缩包下载地址&#xff08;下载适合服务器的版本&#xff09; http:/…

nmon在linux应用

1.下载nmon压缩包&#xff1a; http://nmon.sourceforge.net/pmwiki.php?nSite.Download 选择适合自己系统的版本 2、解压 拖到服务器后进行解压 tar -zxvf 包名 3、 选择对应的版本用mv nmon_x86_64_centos7 nmon改名&#xff08;这里最好加上你要放的路径&#xff09;&…

nmon以及nmon analyser 教程

一、nmon是一款很好的unix、linux下的系统性能监控工具。 引自百度知道&#xff1a; nmon 工具可以帮助在一个屏幕上显示所有重要的性能优化信息&#xff0c;并动态地对其进行更新。这个高效的工具可以工作于任何哑屏幕、telnet 会话、甚至拨号线路。另外&#xff0c;它并不会消…

服务端监控工具:Nmon使用方法

目录&#xff1a;导读 一、认识nmon 二、检查安装环境 三、nmon下载安装 四、运行nmon 五、采集数据 写在最后 一、认识nmon 1、简介 nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具&#xff0c;它能在系统运行过程中实时地捕捉系统资源的使用情况&…

Nmon是什么,一篇文章学会使用 nmon

本文摘自&#xff1a;https://www.sohu.com/a/219012698_151779 1.Nmon简介 Nmon (Nigel’s Monitor)是由IBM 提供、免费监控 AIX 系统与 Linux 系统资源的工具。该工具可将服务器系统资源耗用情况收集起来并输出一个特定的文件,并可利用 excel 分析工具&#xff08;nmon ana…

nmon 的使用

1、概述 监控&#xff0c;在检查系统问题或优化系统性能工作上是一个不可缺少的部分。通过操作系统监控工具监视操作系统资源的使用情况&#xff0c;间接地反映了各服务器程序的运行情况。根据运行结果分析可以帮助我们快速定位系统问题范围或者性能瓶颈点。 nmon是一种在AIX与…

nmon和nmon analyser的下载和使用

nmon 工具可以为 AIX 和 Linux 性能专家提供监视和分析性能数据的功能&#xff0c;AIX是IBM的一个操作系统&#xff0c;相比于Linux&#xff0c;使用范围不算很广&#xff0c;因此我们重点讲下Linux下的nmon应用。首先自然是下载&#xff0c;Linux的nmon有自己的官方网站&#…

nmon用法

一、简介 nmon是一个简单的性能监测工具&#xff0c;可以监测CPU、内存、网络等的使用情况。它是一个系统监视、调优、性能测试工具&#xff0c;它能一次性提供大量性能相关的信息。 二、安装与执行 下载地址&#xff1a;http://nmon.sourceforge.net/pmwiki.php?nMain.HomeP…

Nmon使用方法

一、简介 1、nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具&#xff0c;它能在系统运行过程中实时地捕捉系统资源的使用情况&#xff0c;记录的信息比较全面&#xff0c; 并且能输出结果到文件中&#xff0c;然后通过nmon_analyzer工具产生数据文件与图形化…

Nmon使用

操作系统监控工具 Nmon使用与介绍 目录 目的 4Nmon简介 4 2.1 软件特性 4 2.2 软件组成 4 2.3 运行环境 5 2.4 软件功能 5 2.5 软件获取 6Nmon使用 7 3.1 下载软件 7 3.2 安装软件 7 3.3 运行界面 8 3.4 使用方法 9 3.4.1 实时监控 9 3.4.2 后台监控 10 3.4.3 定时任务 10Nmo…

Xshell是什么

SSH终端&#xff1a; 超级终端&#xff0c;用于远程访问服务器&#xff0c;使用时是通过模拟命令行的界面来与服务器进行沟通。 常见的SSH软件&#xff1a;Xshell&#xff0c;CRT Xshell新建会话时&#xff0c;通常命名规则&#xff1a;服务器名-Host_IP

实习僧[shixiseng.com]爬虫实战笔记

免责声明&#xff1a;本文所记录的技术手段及实现过程&#xff0c;仅作为爬虫技术学习使用&#xff0c;不对任何人完全或部分地依据本文的全部或部分内容从事的任何事情和因其任何作为或不作为造成的后果承担任何责任。 爬取需求&#xff1a;从网站【www.shixiseng.com】上&…