初学MongoDB

什么是MongoDB

最近在学习MongoDB,它是目前最受欢迎的nosql数据库,nosql的意思是not only SQL,是非关系型数据库,没有复杂的SQL查询语言,没有事物支持(听说MongoDB 4.*已经支持事物了)没有固定的表结构,速度快。MongoDB:是一个数据库 ,高性能、无模式、文档性,目前nosql中最热门的数据库,开源产品,基于c++开发。是nosql数据库中功能最丰富,最像关系数据库的。
现在所熟知的nosql:
nosql数据库的应用
MongoDB数据库有哪些优缺点
优点:

  1. 满足对数据库的高并发读写
  2. 对海量数据的高效存储和访问
  3. 对数据库高扩展性和高可用性
  4. 灵活的数据结构,满足数据结构不固定的场景

缺点:

  1. 一般不支持事务
  2. 实现复杂SQL查询比较复杂
  3. 运维人员数据维护门槛较高
  4. 目前不是主流的数据库技术

MongoDB的一些强大特性:
面向集合文档的存储:适合存储Bson(json的扩展)形式的数据;
格式自由,数据格式不固定,生产环境下修改结构都可以不影响程序运行;
强大的查询语句,面向对象的查询语言,基本覆盖sql语言所有能力;
完整的索引支持,支持查询计划;
支持复制和自动故障转移;
支持二进制数据及大型对象(文件)的高效存储;
使用分片集群提升系统扩展性;
使用内存映射存储引擎,把磁盘的IO操作转换成为内存的操作;

最需要说明的是应用场景
在这里插入图片描述
这里只要满足第一个条件,其他有一个适合就可以考虑用它了,是不是很强大,但是它也不是万能的,也有它不适用的场景:

高度事务性系统:例如银行、财务等系统。MongoDB对事物的支持较弱;
传统的商业智能应用:特定问题的数据分析,多数据实体关联,涉及到复杂的、高度优化的查询方式;
使用sql方便的时候;数据结构相对固定,使用sql进行查询统计更加便利的时候;

下载与安装

MongoDB的下载地址:https://www.mongodb.com/download-center/community
Linux下载:不过我在虚拟机上下在需要ssl证书,所以就先下载到本地,用xshell上传上去。

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.10.tgz

解压:

tar -zxvf mongodb-linux-x86_64-3.6.10.tgz 

我把解压的文件移动到特定的目录以便于查找:

mv mongodb-linux-x86_64-3.6.10 /home/apps/mongodb

需要在对应的安装目录下新建data和logs文件夹还有logs里的mongodb.log日志文件。

服务的启停

因为MongoDB的启动比较麻烦,需要每次输入一些参数:

./mongod --dbpath=/home/apps/mongodb/mongodb-linux-x86_64-3.6.10/data --logpath=/home/apps/mongodb/mongodb-linux-x86_64-3.6.10/logs/mongodb.logs --logappend=true

所以就写了一些启停服务的脚本和配置:
mongodb.conf配置文件

#数据存储位置
storage:
   dbPath: "/home/apps/mongodb/mongodb-linux-x86_64-3.6.10/data"
#日志位置
systemLog:
   destination: file
   path: "/home/apps/mongodb/mongodb-linux-x86_64-3.6.10/logs/mongodb.log"
   logAppend: true
#连接端口
net:
   bindIp: 0.0.0.0
   port: 27017
#是否在后台启动
processManagement:
   fork: true

mongodb.sh启停的脚本(需要注意改一下路径

MONGO_HOME=/home/apps/mongodb/mongodb-linux-x86_64-3.6.10
MONGO_BIN=${MONGO_HOME}/bin
MONGO_LOG=${MONGO_HOME}/logs
MONGO_DATA=${MONGO_HOME}/data
#MONGO_CONF=${MONGO_HOME}/conf

MONGO_BIN_MONGOD=${MONGO_BIN}/mongod
#MONGO_CONF_MONGOD=${MONGO_CONF}/mongod.ini
MONGO_LOG_MONGOD=${MONGO_LOG}/mongodb.log
MONGO_BIN_MONGO=${MONGO_BIN}/mongo

start()
{
    tmp=`ps -ef | grep ${MONGO_BIN_MONGOD} | wc -l`
    if [ $tmp -gt 1 ]; then 
      echo "The server arealdy started...abort!" 
      exit 1 
    fi 
    deleteLock
    cd ${MONGO_BIN}
    ${MONGO_BIN_MONGOD} -f mongodb.conf
    echo "Start MongoDB server in ${MONGO_BIN_MONGOD} OK!"    
}

stop()
{
    cd ${MONGO_BIN}
    ${MONGO_BIN_MONGOD} --shutdown -f mongodb.conf
    echo "Stopped MongoDB server"
}

usage()
{
        echo "Usage: $0 [start|stop|restart]"
}

#这里需要删除对应的锁,之前我没有删锁在第二次启动服务是一直启动不起来,就是因为服务关闭的时候没有把锁释放,导致启动的时候获取不到。。
deleteLock()
{
    echo "Deleting mongod.lock"
    cd ${MONGO_DATA}
    /bin/rm -f mongod.lock
    echo "Delete mongod.lock OK!"
}

if [ $# -lt 1 ];then
        usage
        exit
fi

if [ "$1" = "start" ];then
        start

elif [ "$1" = "stop" ];then
        stop

elif [ "$1" = "restart" ];then
        stop
        start

else
        usage
fi

写好脚本后记得赋予一下执行权限

chmod +x mongodb.sh

这样启动服务和关闭服务就非常简单了,就算参数修改也只要在配置文件修改下就行了。

./mongodb.sh start
./mongodb.sh stop
./mongodb.sh restart
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值