企业架构NOSQL数据库之MongoDB
一、背景描述及其方案设计
1、业务背景描述
时间:2017.6.-2017.9
⽤户数量: 10000-12000(⽤户量猛增)
把每次访问存储到mongodb中,mongodb用来筛选日志
2、模拟运维设计方案
根据以上业务需求,采用mongodb数据库存储用户的访问日志,使用单台服务器
二、Mongodb介绍
1、nosql介绍
数据库排名:DB-Engines Ranking – popularity ranking of database management systems
关系数据库 RDBMS 设计表结构,通过SQL语句进行操作。连表关系
常见的关系型数据库:mysql oracle(商业) DB2(IBM) sqlserver(微软) access(微软) sqlite3(小型 嵌入到APP中) postgresql(加州伯克利大学)
nosql 泛指非关系数据库 存储格式key=>value
mongodb 具有更多的功能,可以适用于大部分的mysql场景 document store 文档型数据库
2、产品特点
2.1、存储性
存储量大:单表实现存储PB级别的数据 1PB = 1024TB
2.2、效率性
2.3、结构
三、安装和配置
1、安装方式介绍
yum方式安装:Install MongoDB Community Edition on Red Hat or CentOS — MongoDB Manual
手动通用安装:Install MongoDB Community Edition on Linux — MongoDB Manual
2、二进制可执行安装
shell > tar xvf mongodb-linux-x86_64-rhel62-3.6.5.tgz shell > mv mongodb-linux-x86_64-rhel62-3.6.5 /usr/local/mongodb
shell > cd /usr/local/mongodb shell > mkdir data shell > mkdir logs
shell > cd /usr/local/mongodb/bin shell > ./mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs/log.txt --fork #可以通过进程和端口的方式检测是否启动成功 shell > ps aux|grep mongod shell > netstat -lntp|grep mongod
3、命令行客户端操作
四、数据结构类型操作 CURD
1、添加数据
mongodb里存储数据的格式文档形式,以bson格式的文档形式。
在mongodb中,可有无需创建数据库和集合,使用的时候会自动创建
语法:
1.1、普通数据添加
db.goods.insert({name:'huawei01',price:1000,weight:135,number:35})
1.2、多维数据对象添加
db.goods.insert({name:'xiaomi5',price:1999,weight:156,number:45,area:{province:'beijing',city:'beijing'}})
1.3、数组信息添加
db.goods.insert({name:'xiaomimax',price:2000,weight:180,number:100,area:{province:'henan',city:'zhengzhou'},color:['black','white','red']})
2、查询数据
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、多个条件查询
db.goods.find({price:{'$lte':1999},number:{'$gte':40}})
2.5、多维字段查询
db.goods.find({'area.city':'zhengzhou'});
2.6、数组条件查询
db.goods.find({color:'black'})
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.goods.find({color:{'$all':['black','gold']}},{name:1,_id:0})
_id是mongodb数据库里的集合中,默认的主键id,具有索引内容,通过主键查询,会很快的查询速度。不要随意修改此值,使用默认即可。
2.8、$or查询
满足其中之一的条件就可以显示,类似mysql的中的or条件语法
select * from goods where price > 5000 or number >= 100
db.goods.find({'$or':[{price:{'$gt':5000}},{number:{'$gte':100}}]})
2.9、count 语法
db.goods.count() db.goods.find({price:{'$gt':5000}}).count() db.goods.count({price:{'$gt':5000}})
2.10、limit语法 skip语法
类似于mysql中的limit(skip,length)语法
limit() 取几个
skip() 跳过几个
db.goods.find().limit(1); db.goods.find().skip(1).limit(1);
mongodb语法和SQL语句的对比
3、修改数据
3.1、有$set的修改
db.goods.update({name:'iphonex'},{'$set':{price:8500}})
db.goods.updateOne({name:'xiaomi5'},{'$set':{price:1500}})
3.2、没有$set的修改
没有$set关键字语法,把设置的字段进行修改,没有设置的就会被删除掉
db.goods.update({name:'iphonex'},{price:8550})
4、删除数据
4.1、删除记录
语法: db.集合名称.remove({查询条件})
db.goods.remove({price:8550})
db.goods.deleteMany({price:{'$lte':2000}})
4.2、删除字段
可以删除某个字段的操作,使用的是update语法的$unset
db.goods.update({name:'huawei01'},{'$unset':{weight:0}})
值给一个就可以删除了
真实业务当中,一般不做物理删除,会使用一个标识,来确认是否已经被删除的数据
五、安全设置
Create a User — MongoDB Manual
mongodb安全事件:谈谈最近MongoDB数据库勒索事件 – 简书
1、限制登录
②关闭mongodb
正常情况下不要kill -9 mongod,使用mongo命令客户端里的关机命令
③添加启动的脚本,启动mongod
shell > vim /etc/init.d/mongodb
2、用户权限管理
语法:
③测试使用
添加用户,限制用的库的权限,只读
六、业务实例
1、PHP扩展安装
shell > tar xvf mongodb-1.5.3.tgz shell > cd mongodb-1.5.3 shell > phpize shell > ./configure && make && make install
shell > vim /usr/local/php/etc/php.ini
shell > service php-fpm restart
2、桌面管理使用
查看数据
3、日志统计展示
很多网站需要统计某个页面或者某个功能访问量,如果访问量比较大,需要记录的组件具有很快的读写效率。可以使用功能性更多的mongodb来完成此业务。mongodb具有更多的数据灵活性。
①删除原来的文件
②上传修改好的文件
php中获取代理的真实IP的方式,但是一定要注意必须是代理服务器有传真实IP
原文地址:https://blog.csdn.net/qq_57747969/article/details/134841662
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_49982.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!