數(shù)據(jù)庫大型應(yīng)用解決方案_第1頁
數(shù)據(jù)庫大型應(yīng)用解決方案_第2頁
數(shù)據(jù)庫大型應(yīng)用解決方案_第3頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、隨著互聯(lián)網(wǎng)應(yīng)用的廣泛普及,海量數(shù)據(jù)的存儲和訪問成為了系統(tǒng)設(shè)計(jì)的瓶頸問題。對于一個(gè)大型的互聯(lián)網(wǎng)應(yīng)用,每天百萬級甚至上億的PV無疑對數(shù)據(jù)庫造成了相當(dāng)高的負(fù)載。對于系統(tǒng)的穩(wěn)定性和擴(kuò)展性造成了極大的問題。more一、負(fù)載均衡技術(shù)負(fù)載均衡集群是由一組相互獨(dú)立的計(jì)算機(jī)系統(tǒng)構(gòu)成,通過常規(guī)網(wǎng)絡(luò)或?qū)S镁W(wǎng)絡(luò)進(jìn)行連接,由路由器銜接在一起,各節(jié)點(diǎn)相互協(xié)作、共同負(fù)載、均衡壓力,對客戶端來說,整個(gè)群集可以視為 一臺具有超高性能的獨(dú)立服務(wù)器。1實(shí)現(xiàn)原理實(shí)現(xiàn)數(shù)據(jù)庫的負(fù)載均衡技術(shù),首先要有一個(gè)可以控制連接數(shù)據(jù)庫的控制端。在這里,它截?cái)嗔藬?shù)據(jù)庫和程序的直接連接,由所有的程序來訪問這個(gè)中間層,然后再由中間層來訪問數(shù)據(jù)庫。這樣,我們

2、就可以具體控制訪問某個(gè)數(shù)據(jù)庫了,然后還可以根據(jù)數(shù)據(jù)庫的當(dāng)前負(fù)載采取有效的均衡策略,來調(diào)整每次連接到哪個(gè)數(shù)據(jù)庫。2、實(shí)現(xiàn)多據(jù)庫數(shù)據(jù)同步對于負(fù)載均衡,最重要的就是所有服務(wù)器的數(shù)據(jù)都是實(shí)時(shí)同步的。這是一個(gè)集群所必需的,因?yàn)?,如果?shù)不據(jù)實(shí)時(shí)、不同步,那么用戶從一臺服務(wù)器讀岀的數(shù)據(jù),就有別于從另一臺服務(wù)器讀出的數(shù)據(jù),這是不能允許的。所以必須實(shí)現(xiàn)數(shù)據(jù)庫的數(shù)據(jù)同步。這樣,在查詢的時(shí)候就可以 有多個(gè)資源,實(shí)現(xiàn)均衡。比較常用的方法是Moebius for SQLServer集群,Moebius for SQLServer集群采用將核心程序駐留在每個(gè)機(jī)器的數(shù)據(jù)庫中的辦法,這個(gè)核心程序稱為 Moebius forS

3、QL Server中間件,主要作用是監(jiān)測數(shù)據(jù)庫內(nèi)數(shù)據(jù)的變化并將變化的數(shù)據(jù)同步到其他數(shù)據(jù)庫中。數(shù)據(jù)同步完成后客戶端才會得到響應(yīng),同步過程是并發(fā)完成的,所以同步到多個(gè)數(shù)據(jù)庫和同步到一個(gè)數(shù)據(jù)庫的時(shí)間基本相等;另外同步的過程是在事務(wù)的環(huán)境下完成的,保證了多份數(shù)據(jù)在任何時(shí)刻數(shù)據(jù)的一致性。正因?yàn)镸oebius中間件宿主在數(shù)據(jù)庫中的創(chuàng)新,讓中間件不但能知道數(shù)據(jù)的變化,而且知道引起數(shù)據(jù)變化的SQL語句,根據(jù)SQL語句的類型智能的采取不同的數(shù)據(jù)同步的策略以保證數(shù)據(jù)同步成本的最小化。數(shù)據(jù)條數(shù)很少,數(shù)據(jù)內(nèi)容也不大,則直接同步數(shù)據(jù)數(shù)據(jù)條數(shù)很少,但是里面包含大數(shù)據(jù)類型,比如文本, 然后再同步,從而減少網(wǎng)絡(luò)帶寬的占用和傳

