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
-
拉取镜像
docker pull docker.io/mongo
-
创建用于分配账户的容器
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容器,以前建立的用户依然存在,数据也可以访问 -
进入容器
docker exec -it mongo /bin/bash
-
设置管理员
#进入mongo mongo #看看当前有哪些数据库 show dbs #建立或使用admin数据库 use admin #创建管理员账户 db.createUser({ user: 'admin', pwd: '1234', roles: [{ role: 'userAdminAnyDatabase', db:'admin'}] }) #验证第管理员添加是否成功, 如果返回1,则表示成功。 db.auth("admin", "1234")
-
建立其他数据库
#用管理员账户登陆 use admin #用账号密码登陆 db.auth("admin", "1234") #新建自定义的数据库 use test #创建使用该数据库的用户 db.createUser({ user: 'bookcycle', pwd: 'wsn405405', roles: [{ role: 'readWrite', db:'test'}] }) #退出mongo exit #退出容器 exit
-
以后要建立数据库,重复步骤5即可