數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì)與實(shí)踐_第1頁(yè)
數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì)與實(shí)踐_第2頁(yè)
數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì)與實(shí)踐_第3頁(yè)
數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì)與實(shí)踐_第4頁(yè)
數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì)與實(shí)踐_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì)與實(shí)踐一、用戶中心用戶中心是一個(gè)常見(jiàn)業(yè)務(wù),主要提供用戶注冊(cè)、登錄、信息查詢與修改的服務(wù),其核心元數(shù)據(jù)為:User(uid, uname, passwd, sex, age,nickname, )其中:uid為用戶ID,主鍵uname, passwd, sex, age, nickname, 等為用戶的屬性數(shù)據(jù)庫(kù)設(shè)計(jì)上,一般來(lái)說(shuō)在業(yè)務(wù)初期,單庫(kù)單表就能夠搞定這個(gè)需求。二、圖示說(shuō)明為了方便大家理解,后文圖片說(shuō)明較多,其中:“灰色”方框,表示service,服務(wù)“紫色”圓框,標(biāo)識(shí)master,主庫(kù)“粉色”圓框,表示slave,從庫(kù)三、單庫(kù)架構(gòu)最常見(jiàn)的架構(gòu)設(shè)計(jì)如上:user-servi

2、ce:用戶中心服務(wù),對(duì)調(diào)用者提供友好的RPC接口user-db:一個(gè)庫(kù)進(jìn)行數(shù)據(jù)存儲(chǔ)四、分組架構(gòu)什么是分組?答:分組架構(gòu)是最常見(jiàn)的一主多從,主從同步,讀寫分離數(shù)據(jù)庫(kù)架構(gòu):user-service:依舊是用戶中心服務(wù)user-db-M(master):主庫(kù),提供數(shù)據(jù)庫(kù)寫服務(wù)user-db-S(slave):從庫(kù),提供數(shù)據(jù)庫(kù)讀服務(wù)主和從構(gòu)成的數(shù)據(jù)庫(kù)集群稱為“組”。分組有什么特點(diǎn)?答:同一個(gè)組里的數(shù)據(jù)庫(kù)集群:主從之間通過(guò)binlog進(jìn)行數(shù)據(jù)同步多個(gè)實(shí)例數(shù)據(jù)庫(kù)結(jié)構(gòu)完全相同多個(gè)實(shí)例存儲(chǔ)的數(shù)據(jù)也完全相同,本質(zhì)上是將數(shù)據(jù)進(jìn)行復(fù)制分組架構(gòu)究竟解決什么問(wèn)題?答:大部分互聯(lián)網(wǎng)業(yè)務(wù)讀多寫少,數(shù)據(jù)庫(kù)的讀往往最先成為性能

3、瓶頸,如果希望:線性提升數(shù)據(jù)庫(kù)讀性能通過(guò)消除讀寫鎖沖突提升數(shù)據(jù)庫(kù)寫性能通過(guò)冗余從庫(kù)實(shí)現(xiàn)數(shù)據(jù)的“讀高可用”此時(shí)可以使用分組架構(gòu),需要注意的是,分組架構(gòu)中,數(shù)據(jù)庫(kù)的主庫(kù)依然是寫單點(diǎn)。一句話總結(jié),分組解決的是“數(shù)據(jù)庫(kù)讀寫高并發(fā)量高”問(wèn)題,所實(shí)施的架構(gòu)設(shè)計(jì)。五、分片架構(gòu)什么是分片?答:分片架構(gòu)是大伙常說(shuō)的水平切分(sharding)數(shù)據(jù)庫(kù)架構(gòu):user-service:依舊是用戶中心服務(wù)user-db1:水平切分成2份中的第一份user-db2:水平切分成2份中的第二份分片后,多個(gè)數(shù)據(jù)庫(kù)實(shí)例也會(huì)構(gòu)成一個(gè)數(shù)據(jù)庫(kù)集群。水平切分,到底是分庫(kù)還是分表?答:強(qiáng)烈建議分庫(kù),而不是分表,因?yàn)椋悍直硪廊还靡粋€(gè)數(shù)據(jù)庫(kù)

