Mongodb的安装与配置

2018, Nov 23    

mongoDB的安装与配置

1.什么是NoSQL

​ NoSQL是设计互联网规模数据库解决方案——存储半结构化数据、非结构化数据的一种新方式。

​ SQL(结构化查询语言)是用于存储结构化数据的RDBMS(关系型数据库管理系统)的,RDBMS具有ACID的特性。NoSQL不遵循ACID,而是遵循BASE

ACID BASE
原子性 基本可用
一致性 最终一致性
隔离性 软状态
持久性  
1.1 NoSQL的优点&缺点

优点:

  • 灵活的数据模型
  • 支持横向扩展,及横向扩展带来的低成本硬件和低成本维护

缺点:

  • 产品成熟度不足
  • 有限的查询功能
1.2 NoSQL与SQL对比

​ RDBMS产品成熟,提供的SQL语言便于理解,且提供ACID支持(银行等行业必须要ACID支持)。但是,RDBMS随着数据的增长,读写性能会下降,横向扩展能力差。NoSQL可以支持灵活的数据模型,且很好地支持横向扩展。

  NoSQL SQL
数据存储形式 文档、键值对等,节点集合,模式灵活 由行和列组成的表,模式固定
发展历史 2000年以来 1970年以来
可扩展性 横向扩展 纵向扩展
支持事务 支持分区和可用性,会损害事务 支持ACID和事务
一致性 强一致性或最终一致性 强一致性
产品成熟度 有些成熟,有些还在发展 高度成熟

总结:

RDBMS仍然是应用程序数据存储的首选方案,成熟度较高的业务还是用RDBMS。

2.用docker安装mongo

  1. 拉取镜像docker pull docker.io/mongo

  2. 创建用于分配账户的容器docker run -d -p 27017:27017 -v /var/mongo_configdb:/data/configdb -v /var/mongo_db:/data/db --name mongo docker.io/mongo --auth创建了数据挂在点之后,即使restart容器,数据也不会丢失。另外,mongo_configdb、mongo_db下的数据复制到另一台机器上,新建一个mongo容器,以前建立的用户依然存在,数据也可以访问

  3. 进入容器docker exec -it mongo /bin/bash

  4. 设置管理员

    #进入mongo
    mongo
       
    #看看当前有哪些数据库
    show dbs
       
    #建立或使用admin数据库
    use admin
       
    #创建管理员账户
    db.createUser({
        user: 'admin',
        pwd: '1234',
        roles: [{ role: 'userAdminAnyDatabase', db:'admin'}]
    })
       
    #验证第管理员添加是否成功, 如果返回1,则表示成功。
    db.auth("admin", "1234")
    
  5. 建立其他数据库

    #用管理员账户登陆
    use admin
       
    #用账号密码登陆
    db.auth("admin", "1234")
       
    #新建自定义的数据库
    use test
       
    #创建使用该数据库的用户
    db.createUser({
        user: 'bookcycle',
        pwd: 'wsn405405',
        roles: [{ role: 'readWrite', db:'test'}]
    })
       
    #退出mongo
    exit
       
    #退出容器
    exit
    
  6. 以后要建立数据库,重复步骤5即可