redis | 一互订、NoSql演進(jìn)史

redis系列文章:
https://liudongdong.top/categories/redis
本篇來源:
https://liudongdong.top/archives/redisyi-nosql-yan-jin-shi
公眾號(hào):雨中散步撒哈拉
備注:歡迎公眾號(hào),一起學(xué)習(xí)秤茅,共同進(jìn)步!

一臼闻、數(shù)據(jù)庫演進(jìn)史

1. 單機(jī) MySQL 時(shí)代

在 web 初現(xiàn)崢嶸的那段時(shí)間 勺三,大部分網(wǎng)站都是使用的單機(jī) MySQL 來存儲(chǔ)用戶數(shù)據(jù)愕鼓,由于網(wǎng)站的用戶與訪問量不會(huì)太大顶别,甚至大部分都使用額靜態(tài)網(wǎng)頁,與后端沒有過多的交互拒啰,所以單機(jī) MySQL 足矣

image.png

但是隨著 web 的發(fā)展帶來的用戶群體激增,瓶頸也就隨之而來了完慧,在單機(jī) MySQL 時(shí)代谋旦,造成瓶頸的原因主要有

  1. 數(shù)據(jù)量太大,一個(gè)服務(wù)器硬盤存不下
  2. 讀寫混合屈尼,一個(gè)服務(wù)器性能不足
  3. 數(shù)據(jù)庫索引太大册着,內(nèi)存不足

2. 垂直拆分與緩存時(shí)代

后來,隨著網(wǎng)站訪問量的上升脾歧,使用單機(jī) MySQL 的網(wǎng)站開始出現(xiàn)了性能問題甲捏,因此程序員們將目光從功能轉(zhuǎn)移到了性能上

為了解決單機(jī) MySQL 時(shí)代的不足,又對(duì) MySQL 引入了 Memcached ( 緩存 ) 和垂直拆分 (讀寫分離) 等方案

一個(gè)運(yùn)行中的網(wǎng)站其大部分時(shí)間都是在被用戶進(jìn)行查詢操作鞭执,如果將讀寫拆分到不同的數(shù)據(jù)庫中司顿,就可以提高查詢效率,所以數(shù)據(jù)庫有了垂直拆分的方案兄纺,也就是數(shù)據(jù)庫根據(jù)作用拆分為讀服務(wù)器和寫服務(wù)器大溜,并利用主從復(fù)制保證數(shù)據(jù)正確,同時(shí)利用緩存加快速度

image.png

3. 水平拆分與集群時(shí)代

讀寫分離與分庫分表也滿足不了用戶數(shù)據(jù)的存儲(chǔ)了估脆,這時(shí)就出現(xiàn)了對(duì)服務(wù)器的水平拆分钦奋,多個(gè)主從節(jié)點(diǎn)組成一個(gè)集群節(jié)點(diǎn),而多個(gè)集群節(jié)點(diǎn)就組成了集群

image.png

4. 數(shù)據(jù)爆炸時(shí)代

image.png

在如今這個(gè)信息爆炸的時(shí)代,人們對(duì)于信息的實(shí)時(shí)性要求越來越高付材,互聯(lián)網(wǎng)用戶同樣也越來越多朦拖,因此 MySQL 等關(guān)系型數(shù)據(jù)庫就不夠用了,因?yàn)閿?shù)據(jù)量很大厌衔,數(shù)據(jù)變化也很快

通過對(duì)第三方平臺(tái)的訪問和數(shù)據(jù)抓取璧帝,可以很容易的獲得用戶個(gè)人信息,社交網(wǎng)絡(luò)葵诈,用戶生成的數(shù)據(jù)和用戶的操作日志已經(jīng)成倍的增加裸弦,對(duì)于這些結(jié)構(gòu)并不確定的數(shù)據(jù)如果想要對(duì)這些數(shù)據(jù)進(jìn)行深度的挖掘,那關(guān)系型數(shù)據(jù)庫就已經(jīng)不再實(shí)用了

二作喘、什么是 NoSQL

NoSQL = Not Only SQL理疙,即泛指非關(guān)系型數(shù)據(jù)庫

由于 web2.0 時(shí)代的到來,互聯(lián)網(wǎng)用戶和數(shù)據(jù)量呈幾何式上升泞坦,傳統(tǒng)的非關(guān)系型數(shù)據(jù)庫很難應(yīng)付大型網(wǎng)站的超大數(shù)據(jù)量和高并發(fā)窖贤,這就暴露出來了很多關(guān)系型數(shù)據(jù)庫難以克服的問題

因?yàn)殛P(guān)系型數(shù)據(jù)庫從本質(zhì)上來說就是一張表格,是有固定結(jié)構(gòu)的贰锁,并且所有的數(shù)據(jù)都必須遵循相同的方式進(jìn)行存儲(chǔ)

