什么是MongoDB
典型NoSQL数据库,文档型数据库的一种(常见存储JSON,在MongoDB中存储的则是BSON),由C++语言编写。MongoDB是一种介于关系型数据库与非关系型数据库之间的产品,其所支持的数据结构与关系型数据库比较相似,所支持的数据结构都非常松散。对于MongoDB来说,MongoDB最大的特点就是其强大的查询语言,语法类似面向对象的查询语言,几乎可以实现与关系型数据库相同的单表查询需求。
MongoDB结构
文档:document,一个文档就相当于数据库中的一行数据,内部包含多个字段。
字段:field,一个字段就是数据库中的一列数据。
索引:index,独立的检索结构,用于快速查询(底层使用B+Tree进行存储)。
id:每个文档的唯一字段,类似Mysql中的唯一索引。
视图:View,虚拟集合。
聚合操作:类似连接,MongoDB本身不支持联表。可以使用lookup实现。
与传统数据库的区别?
传统的关系型数据库(Mysql、Oracle等)在进行读写操作时候,针对高并发(High Performance)、高数据量(High Storage)、高扩展性以及高可用(High Scalability & High Availability)场景会有一些瓶颈,如:针对海量数据,即使针对数据进行了优化(建立索引、优化语句等操作),仍然还是会出现查询较慢的问题。同时,MongoDB对于事务的支持与传统关系型数据库相比较弱。
此时,我们就需要使用到NoSQL来完成数据存储需求。
MongoDB在什么场景使用?
社交场景:位置存储、评论、朋友圈、积分及用户信息等场景。
游戏场景:使用MongoDB存储游戏用户信息,用户装备、经验以及积分系统等高效率存储场景。
物流场景:使用MongoDB存储物流信息、订单状态、商品评论及点赞信息,对于增量数据高的情况。
物联网场景:存储智能设备信息、设备汇总及汇报日志信息,并针对设备信息进行分析的场景。
视频直播:弹幕存储、用户收藏关注等场景。
以上场景的共同特点就是:增量数据大;写入操作频繁;持久性与一致性价值低的数据——以上这些数据,我们可以考虑使用MongoDB来实现数据存储。
同时也可以从以下情况考虑使用MongoDB:操作不需要考虑事务及复杂的联表查询、并发读写QPS要求高(每秒请求接收数2k~3k左右)、存储海量数据(TB/PB级别数据)、存储数据持久性要求高、应用需要具备高可用特性。 以上场景需要结合具体应用以及业务场景进行组合分析使用。
| 应用特征 | Yes/No |
|---|---|
| 应用无需事务支持/复杂查询以及联表支持 | Yes |
| 新应用、需求该滑块,数据模型无法准确确定,需要适应快速迭代开发 | Yes |
| 应用数据量在TB甚至是PB级别数据 | Yes(可使用其他,如ES) |
| 应用变化迅速,需要快速适应水平扩展场景 | Yes |
| 应用要求存储数据不丢失 | Yes(可使用其他) |
| 应用必须支持高可用 | Yes |
| 应用需要支持地理查询以及文本查询 | Yes(也可以使用ES) |
以上多条匹配,匹配越多,使用MongoDB越必要!!!
为什么使用MongoDB(MongoDB的优势)
处理海量数据具备先天优势,支持高可用 基于JSON的存储结构,适合敏捷开发,面向对象的数据存储结构,可读性更强 API操作,代码量少 自容灾,支持主从部署(多主多从、一主多从) 横向扩展能力强:直接通过命令添加分片,水平拓展与扩容能力强
有什么缺陷?
在架构选型上,由于MongoDB对于事务的支持并没有关系型数据好,因此MongoDB并不适合在强事务(数据变更一致性与操作失败回滚)情况下使用。
Linux安装MongoDB(命令行模式)
按照如下步骤操作:
推荐使用下载解压模式,链接下载模式很慢(已经踩过坑了)
下载完成后,就可以启动MongoDB了,命令附上
#创建dbpath和logpath
mkdir -p /mongodb/data /mongodb/log
配置环境变量
打开/etc.profile cd /etc vi /etc/prifile 在里面加一行 export PATH=$PATH:/usr/local/src/mongodb/bin(你的mongodb安装目录) 保存并退出
重新加载配置
source/etc/profile
常用的一些修改参数命令
--dbpath:修改数据文件存储目录
--logpath:修改日志文件存储路径
--logappend:使用追加方式记录日志(记录增量数据)
--port:指定服务端口,默认使用27017
--bind_ip:默认监听的是localhost地址,在设置时可以修改为公网ip或是0.0.0.0
--fork:后台启动
--auth:开启认证模式
添加配置文件
cd 你的mongodb安装路径
mkdir etc
cd etc
touch mongodb.conf
vi mongodb.confdbpath=/usr/local/src/mongodb/data
logpath=/usr/local/src/mongodb/log/mongodb.log
logappend=true
journal=true
quiet=true
port=27017
bind_ip=0.0.0.0
fork=true
#auth=true
修改结束后退出
利用配置文件启动Mongodb
mongod -f /usr/local/src/mongodb/etc/mongodb.conf
查看mongoDB是否启动成功
netstat -lanp | grep "27017"
显示如下信息说明启动成功
mongo --port=27017
注意,如果此处出现错误,检查一下自己配置文件的拼写是否正确(踩过的坑),如果拼写正确仍然不能正常启动,检查是否有一个mongod.lock的文件,删除即可。
至此MongoDB入门及Linux安装就结束啦!自己学习整理,期待关注与点赞!一直在前进的Whale!后续会持续更新相关学习笔记,期待大家关注!!!!