4、輸所用的時(shí)間。二進(jìn)制數(shù)據(jù)等,則先對數(shù)據(jù)進(jìn)行壓縮數(shù)據(jù)條數(shù)很多,此時(shí)中間件會拿到造成數(shù)據(jù)變化的SQL語句,然后對SQL語句進(jìn)行解析,SQL語句到其他的數(shù)據(jù)庫中。此種情況分析其執(zhí)行計(jì)劃和執(zhí)行成本, 并選擇是同步數(shù)據(jù)還是同步 應(yīng)用在對表結(jié)構(gòu)進(jìn)行調(diào)整或者批量更改數(shù)據(jù)的時(shí)候非常有用。3、優(yōu)缺點(diǎn)(1) 擴(kuò)展性強(qiáng):當(dāng)系統(tǒng)要更高數(shù)據(jù)庫處理速度時(shí),只要簡單地增加數(shù)據(jù)庫服務(wù)器就可以得到擴(kuò)展。(2) 可維護(hù)性:當(dāng)某節(jié)點(diǎn)發(fā)生故障時(shí),系統(tǒng)會自動檢測故障并轉(zhuǎn)移故障節(jié)點(diǎn)的應(yīng)用,保證數(shù)據(jù)庫的持續(xù)工作。(3) 安全性:因?yàn)閿?shù)據(jù)會同步的多臺服務(wù)器上,可以實(shí)現(xiàn)數(shù)據(jù)集的冗余,通過多份數(shù)據(jù)來保證安全性。另外它成功地將數(shù)據(jù)庫放到了內(nèi)網(wǎng)之中

5、,更好地保護(hù)了數(shù)據(jù)庫的安全性。(4) 易用性:對應(yīng)用來說完全透明,集群暴露岀來的就是一個(gè)IP(1) 不能夠按照Web服務(wù)器的處理能力分配負(fù)載。(2) 負(fù)載均衡器(控制端)故障,會導(dǎo)致整個(gè)數(shù)據(jù)庫系統(tǒng)癱瘓。、數(shù)據(jù)庫的讀寫分離1,實(shí)現(xiàn)原理:讀寫分離簡單的說是把對數(shù)據(jù)庫讀和寫的操作分開對應(yīng)不同的數(shù)據(jù)庫服務(wù)器,這樣能有效地減輕數(shù)據(jù)庫壓力,也能減輕io壓力。主數(shù)據(jù)庫提供寫 操作,從數(shù)據(jù)庫提供讀操作,其實(shí)在很多系統(tǒng)中,主要是讀的操作。當(dāng)主數(shù)據(jù)庫進(jìn)行寫操作時(shí),數(shù)據(jù)要同步到從的數(shù)據(jù)庫,樣才能有效保證數(shù)據(jù)庫完整性。Portal LayerApplication LayeWriteRadDatabase數(shù)據(jù)庫BIG

6、 IP 64如用那宜擺機(jī)(ebay的讀寫比率是 260:1,ebay 的讀寫分離)應(yīng)用程序服務(wù)器(微軟數(shù)據(jù)庫分發(fā))2,實(shí)現(xiàn)方法: 在MS Sql server 中可以使用發(fā)布定義的方式實(shí)現(xiàn)數(shù)據(jù)庫復(fù)制,實(shí)現(xiàn)讀寫分離,復(fù)制是將一組數(shù)據(jù)從一個(gè)數(shù)據(jù)源拷貝到多個(gè)數(shù)據(jù)源的技術(shù),是將一份數(shù)據(jù)發(fā)布到多個(gè)存儲站點(diǎn)上的有效方式。使用復(fù)制技術(shù),用戶可以將一份數(shù)據(jù)發(fā)布到多臺服務(wù)器上。復(fù)制技術(shù)可以確保分布在不同地點(diǎn)的數(shù)據(jù)自動同步更新,從而保證數(shù)據(jù)的一致性。SQL SERVER制技術(shù)類型有三種,分別是:快照復(fù)制、事務(wù)復(fù)制、合并復(fù)制。SQL SERVER主要采用岀版物、訂閱的方式來處理復(fù)制。源數(shù)據(jù)所在的服務(wù)器是岀版服務(wù)器,

7、負(fù)責(zé)發(fā)表數(shù)據(jù)。岀版服務(wù)器把要發(fā)表的數(shù)據(jù)的所有改變情況的拷貝復(fù)制到分發(fā)服務(wù) 器,分發(fā)服務(wù)器包含有一個(gè)分發(fā)數(shù)據(jù)庫,可接收數(shù)據(jù)的所有改變, 并保存這些改變,再把這些改變分發(fā)給訂閱服務(wù)器。3,優(yōu)缺點(diǎn)( 1)數(shù)據(jù)的實(shí)時(shí)性差:數(shù)據(jù)不是實(shí)時(shí)同步到自讀服務(wù)器上的,當(dāng)數(shù)據(jù)寫入主服務(wù)器后,要 在下次同步后才能查詢到。( 2)數(shù)據(jù)量大時(shí)同步效率差:單表數(shù)據(jù)量過大時(shí)插入和更新因索引,磁盤IO 等問題,性能會變的很差。( 3)同時(shí)連接多個(gè)(至少兩個(gè))數(shù)據(jù)庫:至少要連接到兩個(gè)數(shù)據(jù)數(shù)據(jù)庫,實(shí)際的讀寫操作 是在程序代碼中完成的,容易引起混亂( 4)讀具有高性能高可靠性和可伸縮:只讀服務(wù)器,因?yàn)闆]有寫操作,會大大減輕磁盤IO等