而非關(guān)系型數(shù)據(jù)庫是非結(jié)構(gòu)化的赃梧,數(shù)據(jù)可以以多種方式存儲(chǔ),即可以面向文檔存儲(chǔ)豌熄,面向圖像存儲(chǔ)授嘀,甚至面向 K-V 存儲(chǔ)等。Java 中的 Map<string, Object> 就是一種經(jīng)典的 "NoSQL"锣险,因?yàn)?Object 類型可以面向任何類型的對(duì)象

1. NoSQL 的特點(diǎn)

  1. 方便擴(kuò)展蹄皱,數(shù)據(jù)之間沒有關(guān)系
  2. 大數(shù)據(jù)量存儲(chǔ),高性能 ( redis 1s 能寫 8w 次芯肤,讀取 11w 條)
  3. 數(shù)據(jù)類型多樣巷折,不需要事先設(shè)計(jì)數(shù)據(jù)庫

2. RDBMS 和 NoSQL 的區(qū)別

RDBMS

  1. RDBMS 使用結(jié)構(gòu)化組織
  2. DDL,DQL崖咨,DML
  3. 數(shù)據(jù)和關(guān)系都存在單獨(dú)的表中锻拘,只能以行和列進(jìn)行存儲(chǔ)
  4. ACID 原則,嚴(yán)格一致性
  5. 事務(wù)
  6. ...

NoSQL

  1. 沒有固定的查詢語言
  2. 存儲(chǔ)方式多樣化:鍵值對(duì)存儲(chǔ) ( redis )击蹲,列存儲(chǔ) ( HBase )署拟,文檔存儲(chǔ) ( MongDB ),圖形數(shù)據(jù)庫
  3. 最終一致性际邻,只需保證數(shù)據(jù)的最終一致
  4. CAP 定理和 Base 理論 ( 異地多活 )
  5. 高性能芯丧,高可用,高可擴(kuò)
  6. ...

在公司中世曾,一定是 NoSQL + RDBMS 一起使用

3. 大數(shù)據(jù)時(shí)代的要求

大數(shù)據(jù)時(shí)代有 3V 和 3高的概念

3V 用來描述大數(shù)據(jù)時(shí)代下數(shù)據(jù)的問題:

  1. 海量 ( volume )
  2. 多樣 ( variety )
  3. 實(shí)時(shí) (velocity)

3高指的是大數(shù)據(jù)時(shí)代缨恒,程序所需要達(dá)到的標(biāo)準(zhǔn):

  1. 高可用
  2. 高并發(fā)
  3. 高性能

三谴咸、阿里巴巴架構(gòu)演進(jìn)

image.png

阿里從 2010 年底,開始實(shí)施第五代網(wǎng)站架構(gòu)改造骗露,阿里巴巴對(duì)第五代架構(gòu)有如下要求

  1. 敏捷:需求的敏捷開發(fā)岭佳,應(yīng)用系統(tǒng)的膨脹和耦合惡化使得架構(gòu)越來越復(fù)雜,該如何保持業(yè)務(wù)的敏捷開發(fā)
  2. 開放:如何提升網(wǎng)站開放性萧锉,吸引第三方開發(fā)者加入到網(wǎng)站的共建
  3. 體驗(yàn):并發(fā)壓力快速增長珊随,用戶對(duì)體驗(yàn)的要求也越來越高

1. 數(shù)據(jù)層:數(shù)據(jù)架構(gòu)的日益復(fù)雜

復(fù)雜的數(shù)據(jù)架構(gòu)圖

image.png
image.png

為了提高訪問速度,一個(gè)商品的不同信息就可能來自不同的數(shù)據(jù)庫

  1. 商品基本信息:名稱柿隙,商家信息等叶洞,可以存儲(chǔ)在關(guān)系型數(shù)據(jù)庫中
  2. 商品的描述,評(píng)論:由于這部分的文字較多禀崖,因此存儲(chǔ)在關(guān)系型數(shù)據(jù)庫中可能會(huì)導(dǎo)致性能下降衩辟,因此使用的是文檔型數(shù)據(jù)庫,如 MongDB
  3. 圖片:分布式文件系統(tǒng)波附。淘寶的 TFS艺晴,阿里云的 OSS,google 的 GFT掸屡,Hadoop 的 HDFS封寞,以及 FastDFS,
  4. 關(guān)鍵字搜索:solr仅财,elasticsearch狈究,淘寶使用的則是 Isearch
  5. 商品熱門的波段信息:內(nèi)存數(shù)據(jù)庫 redis,tair盏求,memache
  6. 商品的交易谦炒,外部支付接口:第三方應(yīng)用

數(shù)據(jù)的多樣性就帶來了很多的問題

  1. 數(shù)據(jù)源繁多,數(shù)據(jù)源改造導(dǎo)致相關(guān)應(yīng)用的大面積重構(gòu)
  2. 跨數(shù)據(jù)源定位問題困難风喇,緩存和性能優(yōu)化難以實(shí)施
  3. 數(shù)據(jù)架構(gòu)復(fù)雜,應(yīng)用需要直接依賴多種類型的數(shù)據(jù)源
  4. ...

