MongoDB(一)-安装

1. 什么是NoSQL,什么情况下会使用

  • 本质也是一种数据库的技术,相对于传统数据库技术,它不会遵循一些约束,比如:sql标准、ACID属性,表结构等。
  • 使用场景
    • 对数据库进行高并发读写
    • 对海量数据进行高效存储和访问
    • 对数据库高扩展性和高可用性
    • 灵活的数据结构,满足数据结构不固定的场景
  • 优点
    • 应用不需要事务及复杂 join 支持
    • 新应用,需求会变,数据模型无法确定,想快速迭代开发
    • 应用需要2000-3000以上的读写QPS(更高也可以)
    • 应用需要TB甚至 PB 级别数据存储
    • 应用发展迅速,需要能快速水平扩展
    • 应用要求存储的数据不丢失
    • 应用需要99.999%高可用
    • 应用需要大量的地理位置查询、文本查询
  • 缺点
    • 弱事务
    • 实现复杂sql比较麻烦
    • 运维人员维护成本
    • 目前不是主流的数据库技术

2. 什么是MongoDB

  • 特性
    • 无模式、文档性,nosql,最像关系数据库的
    • 面向集合文档的存储Bson(json的扩展)
    • 格式自由,数据结构不固定,生产环境下修改结构不影响程序运行
    • 强大的sql
    • 索引支持,支持查询计划
    • 复制和自动故障转移
    • 支持二进制数据及文件存储
    • 支持分片
    • 使用内存映射存储引擎,把磁盘的IO操作转换成为内存的操作
  • 组成
    • 实例
      • 系统上运行库的进程及节点集
      • 多个集合组成的数据库,每个数据库是独立的,有自己的用户,权限,独立的存储文件集
    • 集合(表)
      • 一组文档
    • 文档(行)
      • 由多个键-值有序组成在一起的数据单元

3. 应用场景

  • 游戏场景,使用 MongoDB存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新
  • 物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
  • 社交场景,使用 MongoDB存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能
  • 物联网场景,使用MongoDB存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析
  • 视频直播,使用 MongoDB 存储用户信息、礼物信息等

4. 安装

  • docker安装

    ~ > docker pull mongo:latest
    ~ > docker run -itd --name mongo -p 27017:27017  -v /usr/local/mongo:/data/db mongo --auth
    ~ > docker exec -it mongo bash
    # 默认连接本地的27017端口的MongoDB
    # 指定IP与端口进行连接 mongo 127.0.0.1:27017
    # 指定用户名和密码连接到指定的MongoDB数据库 mongo 127.0.0.1:27017/admin -u user -p password
    root@dae834800c37:/# mongo
    > db.version()
    4.2.1
    
    # mgdb.conf
    # https://docs.mongodb.com/v4.0/reference/configuration-options/
    # 4.0配置
    storage:
        dbPath: "/usr/local/mongodb/data/db" #数据文件存放目录
    systemLog:
        destination: file
        path: "/usr/local/mongodb/log/mongodb.log" 
    net:
        bindIp: 0.0.0.0 #本地监听 IP,0.0.0.0 表示本地所有 IP
        port: 27017
    processManagement:
         fork: true #以守护程序的方式启用, 即在后台运行
    setParameter:
        enableLocalhostAuthBypass: false #是否需要验证权限登录(用户名和密码)
    
  • mac

    • 安装
    ~ >  brew tap mongodb/brew
    ~ >  brew install mongodb-community@4.2
    Updating Homebrew...
    Error: The following directories are not writable by your user:
    /usr/local/share/man/man8
    
    You should change the ownership of these directories to your user.
      sudo chown -R $(whoami) /usr/local/share/man/man8
    ~ >  sudo chown -R `whoami`:admin /usr/local/bin
    ~ >  sudo chown -R `whoami`:admin /usr/local/share
    
    • 目录
      • 配置文件(/usr/local/etc/mongod.conf)
      • 日志文件(/usr/local/var/log/mongodb/mongo.log)
      • 数据目录(/usr/local/var/mongodb)
    • 启动
    ~ >  brew services list
    Name              Status  User  Plist
    mongodb-community started anxin /Users/anxin/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist
    # 或者mongod --config /usr/local/etc/mongod.conf --fork
    # 接连
    ~ >  mongo
    
  • linux
    官网下载安装介质,选择适当的版本,这 里以 linux 版本 mongodb-linux-x86_64-4.0.4 为例;

    ~ > pwd
    # /usr/local
    ~ > tar zxvf mongodb-linux-x86_64-4.0.4.tgz
    ~ > mv mongodb-linux-x86_64-4.0.4.tgz mongodb
    ~ > cd mongodb
    ~ > mkdir -p {data/db,log,conf}
    # 见docker安装4.0配置文件
    ~ > vi conf/mgdb.conf
    # 修改环境变量
    ~ > vi /etc/profile
    # mac vim ~/.base_profile
        export MONGODB_HOME=/soft/mongodb 
        export PATH=$PATH:$MONGODB_HOME/bin 
    ~ > source /etc/profile
    # 配置开机启动
    ~ > vi /usr/lib/systemd/system/mongodb.service
    ~ > systemctl daemon-reload 
    ~ > systemctl start mongodb 
    ~ > systemctl enable mongodb
    # 启动 mongodb 
    ~ > service mongodb stop 
    ~ > service mongodb start
    
    [Unit]
    Description=mongodb
    After=network.target remote-fs.target nss-lookup.target
    [Service]
    Type=forking
    RuntimeDirectory=mongodb
    PIDFile=/soft/mongodb/data/db/mongod.lock
    ExecStart=/soft/mongodb/bin/mongod --config /soft/mongodb/conf/mgdb.conf
    ExecStop=/soft/mongodb/bin/mongod --shutdown --config /soft/mongodb/conf/mgdb.conf PrivateTmp=true
    [Install]
    WantedBy=multi-user.target
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值