8、性能問題, 大大提高效率; 只讀服務(wù)器可以采用負(fù)載均衡, 主數(shù)據(jù)庫發(fā)布到多個(gè)只讀服務(wù)器上 實(shí)現(xiàn)讀操作的可伸縮性。三、數(shù)據(jù)庫拆分(分布式)通過某種特定的條件, 將存放在同一個(gè)數(shù)據(jù)庫中的數(shù)據(jù)分散存放到多個(gè)數(shù)據(jù)庫上, 實(shí)現(xiàn)分布 存儲, 通過路由規(guī)則路由訪問特定的數(shù)據(jù)庫, 這樣一來每次訪問面對的就不是單臺服務(wù)器了, 而 是 N 臺服務(wù)器,這樣就可以降低單臺機(jī)器的負(fù)載壓力。垂直(縱向)拆分:是指按功能模塊拆分,比如分為訂單庫、商品庫、用戶庫 . 這種方式 多個(gè)數(shù)據(jù)庫之間的表結(jié)構(gòu)不同。水平(橫向)拆分:將同一個(gè)表的數(shù)據(jù)進(jìn)行分塊保存到不同的數(shù)據(jù)庫中, 這些數(shù)據(jù)庫中的表 結(jié)構(gòu)完全相同。s 3 5訂草庫產(chǎn)船暉甲

9、廣庫(縱向拆分)(橫向拆分)數(shù)據(jù)庫1,實(shí)現(xiàn)原理:使 用垂直拆分,主要要看應(yīng)用類型是否合適這種拆分方式,如系統(tǒng)可以分為,訂 單系統(tǒng),商品管理系統(tǒng),用戶管理系統(tǒng)業(yè)務(wù)系統(tǒng)比較明的,垂直拆分能很好的起到分散壓力的作用。業(yè)務(wù)模塊不明晰,耦合(表關(guān)聯(lián))度比較高的系統(tǒng)不適合使用這種拆分方式。但是垂直拆分方式并不能徹底解決所有壓力問題,例如 有一個(gè) 5000w 的訂單表,操作起來訂單庫的 壓力仍然很大,如我們需要在這個(gè)表中增加( insert )一條新的數(shù)據(jù), insert 完畢后,數(shù)據(jù)庫 會針對這 張表重新建立索引, 5000w 行數(shù)據(jù)建立索引的系統(tǒng)開銷還是不容忽視的,反過來,假 如我們將這個(gè)表分成 100

10、 個(gè) table 呢,從 table_001 一直到 table_100 ,5000w 行數(shù)據(jù)平均下來, 每個(gè)子表里邊就只有 50萬行數(shù)據(jù),這時(shí)候我們向一張只有50w行數(shù)據(jù)的table中insert數(shù)據(jù)后建立索引的時(shí)間就會呈數(shù)量級的下降,極大了提高了DB的運(yùn)行時(shí)效率,提高了DB的并發(fā)量,這種拆分就是橫向拆分2,實(shí)現(xiàn)方法: 垂直拆分,拆分方式實(shí)現(xiàn)起來比較簡單,根據(jù)表名訪問不同的數(shù)據(jù)庫就可以 了。橫向拆分的規(guī)則很多,這里總結(jié)前人的幾點(diǎn),(1) 順序拆分:如可以按訂單的日前按年份才分,2003年的放在db1中,2004年的db2,以此類推。當(dāng)然也可以按主鍵標(biāo)準(zhǔn)拆分。優(yōu)點(diǎn):可部分遷移缺點(diǎn):數(shù)據(jù)分布不均,可能 2003年的訂單有 100W, 2008 年的有 500W。(2) hash取模分:對user_id進(jìn)行hash(或者如果user_id是數(shù)值型的話直接使用user_id的值也可),然后用一個(gè)特定的數(shù)字,比如應(yīng)用中需要將一個(gè)數(shù)據(jù)庫切分成 4個(gè)數(shù)據(jù)庫的話,我們就用 4 這個(gè)數(shù)字對 user_id 的 hash 值進(jìn)行取模運(yùn)算,也就是 user_id%4 ,這樣的話每次運(yùn) 算就有四種可能:結(jié)果為1的時(shí)候?qū)?yīng) DB1;結(jié)果為2的時(shí)候?qū)?yīng) DB2;結(jié)果為3的時(shí)候?qū)?yīng)DB3;結(jié)果為0的時(shí)候?qū)?yīng) DB4,這樣一來就非常均勻的將數(shù)據(jù)分配到4個(gè)DB中。優(yōu)點(diǎn):數(shù)據(jù)

溫馨提示

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

評論

0/150

提交評論