初識Redis之NoSQL+RDBMS演化史+什麼是NoSQL

小阿鑫丫發表於2021-01-05

前言

提示:本文章是日常學習內容的總結,並非全部原創;僅供大家參考借鑑,並無其他商業用途。Bilibili搜尋關注:狂神說

真正在公司中的實踐:NoSQL + RDBMS 一起使用才是最強的,阿里巴巴的架構演進!
技術沒有高低之分,就看你如何去使用!(提升內功,思維的提高!)
雲端計算的長征之路:阿里雲的這群瘋子

1、NoSQL+RDBMS演化史

1.1 單機MySQL的年代!

90年代,一個基本的網站訪問量一般不會太大,單個資料庫完全足夠!
那個時候,更多的去使用靜態網頁 Html ~ 伺服器根本沒有太大的壓力!
思考一下,這種情況下:整個網站的瓶頸是什麼?
1、資料量如果太大、一個機器放不下了!
2、資料的索引 (B+ Tree),一個機器記憶體也放不下
3、訪問量(讀寫混合),一個伺服器承受不了~
只要你開始出現以上的三種情況之一,那麼你就必須要晉級!

在這裡插入圖片描述

1.2 Memcached(快取) + MySQL + 垂直拆分 (讀寫分離)

網站80%的情況都是在讀,每次都要去查詢資料庫的話就十分的麻煩!
所以說我們希望減輕資料的壓力,我們可以使用快取來保證效率!
發展過程: 優化資料結構和索引–> 檔案快取(IO)—> Memcached(當時最熱門的技術!)

在這裡插入圖片描述

1.3 分庫分表 + 水平拆分 + MySQL叢集

技術和業務在發展的同時,對人的要求也越來越高!
本質:資料庫(讀,寫)
早些年MyISAM: 表鎖,十分影響效率!高併發下就會出現嚴重的鎖問題
轉戰Innodb:行鎖
慢慢的就開始使用分庫分表來解決寫的壓力! MySQL 在哪個年代推出 了表分割槽!這個並沒有多少公司使用!
MySQL 的 叢集,很好滿足哪個年代的所有需求!

在這裡插入圖片描述

1.4 如今最近的年代

2010–2020 十年之間,世界已經發生了翻天覆地的變化;(定位,也是一種資料,音樂,熱榜!)
MySQL 等關係型資料庫就不夠用了!資料量很多,變化很快~!
MySQL 有的使用它來村粗一些比較大的檔案,部落格,圖片!資料庫表很大,效率就低了!
如果有一種資料庫來專門處理這種資料,
MySQL壓力就變得十分小(研究如何處理這些問題!)大資料的IO壓力下,表幾乎沒法更大!

目前一個基本的網際網路專案!

在這裡插入圖片描述

2、什麼是NoSQL

2.1 NoSQL

NoSQL = Not Only SQL (不僅僅是SQL)
關係型資料庫:表格 ,行 ,列
泛指非關係型資料庫的,隨著web2.0網際網路的誕生!傳統的關係型資料庫很難對付web2.0時代!
尤其是超大規模的高併發的社群! 暴露出來很多難以克服的問題,
NoSQL在當今大資料環境下發展的十分迅速,Redis是發展最快的,而且是我們當下必須要掌握的一個技術!
很多的資料型別使用者的個人資訊,社交網路,地理位置。這些資料型別的儲存不需要一個固定的格式!
不需要多月的操作就可以橫向擴充套件的 ! Map<String,Object> 使用鍵值對來控制!

2.2 NoSQL 特點

解耦!
1、方便擴充套件(資料之間沒有關係,很好擴充套件!)
2、大資料量高效能(Redis 一秒寫8萬次,讀取11萬,NoSQL的快取記錄級,是一種細粒度的快取,效能會比較高!)
3、資料型別是多樣型的!(不需要事先設計資料庫!隨取隨用!如果是資料量十分大的表,很多人就無法設計了!)
4、傳統 RDBMS 和 NoSQL

傳統的 RDBMS
結構化組織
SQL
資料和關係都存在單獨的表中 row col
操作操作,資料定義語言
嚴格的一致性
基礎的事務

Nosql
不僅僅是資料
沒有固定的查詢語言
鍵值對儲存,列儲存,文件儲存,圖形資料庫(社交關係)
最終一致性,
CAP定理和BASE (異地多活) 初級架構師!(狂神理念:只要學不死,就往死裡學!)
高效能,高可用,高可擴

2.3 3V+3高

大資料時代的3V:主要是描述問題的

  1. 海量Volume
  2. 多樣Variety
  3. 實時Velocity

大資料時代的3高:主要是對程式的要求
5. 高併發
6. 高可擴
7. 高效能

相關文章