十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
NoSQL(NoSQL = Not Only SQL ),意即"不僅僅是SQL"。
指的是非關(guān)系型的數(shù)據(jù)庫,是對不同于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)庫管理系統(tǒng)的統(tǒng)稱。
NoSQL用于超大規(guī)模數(shù)據(jù)的存儲。這些類型的數(shù)據(jù)存儲不需要固定的模式,無需多余操作就可以橫向擴展。
回顧一下關(guān)系型數(shù)據(jù)庫遵循ACID規(guī)則:
事務transaction,和現(xiàn)實世界中的交易很類似,它有如下四個特性:
1、A (Atomicity) 原子性
原子性很容易理解,也就是說事務里的所有操作要么全部做完,要么都不做,事務成功的條件是事務里的所有操作都成功,只要有一個操作失敗,整個事務就失敗,需要回滾。
例如銀行轉(zhuǎn)賬,從A賬戶轉(zhuǎn)100元至B賬戶,分為兩個步驟:1)從A賬戶取100元;2)存入100元至B賬戶。這兩步要么一起完成,要么一起不完成,如果只完成第一步,第二步失敗,錢會莫名其妙少了100元。
2、C (Consistency) 一致性
一致性也比較容易理解,也就是說數(shù)據(jù)庫要一直處于一致的狀態(tài),事務的運行不會改變數(shù)據(jù)庫原本的一致性約束。
例如現(xiàn)有完整性約束a+b=10,如果一個事務改變了a,那么必須得改變b,使得事務結(jié)束后依然滿足a+b=10,否則事務失敗。
3、I (Isolation) 獨立性
所謂的獨立性是指并發(fā)的事務之間不會互相影響,如果一個事務要訪問的數(shù)據(jù)正在被另外一個事務修改,只要另外一個事務未提交,它所訪問的數(shù)據(jù)就不受未提交事務的影響。
例如現(xiàn)有有個交易是從A賬戶轉(zhuǎn)100元至B賬戶,在這個交易還未完成的情況下,如果此時B查詢自己的賬戶,是看不到新增加的100元的。
4、D (Durability) 持久性
持久性是指一旦事務提交后,它所做的修改將會永久的保存在數(shù)據(jù)庫上,即使出現(xiàn)宕機也不會丟失。
兩者的特性:
RDBMS
- 高度組織化結(jié)構(gòu)化數(shù)據(jù)
- 結(jié)構(gòu)化查詢語言(SQL)
- 數(shù)據(jù)和關(guān)系都存儲在單獨的表中
- 數(shù)據(jù)操作語言,數(shù)據(jù)定義語言
- 嚴格的一致性
- 基礎(chǔ)事務
NoSQL
- 不僅僅是SQL
- 沒有聲明性查詢語言
- 沒有預定義的模式
- 鍵 - 值對存儲,列存儲,文檔存儲,圖形數(shù)據(jù)庫
- 最終一致性,而非ACID屬性
- 非結(jié)構(gòu)化和不可預知的數(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/profile3.創(chuàng)建conf文件夾用于存放配置文件,創(chuàng)建data文件夾用于存放數(shù)據(jù),創(chuàng)建logs文件用于存放文件,這些目錄在安裝過程不會自動創(chuà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.log4、編輯配置文件
vi /opt/mongodb/conf/mongodb.conf
dbpath = /opt/mongodb/data logpath = /opt/mongodb/logs/mongod.log pidfilepath = /opt/mongodb/mongo.pid port = 27017 fork = true5、MongoDB設(shè)置為系統(tǒng)服務并且設(shè)置開機啟動
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 esacchmod +x /etc/rc.d/init.d/mongod
6、啟動
service mongod start二、用戶授權(quán)和管理
1、mongodb安裝好后第一次進入是不需要密碼的,也沒有任何用戶,通過shell命令可直接進入,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 沒有無敵用戶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)限方式再次開啟MongoDB,這里注意不要使用kill直接去殺掉mongodb進程,(如果這樣做了,請去data/db目錄下刪除mongo.lock文件),可以使用db.shutdownServer()關(guān)閉。
4、修改配置文件,開啟密碼驗證登錄
vi /opt/mongodb/conf/mongodb.conf
auth = true #開啟service mongod start5、進入mongo shell,使用admin數(shù)據(jù)庫并進行驗證,如果不驗證,是做不了任何操作的
> use admin > db.auth("admin","123456") 1 #認證返回1表示成功 >6、驗證之后還是做不了操作,因為admin只有用戶管理權(quán)限,下面創(chuàng)建用戶,用戶都跟著庫走
> 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登錄進行數(shù)據(jù)庫操作
[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 >另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。