NoSQL之mongodb
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-Ohttps://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.9.tgz mkdir/opt/mongodb tarzxvfmongodb-linux-x86_64-3.4.10.tgz mvmongodb-linux-x86_64-3.4.10/*/opt/mongodb/ 2.添加环境变量: MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到 PATH 路径中: echo"exportPATH=/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}" exit1 esac chmod +x /etc/rc.d/init.d/mongod 6、启动 servicemongodstart 二、用户授权和管理 1、mongodb安装好后第一次进入是不需要密码的,也没有任何用户,通过shell命令可直接进入,cd到mongodb目录下的bin文件夹,执行命令./mongo即可 ./mongo MongoDBshellversionv3.4.9 connectingto:mongodb://127.0.0.1:27017 MongoDBserverversion:3.4.9 >showdbs admin0.000GB local0.000GB >usetest switchedtodbtest > 2、添加管理用户(mongoDB 没有无敌用户root,只有管理用户的用户 userAdminAnyDatabase) >useadmin switchedtodbadmin >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#开启 servicemongodstart 5、进入mongo shell,使用admin数据库并进行验证,如果不验证,是做不了任何操作的 >useadmin >db.auth("admin","123456") 1#认证返回1表示成功 > 6、验证之后还是做不了操作,因为admin只有用户管理权限,下面创建用户,用户都跟着库走 >usemytest switchedtodbmytest >db.createUser({user:"root",roles:[{role:"readWrite",db:"mytest"}]}) Successfully added user: { "user" : "root", "roles" : [ { "role" : "readWrite", "db" : "mytest" } ] } 7、使用创建的用户root登录进行数据库操作 [root@bj-web-001~]#mongo127.0.0.1/mytest-uroot-p MongoDBshellversionv3.4.10 Enterpassword: connectingto:mongodb://127.0.0.1/mytest MongoDBserverversion:3.4.10 >db mytest >usemytest switchedtodbmytest >showcollections > (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |