校園無線網(wǎng)絡(luò)設(shè)計方案seo小白入門教學
目錄
一、NoSQL概述
1、數(shù)據(jù)的高并發(fā)讀寫
2、海量數(shù)據(jù)的高效率存儲和訪問
3、數(shù)據(jù)庫的高擴展和高可用
二、NoSQL的類別
1、鍵值存儲數(shù)據(jù)庫
2、列存儲數(shù)據(jù)庫
3、文檔型數(shù)據(jù)庫
4、圖形化數(shù)據(jù)庫
三、分布式數(shù)據(jù)庫中的CAP原理
1、傳統(tǒng)的ACID
1)、A--原子性
2)、C--一致性
3)、I--隔離性
4)、D--持久性
2、CAP
四、Redis概述
五、Redis特點
六、Redis部署
一、NoSQL概述
NoSQL指非關(guān)系型的數(shù)據(jù)庫,它可以作為關(guān)系型數(shù)據(jù)庫的良好補充,在Web2.0網(wǎng)站的興起,非關(guān)系型的數(shù)據(jù)庫現(xiàn)在成為了一個極其熱門的新領(lǐng)域,非關(guān)系數(shù)據(jù)庫產(chǎn)品的發(fā)展非常迅速。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫只能存儲結(jié)構(gòu)化數(shù)據(jù),對于非結(jié)構(gòu)化的數(shù)據(jù)支持不夠完善。NoSQL數(shù) 據(jù)庫的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重數(shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題。例如
1、數(shù)據(jù)的高并發(fā)讀寫
網(wǎng)站要根據(jù)用戶個性化信息來實時生成動態(tài)頁面和提供動態(tài)信息,所有基本上無法使用動態(tài)頁面靜態(tài)化技術(shù),因此數(shù)據(jù)庫并發(fā)負載非常高,往往要達到每秒上萬次讀寫請求。例如網(wǎng)站的實時統(tǒng)計在線用戶狀態(tài),記錄熱門帖子的點擊次數(shù)。
2、海量數(shù)據(jù)的高效率存儲和訪問
像阿里、騰訊等大型網(wǎng)站的用戶登錄系統(tǒng),在一張海量的關(guān)系數(shù)據(jù)庫,使用SQL語句查找效率是極其低下的。
3、數(shù)據(jù)庫的高擴展和高可用
基于Web網(wǎng)站的架構(gòu)中,數(shù)據(jù)庫是最難進行橫向擴展的,當一個網(wǎng)頁的系統(tǒng)的用戶量不斷增大,對數(shù)據(jù)庫進行升級和擴展時,事很困難的,往往只有停機進行升級維護和數(shù)據(jù)遷移等。因此需要數(shù)據(jù)庫具有高擴展和高可用性。
NoSQL數(shù)據(jù)庫主要應(yīng)用場景:
1). 數(shù)據(jù)模型比較簡單
2). 需要靈活性更強的IT系統(tǒng)
3).?對數(shù)據(jù)庫性能要求較高
4). 不需要高度的數(shù)據(jù)一致性
5).?對于給定key,比較容易映射復雜的環(huán)境
6).?取最新的N個數(shù)據(jù)(如排行榜)
7). 數(shù)據(jù)緩存
二、NoSQL的類別
1、鍵值存儲數(shù)據(jù)庫
這一種數(shù)據(jù)庫類型主要會使用到一個哈希表,這個表中有一個特定的鍵和一個指針指向特定的數(shù)據(jù)。key/value模型對于IT系統(tǒng)來說優(yōu)勢在于簡單,容易部署。
應(yīng)用:內(nèi)容緩存,主要用于處理大量數(shù)據(jù)高訪問負載。
優(yōu)點:快速查詢。
缺點:存儲的數(shù)據(jù)缺少結(jié)構(gòu)化。
2、列存儲數(shù)據(jù)庫
這部分數(shù)據(jù)庫通常事用來對分布式存儲的海量數(shù)據(jù),鍵依然存在,但是它們的特點是指向了多個列。
應(yīng)用:分布式文件。
優(yōu)點:查詢速度快,可擴展性強,更容易進行分布式擴展。
缺點:功能相對局限。
3、文檔型數(shù)據(jù)庫
該類型的數(shù)據(jù)庫模型是版本化的文檔,半結(jié)構(gòu)化的文檔以特定的格式存儲,入JSON。文檔類型數(shù)據(jù)庫可以看作是鍵值數(shù)據(jù)庫的升級版,允許之間嵌套鍵值,而且文檔型數(shù)據(jù)庫比鍵值數(shù)據(jù)庫的查詢效率更高。
應(yīng)用:Web應(yīng)用。
優(yōu)勢:數(shù)據(jù)結(jié)構(gòu)要求不嚴格。
缺點:查詢性能不高,且缺乏統(tǒng)一的查詢語句。
4、圖形化數(shù)據(jù)庫
圖形結(jié)構(gòu)的數(shù)據(jù)同其他行列以及剛性結(jié)構(gòu)的SQL數(shù)據(jù)不同,它是使用靈活的圖形模型,并且能夠擴展到多個服務(wù)器上,NoSQL數(shù)據(jù)庫沒有標準的查詢語言(SQL),因此進行數(shù)據(jù)庫查詢需要定制數(shù)據(jù)模型。許多NoSQL數(shù)據(jù)庫都有REST格式的數(shù)據(jù)接口或者查詢API。
應(yīng)用:社交網(wǎng)絡(luò)。
優(yōu)點:利用圖結(jié)構(gòu)相關(guān)算法。
缺點:需要整個圖做計算才能得出結(jié)果,不容易做分布式的集群方案。
三、分布式數(shù)據(jù)庫中的CAP原理
1、傳統(tǒng)的ACID
關(guān)系型數(shù)據(jù)庫遵循ACID規(guī)則,事務(wù)(transaction)
1)、A--原子性
指事物里所有操作要么都成功,要么都失敗。事物的成功條件是事物中所有操作都成功,如果只要有其中一個操作失敗,整個事物都失敗,需要回滾。
2)、C--一致性
指數(shù)據(jù)庫要一直處于一直的狀態(tài),事物的運行不會該百年數(shù)據(jù)庫原本的一致性約束。
3)、I--隔離性
指并發(fā)的事物之間互不影響,如果一個事物要訪問數(shù)據(jù)正在被另一個事務(wù)修改,只要另外一個事務(wù)未提交,它所訪問的數(shù)據(jù)就不受未提交事務(wù)的影響。
4)、D--持久性
指事物一旦提交,它所作的修改將會永久的保存在數(shù)據(jù)庫中,即使宕機也不會丟失。
2、CAP
CAP理論是指在分布式存儲系統(tǒng)中,最多能實現(xiàn)上面得兩點,由于當前網(wǎng)絡(luò)硬件存在延遲丟包等問題,所以分區(qū)容忍性是我們必須要實現(xiàn)得,因此我們只能在一致性和可用性進行權(quán)衡,沒有NoSQL系統(tǒng)能同時保證這三點。
C--強一致性、A--可用性、P--分區(qū)容錯性
CA--單點集群,滿足一致性,可用性的系統(tǒng),通常在可擴展性上不太強大。如傳統(tǒng)的Oracle數(shù)據(jù)庫。
AP-- 滿足可用性,分區(qū)容忍性的系統(tǒng),通??赡軐σ恢滦砸蟮鸵恍┤?#xff0c;大多數(shù)網(wǎng)站架構(gòu)的選擇。
CP--滿足一致性,分區(qū)容忍必的系統(tǒng),通常性能不是特別高,如Redis、Mongodb
注:在做分布式架構(gòu)的時候必須做出取舍。 一個分布式系統(tǒng)不可能同時很好的滿足一致性,可用性和分區(qū)容錯性這三個需求,最多只能同時較好的滿足兩個。因此一致性和可用性之間取一個平衡。對于大多數(shù)web應(yīng)用,并不需要一致性。
四、Redis概述
Redis(REmote D Ictionary Server 遠程字典服務(wù)器),是完全開源免費的,用C語言編寫的,遵守BSD 協(xié)議,是一個高性能的(key/value)分布式內(nèi)存數(shù)據(jù)庫,基于內(nèi)存運行,并支持持久化的NoSQL數(shù)據(jù)庫, 是當前最熱門的NoSQL數(shù)據(jù)庫之一,也被人們稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器。
Redis是一個開源的高性能鍵值對(Key-Value)數(shù)據(jù)庫。它通過提供多種鍵值數(shù)據(jù)類型來適應(yīng)不同場景 下的存儲需求,目前為止Redis支持的鍵值數(shù)據(jù)類型如下:
字符串類型、散列類型、列表類型、集合類型、有序集合類型。
五、Redis特點
- 性能極高:Redis 讀的速度是 110000 次 /s,寫的速度是 81000 次 /s 。
- 豐富的數(shù)據(jù)類型:Redis 支持二進制案例的 String,List,Hash,Set及 ZSet 數(shù)據(jù)類型操作。
- 原子性:Redis 的所有操作都是原子性的,意思就是要么成功執(zhí)行要么失敗完全不執(zhí)行。單個操作 是原子性的。多個操作也支持事務(wù),即原子性,通過 MULTI 和 EXEC 指令包起來。
- 數(shù)據(jù)持久化:可以將內(nèi)存中的數(shù)據(jù)保存在磁盤中,重啟的時候可以再次加載進行使用
- Redis 提供的API支持:C、C++、C#、Clojure、Java、JavaScript、Lua、PHP、Python、Ruby、 Go、Scala、Perl等多種語言。
- 其他特性:Redis 還支持 publish/subscribe 通知,key 過期等特性。
六、Redis部署
RMP包安裝
1)獲取安裝包
[root@master ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2)安裝
[root@master ~]# yum install redis
3)啟動redis服務(wù)器
[root@master ~]# systemctl start redis
4)查看redis服務(wù)器狀態(tài)
[root@master ~]# systemctl status redis
?5)查看端口
注:redis的默認端口為6379
#方法一
[root@master ~]# netstat -lnupt | grep :6379
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 1991/redis-server 1
#方法二
[root@master ~]# ss -lnupt | grep :6379
tcp LISTEN 0 128 127.0.0.1:6379 *:* users:(("redis-server",pid=1991,fd=4))
#方法三
[root@master ~]# yum install lsof #需要先安裝lsof
[root@master ~]# lsof -i tcp:6379
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
redis-ser 1991 redis 4u IPv4 22990 0t0 TCP localhost:6379 (LISTEN)
6)連接
[root@master ~]# redis-cli -p 6379
127.0.0.1:6379> ping #驗證 出現(xiàn)PONG說明連接成功了
PONG
7)退出
127.0.0.1:6379> quit #或者exit
8)關(guān)閉服務(wù)
root@master ~]# redis-cli shutdown
[root@master ~]# ps -ef | grep redis #進行查看是否關(guān)閉
也可以在服務(wù)器里面關(guān)閉
127.0.0.1:6379> shutdown