设为首页 收藏本站
查看: 1137|回复: 0

[经验分享] NoSQL之mongodb

[复制链接]

尚未签到

发表于 2018-10-25 07:03:47 | 显示全部楼层 |阅读模式
  NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。
  指的是非关系型的数据库,是对不同于传统的关系型数据库的数据库管理系统的统称。
  NoSQL用于超大规模数据的存储。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
  回顾一下关系型数据库遵循ACID规则:
  事务transaction,和现实世界中的交易很类似,它有如下四个特性:
  1、A (Atomicity) 原子性
  原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。
  例如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了100元。
  2、C (Consistency) 一致性
  一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。
  例如现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。
  3、I (Isolation) 独立性
  所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。
  例如现有有个交易是从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的100元的。
  4、D (Durability) 持久性
  持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。
  两者的特性:
  RDBMS
  - 高度组织化结构化数据
  - 结构化查询语言(SQL)
  - 数据和关系都存储在单独的表中
  - 数据操作语言,数据定义语言
  - 严格的一致性
  - 基础事务
  NoSQL
  - 不仅仅是SQL
  - 没有声明性查询语言
  - 没有预定义的模式
  - 键 - 值对存储,列存储,文档存储,图形数据库
  - 最终一致性,而非ACID属性
  - 非结构化和不可预知的数据
  - CAP定理
  - 高性能,高可用性和可伸缩性
  mongodb 入门
  一、安装配置:
  1.下载安装包并解压到指定安装目录
mkdir /opt/soft/ && cd /opt/soft  
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.9.tgz
  
mkdir /opt/mongodb
  
tar zxvf mongodb-linux-x86_64-3.4.10.tgz
  
mv mongodb-linux-x86_64-3.4.10/* /opt/mongodb/
  2.添加环境变量:
  MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到 PATH 路径中:
echo "export PATH=/opt/mongodb/bin:$PATH">>/etc/profile && source /etc/profile  3.创建conf文件夹用于存放配置文件,创建data文件夹用于存放数据,创建logs文件用于存放文件,这些目录在安装过程不会自动创建,都要手动创建。
mkdir /opt/mongodb/conf  
mkdir /opt/mongodb/data
  
mkdir /opt/mongodb/logs
  
touch /opt/mongodb/conf/mongodb.conf
  
touch /opt/mongodb/logs/mongod.log
  4、编辑配置文件
  vi /opt/mongodb/conf/mongodb.conf
dbpath = /opt/mongodb/data  
logpath = /opt/mongodb/logs/mongod.log
  
pidfilepath = /opt/mongodb/mongo.pid
  
port = 27017
  
fork = true
  5、MongoDB设置为系统服务并且设置开机启动
  vi   /etc/init.d/mongod
#!/bin/sh  
#description: mongodb
  
start() {
  
/opt/mongodb/bin/mongod -f /opt/mongodb/conf/mongodb.conf
  
}
  
stop() {
  
/opt/mongodb/bin/mongod -f /opt/mongodb/conf/mongodb.conf --shutdown
  
}
  
case "$1" in
  
  start)
  
start
  
;;
  
  stop)
  
stop
  
;;
  
  restart)
  
stop
  
start
  
;;
  
  *)
  
echo $"Usage: $0 {start|stop|restart}"
  
exit 1
  
esac
  chmod +x /etc/rc.d/init.d/mongod
  6、启动
service mongod start  二、用户授权和管理
  1、mongodb安装好后第一次进入是不需要密码的,也没有任何用户,通过shell命令可直接进入,cd到mongodb目录下的bin文件夹,执行命令./mongo即可
./mongo  
MongoDB shell version v3.4.9
  
connecting to: mongodb://127.0.0.1:27017
  
MongoDB server version: 3.4.9
  
> show dbs
  
admin  0.000GB
  
local  0.000GB
  
> use test
  
switched to db test
  
>
  2、添加管理用户(mongoDB 没有无敌用户root,只有管理用户的用户 userAdminAnyDatabase)
> use admin  
switched to db admin
  
> db.createUser({user:"admin",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
  Successfully added user: {
  "user" : "admin",
  "roles" : [
  {
  "role" : "userAdminAnyDatabase",
  "db" : "admin"
  }
  ]
  }
  3、添加完管理用户后,关闭MongoDB,并使用权限方式再次开启MongoDB,这里注意不要使用kill直接去杀掉mongodb进程,(如果这样做了,请去data/db目录下删除mongo.lock文件),可以使用db.shutdownServer()关闭。
  4、修改配置文件,开启密码验证登录
  vi /opt/mongodb/conf/mongodb.conf
auth = true #开启service mongod start  5、进入mongo shell,使用admin数据库并进行验证,如果不验证,是做不了任何操作的
> use admin  
> db.auth("admin","123456")
  
1 #认证返回1表示成功
  
>
  6、验证之后还是做不了操作,因为admin只有用户管理权限,下面创建用户,用户都跟着库走
> use mytest  
switched to db mytest
  
> db.createUser({user: "root",pwd: "123456",roles: [{ role: "readWrite", db: "mytest" }]})
  Successfully added user: {
  "user" : "root",
  "roles" : [
  {
  "role" : "readWrite",
  "db" : "mytest"
  }
  ]
  }
  7、使用创建的用户root登录进行数据库操作
[root@bj-web-001 ~]# mongo 127.0.0.1/mytest -uroot -p  
MongoDB shell version v3.4.10
  
Enter password:
  
connecting to: mongodb://127.0.0.1/mytest
  
MongoDB server version: 3.4.10
  
> db
  
mytest
  
> use mytest
  
switched to db mytest
  
> show collections
  
>



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-626068-1-1.html 上篇帖子: MongoDb用户权限控制 下篇帖子: centos 安装mongodb3.4 及用户管理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表