首頁  >  文章  >  資料庫  >  redis學習之簡介NoSQL

redis學習之簡介NoSQL

coldplay.xixi
coldplay.xixi轉載
2021-02-02 17:44:462066瀏覽

redis學習之簡介NoSQL

推薦(免費):redis入門教學

1、互聯網時代背景下大機遇,為何用NoSQL

1.1單機MySQL的美好年代

在90年代,一個網站的瀏覽量一般都不大,用單一資料庫完全可以輕鬆應付。
在那個時候,更多的都是靜態網頁,動態互動類型的網站不多。
redis學習之簡介NoSQL
DAL dal是資料存取層的英文縮寫,也就是為資料存取層(Data Access Layer)

上述架構下,我們來看看資料儲存的瓶頸是什麼?
1.資料量的總大小一個機器放不下時
2.資料的索引(B Tree)一個機器的內存放不下時
3.訪問量(讀寫混合)一個實例不能承受
如果滿足了上述1or3個,進化…

1.2.Memcached(快取) MySQL 垂直拆分

後來,隨著訪問量的上升,幾乎大部分使用MySQL架構的網站在資料庫上都開始出現了效能問題,web程式不再只專注在功能上,同時也在追求效能。 程式設計師開始大量的使用快取技術來緩解資料庫的壓力,優化資料庫的結構和索引。開始比較流行的是透過檔案快取來緩解資料庫壓力,但是當存取量繼續增大的時候,多台web機器透過檔案快取不能共享,大量的小檔案快取也帶了比較高的IO壓力。在這個時候,Memcached就自然的成為一個非常時尚的科技產品。
redis學習之簡介NoSQL
相當於之前dao層直接存取資料庫,現在中間插入了一個cache層。頻繁的資料庫存取造成了效能的降低,我們把其中的一些內容放入快取中,減輕壓力。

1.3.Mysql主從讀寫分離

由於資料庫的寫入壓力增加,Memcached 只能緩解資料庫的讀取壓力。讀寫集中在一個資料庫上讓資料庫不堪重負,大部分網站開始使用主從複製技術來達到讀寫分離,以提高讀寫效能和讀庫的可擴展性Mysql的master-slave模 式成為這個時候的網站標配了。
redis學習之簡介NoSQL
解釋:主庫有一筆記錄更新,為了確保資料的完整性,需要複製到從庫中。讀寫分離:Master/slaver。我們可以將寫的操作放在主庫中,讀的操作放在從庫中。

1.4.分錶分庫水平拆分mysql集群

在Memcached的高速緩存,MySQL的主從複製,讀寫分離的基礎之上,這時MySQL主庫的寫入壓力開始出現瓶頸,而資料量的持續激增,由於MyISAM使用表鎖,在高並發下會出現嚴重的鎖問題,大量的高並發MySQL應用程式開始使用InnoDB引擎取代MyISAM。
同時,開始流行使用分錶分庫來緩解寫入壓力和資料成長的擴展問題。這時候,分錶分庫成了一個熱門技術,是面試的熱門議題也是業界討論的熱門技術議題。也就在這個時候,MySQL推出了還不太穩定的表分區,這也為技術實力一般的公司帶來了希望。雖然MySQL推出了MySQL Cluster叢集,但效能也無法很好滿足網路的要求,只是在高可靠性上提供了非常大的保證。
redis學習之簡介NoSQL
表鎖定和行鎖定?
分庫分錶 1-3000進1號庫。 3001-6000進2號庫。等等

1.5.MySQL的擴展性瓶頸

MySQL資料庫也經常儲存一些大文本字段,導致資料庫表非常的大,在做資料庫恢復的時候就導致非常的慢,不容易快速恢復資料庫。例如1000萬4KB大小的文字就接近40GB的大小, 如果能把這些資料從MySQL省去,MySQL將變得非常小的。關係資料庫很強大,但是它並不能很好的應付所有的應用場景。 MySQL的擴展性差(需要複雜的技術來實現),大數據下IO壓力大,表結構更改困難,正是目前使用MySOL的開發人員面臨的問題。

