溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

NoSQL之mongodb

發(fā)布時(shí)間:2020-07-04 01:05:41 來(lái)源:網(wǎng)絡(luò) 閱讀:715 作者:opsdev 欄目:MongoDB數(shù)據(jù)庫(kù)

NoSQL(NoSQL = Not Only SQL ),意即"不僅僅是SQL"。

指的是非關(guān)系型的數(shù)據(jù)庫(kù),是對(duì)不同于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)管理系統(tǒng)的統(tǒng)稱。

NoSQL用于超大規(guī)模數(shù)據(jù)的存儲(chǔ)。這些類型的數(shù)據(jù)存儲(chǔ)不需要固定的模式,無(wú)需多余操作就可以橫向擴(kuò)展。


回顧一下關(guān)系型數(shù)據(jù)庫(kù)遵循ACID規(guī)則:

事務(wù)transaction,和現(xiàn)實(shí)世界中的交易很類似,它有如下四個(gè)特性:

1、A (Atomicity) 原子性

原子性很容易理解,也就是說(shuō)事務(wù)里的所有操作要么全部做完,要么都不做,事務(wù)成功的條件是事務(wù)里的所有操作都成功,只要有一個(gè)操作失敗,整個(gè)事務(wù)就失敗,需要回滾。

例如銀行轉(zhuǎn)賬,從A賬戶轉(zhuǎn)100元至B賬戶,分為兩個(gè)步驟:1)從A賬戶取100元;2)存入100元至B賬戶。這兩步要么一起完成,要么一起不完成,如果只完成第一步,第二步失敗,錢會(huì)莫名其妙少了100元。

2、C (Consistency) 一致性

一致性也比較容易理解,也就是說(shuō)數(shù)據(jù)庫(kù)要一直處于一致的狀態(tài),事務(wù)的運(yùn)行不會(huì)改變數(shù)據(jù)庫(kù)原本的一致性約束。

例如現(xiàn)有完整性約束a+b=10,如果一個(gè)事務(wù)改變了a,那么必須得改變b,使得事務(wù)結(jié)束后依然滿足a+b=10,否則事務(wù)失敗。

3、I (Isolation) 獨(dú)立性

所謂的獨(dú)立性是指并發(fā)的事務(wù)之間不會(huì)互相影響,如果一個(gè)事務(wù)要訪問(wèn)的數(shù)據(jù)正在被另外一個(gè)事務(wù)修改,只要另外一個(gè)事務(wù)未提交,它所訪問(wèn)的數(shù)據(jù)就不受未提交事務(wù)的影響。

例如現(xiàn)有有個(gè)交易是從A賬戶轉(zhuǎn)100元至B賬戶,在這個(gè)交易還未完成的情況下,如果此時(shí)B查詢自己的賬戶,是看不到新增加的100元的。

4、D (Durability) 持久性

持久性是指一旦事務(wù)提交后,它所做的修改將會(huì)永久的保存在數(shù)據(jù)庫(kù)上,即使出現(xiàn)宕機(jī)也不會(huì)丟失。


兩者的特性:

RDBMS 

- 高度組織化結(jié)構(gòu)化數(shù)據(jù) 

- 結(jié)構(gòu)化查詢語(yǔ)言(SQL)

- 數(shù)據(jù)和關(guān)系都存儲(chǔ)在單獨(dú)的表中 

- 數(shù)據(jù)操作語(yǔ)言,數(shù)據(jù)定義語(yǔ)言 

- 嚴(yán)格的一致性

- 基礎(chǔ)事務(wù)

NoSQL 

- 不僅僅是SQL

- 沒(méi)有聲明性查詢語(yǔ)言

- 沒(méi)有預(yù)定義的模式

- 鍵 - 值對(duì)存儲(chǔ),列存儲(chǔ),文檔存儲(chǔ),圖形數(shù)據(jù)庫(kù)

- 最終一致性,而非ACID屬性

- 非結(jié)構(gòu)化和不可預(yù)知的數(shù)據(jù)

- 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.添加環(huán)境變量:

 MongoDB 的可執(zhí)行文件位于 bin 目錄下,所以可以將其添加到 PATH 路徑中:

 echo "export PATH=/opt/mongodb/bin:$PATH">>/etc/profile && source /etc/profile

3.創(chuàng)建conf文件夾用于存放配置文件,創(chuàng)建data文件夾用于存放數(shù)據(jù),創(chuàng)建logs文件用于存放文件,這些目錄在安裝過(guò)程不會(huì)自動(dòng)創(chuàng)建,都要手動(dòng)創(chuàng)建。

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設(shè)置為系統(tǒng)服務(wù)并且設(shè)置開(kāi)機(jī)啟動(dòng)

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、啟動(dòng)

service mongod start

二、用戶授權(quán)和管理

1、mongodb安裝好后第一次進(jìn)入是不需要密碼的,也沒(méi)有任何用戶,通過(guò)shell命令可直接進(jìn)入,cd到mongodb目錄下的bin文件夾,執(zhí)行命令./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 沒(méi)有無(wú)敵用戶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、添加完管理用戶后,關(guān)閉MongoDB,并使用權(quán)限方式再次開(kāi)啟MongoDB,這里注意不要使用kill直接去殺掉mongodb進(jìn)程,(如果這樣做了,請(qǐng)去data/db目錄下刪除mongo.lock文件),可以使用db.shutdownServer()關(guān)閉。


4、修改配置文件,開(kāi)啟密碼驗(yàn)證登錄

vi /opt/mongodb/conf/mongodb.conf

auth = true #開(kāi)啟
service mongod start

5、進(jìn)入mongo shell,使用admin數(shù)據(jù)庫(kù)并進(jìn)行驗(yàn)證,如果不驗(yàn)證,是做不了任何操作的

> use admin
> db.auth("admin","123456")
1 #認(rèn)證返回1表示成功
>

6、驗(yàn)證之后還是做不了操作,因?yàn)閍dmin只有用戶管理權(quán)限,下面創(chuàng)建用戶,用戶都跟著庫(kù)走

> 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、使用創(chuàng)建的用戶root登錄進(jìn)行數(shù)據(jù)庫(kù)操作

[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
>
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI