MongoDB非关系型数据库
NoSQL(not only sql)
NoSQL,指的是 非关系型的数据库
NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
对NoSQL是普遍的解释是"非关联型的",强调 Key-Value Stores 和 文档数据库的优点,而不是单纯的RDBMS。
这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
MySQL | mongo |
库 | 库 |
表 | 集合 |
字段 | key:value |
行 |
内容对比:
## mysql数据结构: name age job oldzhang 28 it xiaozhang 28 it xiaofei 18 student SZ ## mongo数据结构: {name:'oldzhang',age:'28',job:'it'}, {name:'xiaozhang',age:'28',job:'it'}, {name:'xiaozhang',age:'28',job:'it',host:'SZ'}
高性能:
-
Mongodb提供高性能的数据库持久化
-
尤其是支持嵌入式数据模型减少数据库系统上的I/O操作
-
索引支持更快的查询,并且可以包括嵌入式文档和数组中的键
丰富的语言查询:
-
Mongodb支持丰富的查询语言来支持读写操作(CRUD)以及数据汇总,文本搜索和地理空间查询
高可用性:
-
Mongodb的复制工具,成为副本集,提供自动故障转移和数据冗余。
水平可扩展性:
-
Mongodb提供了可扩展性,作为其核心功能的一部分,分片是将数据分在一组计算机上。
支持多种存储引擎:
-
WiredTiger
应用场景:https://www.zhihu.com/question/32071167
-
游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新
-
物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来
-
社交场景,使用 MongoDB 存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能
-
物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析
-
视频直播,使用 MongoDB 存储用户信息、礼物信息等,用户评价
-
电商场景
目录 | 位置 |
---|---|
软件所在位置 | /opt/mongodb |
单节点目录 | /opt/mongo_27017/{conf,log,pid} |
数据目录 |
yum install libcurl openssl -y #下载软件 wget http://downloads.mongodb.org/linux/mongodb-linux-x86_64-3.6.13.tgz tar zxf mongodb-linux-x86_64-3.6.13.tgz -C /opt/ cd /opt/ ln -s mongodb-linux-x86_64-3.6.13 mongodb
mkdir -p /opt/mongo_27017/{conf,log,pid} mv /data /data_bak mkdir -p /data/mongo_27017
注:这里我们使用的是51主机,请注意配置文件下方
cat > /opt/mongo_27017/conf/mongodb.conf<< EOF #与日志相关 systemLog: #日志以文件保存 destination: file #如果重启之后,不进行切割,在原来日志追加 logAppend: true #日志路径 path: /opt/mongo_27017/log/mongodb.log #与存储相关 storage: journal: #记录回滚日志 enabled: true #数据目录 dbPath: /data/mongo_27017 #一个库就是一个文件夹 directoryPerDB: true #存储引擎 wiredTiger: engineConfig: #缓存大小 cacheSizeGB: 1 #索引单独存放 directoryForIndexes: true collectionConfig: #启动压缩 blockCompressor: zlib indexConfig: prefixCompression: true processManagement: #后台模式 fork: true #pid日志文件 pidFilePath: /opt/mongo_27017/pid/mongod.pid #网络 net: port: 27017 #可以使用localhost bindIp: 127.0.0.1,10.0.0.51 EOF
/opt/mongodb/bin/mongod -f /opt/mongo_27017/conf/mongodb.conf #检查是否启动 netstat -lntup|grep 27017 tcp 0 0 10.0.0.51:27017 0.0.0.0:* LISTEN 7632/mongod tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 7632/mongod
echo "export PATH=/opt/mongodb/bin:\$PATH" >> /etc/profile source /etc/profile
mongo
方法一:使用localhost登录
mongo localhost:27017 use admin db.shutdownServer()
方法二:
mongod -f /opt/mongo_27017/conf/mongodb.conf --shutdown
[root@db01 ~]# cat > /etc/systemd/system/mongod.service <<EOF [Unit] Description=mongodb After=network.target remote-fs.target nss-lookup.target [Service] User=mongod Type=forking ExecStart=/mongodb/bin/mongod --config /mongodb/conf/mongo.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/mongodb/bin/mongod --config /mongodb/conf/mongo.conf --shutdown PrivateTmp=true [Install] WantedBy=multi-user.target EOF systemctl restart mongod systemctl stop mongod systemctl start mongod
解决办法:
-
添加内存
-
调整配置文件里的cache大小
解决方法:
mongod -f /opt/mongo_27017/conf/mongodb.conf --shutdown #创建用户并授权数据目录 useradd mongo echo '123456'|passwd --stdin mongo chown -R mongo:mongo /opt/ chown -R mongo:mongo /data/ su - mongo mongod -f /opt/mongo_27017/conf/mongodb.conf mongo
注:这里出现问题,问题:文件没有全部授权,普通用户启动失败,请查看日志文件进行分析错误
报错信息:WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. we suggest setting it to 'never'
#临时解决 建议将内核文件改成never echo "never" > /sys/kernel/mm/transparent_hugepage/enabled echo "never" > /sys/kernel/mm/transparent_hugepage/defrag mongod -f /opt/mongo_27017/conf/mongodb.conf --shutdown mongod -f /opt/mongo_27017/conf/mongodb.conf mongo #写入开机自启动 chmod +x /etc/rc.d/rc.local vim /etc/rc.d/rc.local echo "never" > /sys/kernel/mm/transparent_hugepage/enabled echo "never" > /sys/kernel/mm/transparent_hugepage/defrag
#写入配置文件: vim /etc/profile ulimit -f unlimited ulimit -t unlimited ulimit -v unlimited ulimit -n 64000 ulimit -m unlimited ulimit -u 64000 #生效配置 source /etc/profile
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具