1.6.今天是什麼樣子? ?

redis學習之簡介NoSQL
防火牆-nginx-Tomcat集群

1.7.為什麼用NoSQL

今天我們可以透過第三方平台( 如: Google,Facebook等) 可以輕鬆的存取和抓取資料。用戶的個人信息,社交網絡,地理位置,用戶生成的數據和用戶操作日誌已經成倍的增加。我們如果要對這些使用者資料進行挖掘,那麼SQL資料庫已經不適合這些應用了,NoSQL資料庫的發展卻能很好的處理這些大的資料。
redis學習之簡介NoSQL

2.是什麼

#NoSQL(NoSQL = Not Only SQL),意思是“不只是SQL”,泛指非關係型的資料庫。隨著網路web2.0網站的興起,傳統的關係資料庫在應付web2.0網站,特別是超大規模和高並發的SNS類型的web2.0純動態網站已經顯得力不從心,暴露了很多難以克服的問題,而非關係型的資料庫則由於其本身的特徵而得到了非常迅速的發展。 NoSQL 資料庫的產生就是為了解決大規模資料集多重資料種類所帶來的挑戰,尤其是大數據應用難題,包括超大規模資料的儲存

(例如Google或Facebook每天為他們的用戶收集萬億位元的資料)。 這些類型的資料儲存不需要固定的模式,無需多餘操作就可以橫向擴展

3.能幹嘛

易擴展

#NoSQL資料庫種類繁多,但是一個共同的特點都是去掉關係資料庫的關係型特性。數據之間無關係,這樣就非常容易擴展。也無形之間,在架構的層面上帶來了可擴展的能力。

大數據量高效能

NoSQL資料庫都具有非常高的讀寫效能,尤其在大數據量下,同樣表現優異。
這得益於它的無關聯性,資料庫的結構簡單。
一般MySQL使用Query Cache,每次表格的更新Cache就失效,是一種大粒度的Cache,在針對web2.0的互動頻繁的應用,Cache效能不高。
而NoSQL的Cache是​​記錄級的,是一種細粒度的Cache,所以NoSQL在這個層面上來說就要效能高很多了。

多樣化且靈活的資料模型

NoSQL無需事先為要儲存的資料建立字段,隨時可以儲存自訂的資料格式。
而在關聯式資料庫裡,增刪欄位是一件非常麻煩的事情。如果是非常大數據量的表,增加欄位簡直就是一場惡夢。

傳統RDBMS VS NOSQL

RDBMS
高度組織化結構化資料
結構化查詢語言(SQL)
資料和關聯都存儲在單獨的表中
資料操縱語言,資料定義語言
嚴格的一致性
基礎事務
NoSQL
代表著不只是SQL
沒有聲明性查詢語言
沒有預先定義的模式
鍵-值對存儲,列存儲,文檔存儲,圖形資料庫
最終一致性,而非ACID屬性
非結構化和不可預測的資料:
CAP定理
高效能,高可用性和可擴展性

4.有哪些NoSQL

Redis(資料型別和快取,各方面都比較優秀)
Memcached(高速緩存)
MongDB(最類似關係型資料庫)

5.怎麼玩

KV
Cache
Persistence

談談你對Redis的理解,就說KV-CACHE-PERSISITENCE

3V 3高

#大數據時代的3V:
海量Volume
多樣化Variety
實時Velocity
系統上出現一些問題的描述,淘寶雙十一海量的數據。一條微博,文字域,視訊域和背景域等等。多樣化。 12306實時性要求高。做不到絕對的即時

網路需求的3高:
高並發
高可括
高效能
系統要支援高並發,如12306.四種方式獲得線程。
可擴展性,橫向和縱向。橫向,一台機器不夠,再加機器。
效能要求高

更多相關學習敬請造訪redis欄位。 。

以上是redis學習之簡介NoSQL的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除