為了解決這些問題缕探,阿里巴巴提出的解決訪問是:統(tǒng)一數(shù)據(jù)服務(wù)層 UDSL魂莫,在網(wǎng)站應(yīng)用集群和底層數(shù)據(jù)源之間構(gòu)建一層代理,統(tǒng)一數(shù)據(jù)層

image.png

增加了 UDSL 后的數(shù)據(jù)架構(gòu)如下

image.png

UDSL 屏蔽了底層數(shù)據(jù)庫的差異爹耗,使用統(tǒng)一的操作語言對(duì)不同的數(shù)據(jù)庫進(jìn)行操作耙考,具體細(xì)節(jié)由 UDSL 進(jìn)行維護(hù)

2. 熱點(diǎn)緩存

使用了 UDSL 后,數(shù)據(jù)架構(gòu)雖然得到了大幅的簡化潭兽,但是性能問題依然很嚴(yán)重倦始。網(wǎng)站的數(shù)據(jù)非常龐大,緩存過多數(shù)據(jù)的性價(jià)比不高山卦,因此緩存熱點(diǎn)數(shù)據(jù)成了最好的選擇

因此阿里巴巴開發(fā)了熱點(diǎn)緩存平臺(tái)鞋邑,提供給 UDSL 作為緩存系統(tǒng)

image.png

四、NoSQL 四大類型

1. KV 鍵值對(duì)型

以鍵值對(duì)形式存儲(chǔ)數(shù)據(jù),常見的有 Redis枚碗,Tair逾一,Memecache

2. 文檔型

傳輸格式多為 Bson,和 Json 類似

常見的有 MongDB肮雨,MongDB 是基于分布式文件存儲(chǔ)的數(shù)據(jù)庫遵堵,使用 C++ 編寫,主要用來處理大量的文檔怨规,MongDB 是非關(guān)系型數(shù)據(jù)庫中功能最豐富陌宿,最像關(guān)系型數(shù)據(jù)庫的

此外還有:CouchDB,RavenDB ...... 等

3. 列存儲(chǔ)型

常見的有 HBase波丰,和一些分布式文件系統(tǒng)

4. 圖關(guān)系數(shù)據(jù)庫

圖關(guān)系數(shù)據(jù)庫并不是用來存儲(chǔ)圖片的壳坪,而是用來存儲(chǔ)關(guān)系和構(gòu)建關(guān)系圖譜的,比如:社交網(wǎng)絡(luò)呀舔,朋友圈弥虐,廣告推薦等

常見的有:Neo4j,InfoGrid ...... 等

5.四者對(duì)比

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末媚赖,一起剝皮案震驚了整個(gè)濱河市霜瘪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌惧磺,老刑警劉巖颖对,帶你破解...
    沈念sama閱讀 212,294評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異磨隘,居然都是意外死亡缤底,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,493評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門番捂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來个唧,“玉大人,你說我怎么就攤上這事设预♂慵撸” “怎么了?”我有些...
    開封第一講書人閱讀 157,790評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵鳖枕,是天一觀的道長魄梯。 經(jīng)常有香客問我,道長宾符,這世上最難降的妖魔是什么酿秸? 我笑而不...
    開封第一講書人閱讀 56,595評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮魏烫,結(jié)果婚禮上辣苏,老公的妹妹穿的比我還像新娘肝箱。我一直安慰自己,他們只是感情好考润,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,718評(píng)論 6 386
  • 文/花漫 我一把揭開白布狭园。 她就那樣靜靜地躺著,像睡著了一般糊治。 火紅的嫁衣襯著肌膚如雪唱矛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,906評(píng)論 1 290
  • 那天井辜,我揣著相機(jī)與錄音绎谦,去河邊找鬼。 笑死粥脚,一個(gè)胖子當(dāng)著我的面吹牛窃肠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播刷允,決...
    沈念sama閱讀 39,053評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼冤留,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了树灶?” 一聲冷哼從身側(cè)響起纤怒,我...
    開封第一講書人閱讀 37,797評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎天通,沒想到半個(gè)月后泊窘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,250評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡像寒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,570評(píng)論 2 327
  • 正文 我和宋清朗相戀三年烘豹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诺祸。...
    茶點(diǎn)故事閱讀 38,711評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡携悯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出筷笨,到底是詐尸還是另有隱情蚌卤,我是刑警寧澤,帶...
    沈念sama閱讀 34,388評(píng)論 4 332
  • 正文 年R本政府宣布奥秆,位于F島的核電站,受9級(jí)特大地震影響咸灿,放射性物質(zhì)發(fā)生泄漏构订。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,018評(píng)論 3 316
  • 文/蒙蒙 一避矢、第九天 我趴在偏房一處隱蔽的房頂上張望悼瘾。 院中可真熱鬧囊榜,春花似錦、人聲如沸亥宿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,796評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽烫扼。三九已至曙求,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間映企,已是汗流浹背悟狱。 一陣腳步聲響...
    開封第一講書人閱讀 32,023評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留堰氓,地道東北人挤渐。 一個(gè)月前我還...
    沈念sama閱讀 46,461評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像双絮,于是被迫代替她去往敵國和親浴麻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,595評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容