4、文件,仍然有磁盤IO的競(jìng)爭(zhēng)分庫(kù)能夠很容易的將數(shù)據(jù)遷移到不同數(shù)據(jù)庫(kù)實(shí)例,甚至數(shù)據(jù)庫(kù)機(jī)器上,擴(kuò)展性更好水平切分,用什么算法?答:常見(jiàn)的水平切分算法有“范圍法”和“哈希法”:范圍法如上圖:以用戶中心的業(yè)務(wù)主鍵uid為劃分依據(jù),將數(shù)據(jù)水平切分到兩個(gè)數(shù)據(jù)庫(kù)實(shí)例上去:user-db1:存儲(chǔ)0到1千萬(wàn)的uid數(shù)據(jù)user-db2:存儲(chǔ)0到2千萬(wàn)的uid數(shù)據(jù)哈希法如上圖:也是以用戶中心的業(yè)務(wù)主鍵uid為劃分依據(jù),將數(shù)據(jù)水平切分到兩個(gè)數(shù)據(jù)庫(kù)實(shí)例上去:user-db1:存儲(chǔ)uid取模得1的uid數(shù)據(jù)user-db2:存儲(chǔ)uid取模得0的uid數(shù)據(jù)這兩種方法在互聯(lián)網(wǎng)都有使用,其中哈希法使用較為廣泛。分片有什么特點(diǎn)?

5、答:同一個(gè)分片里的數(shù)據(jù)庫(kù)集群:多個(gè)實(shí)例之間本身不直接產(chǎn)生聯(lián)系,不像主從間有binlog同步多個(gè)實(shí)例數(shù)據(jù)庫(kù)結(jié)構(gòu),也完全相同多個(gè)實(shí)例存儲(chǔ)的數(shù)據(jù)之間沒(méi)有交集,所有實(shí)例間數(shù)據(jù)并集構(gòu)成全局?jǐn)?shù)據(jù)分片架構(gòu)究竟解決什么問(wèn)題?答:大部分互聯(lián)網(wǎng)業(yè)務(wù)數(shù)據(jù)量很大,單庫(kù)容量容易成為瓶頸,此時(shí)通過(guò)分片可以:線性提升數(shù)據(jù)庫(kù)寫性能,需要注意的是,分組架構(gòu)是不能線性提升數(shù)據(jù)庫(kù)寫性能的降低單庫(kù)數(shù)據(jù)容量一句話總結(jié),分片解決的是“數(shù)據(jù)庫(kù)數(shù)據(jù)量大”問(wèn)題,所實(shí)施的架構(gòu)設(shè)計(jì)。六、分組+分片架構(gòu)如果業(yè)務(wù)讀寫并發(fā)量很高,數(shù)據(jù)量也很大,通常需要實(shí)施分組+分片的數(shù)據(jù)庫(kù)架構(gòu):通過(guò)分片來(lái)降低單庫(kù)的數(shù)據(jù)量,線性提升數(shù)據(jù)庫(kù)的寫性能通過(guò)分組來(lái)線性提升數(shù)據(jù)庫(kù)

6、的讀性能,保證讀庫(kù)的高可用七、垂直切分除了水平切分,垂直切分也是一類常見(jiàn)的數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì),垂直切分一般和業(yè)務(wù)結(jié)合比較緊密。還是以用戶中心為例,可以這么進(jìn)行垂直切分:User(uid, uname, passwd, sex, age, )User_EX(uid, intro, sign, )垂直切分開的表,主鍵都是uid登錄名,密碼,性別,年齡等屬性放在一個(gè)垂直表(庫(kù))里自我介紹,個(gè)人簽名等屬性放在另一個(gè)垂直表(庫(kù))里如何進(jìn)行垂直切分?答:根據(jù)業(yè)務(wù)對(duì)數(shù)據(jù)進(jìn)行垂直切分時(shí),一般要考慮屬性的“長(zhǎng)度”和“訪問(wèn)頻度”兩個(gè)因素:長(zhǎng)度較短,訪問(wèn)頻率較高的放在一起長(zhǎng)度較長(zhǎng),訪問(wèn)頻度較低的放在一起這是因?yàn)?,?shù)據(jù)庫(kù)會(huì)以行(row)為單位,將數(shù)load到內(nèi)存(buffer)里,在內(nèi)存容量有限的情況下,長(zhǎng)度短且訪問(wèn)頻度高的屬性,內(nèi)存能夠load更多的數(shù)據(jù),命中率會(huì)更高,磁盤IO會(huì)減少,數(shù)據(jù)庫(kù)的性能會(huì)提升。垂直切分有什么特點(diǎn)?答:垂直切分和水平切有相似的地方,又不太相同:多個(gè)實(shí)例之間也不直接產(chǎn)生聯(lián)系,即沒(méi)有binlog同步多個(gè)實(shí)例數(shù)據(jù)庫(kù)結(jié)構(gòu),都不一樣多個(gè)實(shí)例存儲(chǔ)的數(shù)據(jù)之間至少有一列交集,一般來(lái)說(shuō)是業(yè)務(wù)主鍵,所有實(shí)例間數(shù)據(jù)并集構(gòu)成全局?jǐn)?shù)據(jù)垂直切分解決什么問(wèn)題?答:垂直切分即可以降低單庫(kù)的數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論