99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀SQL Server數(shù)據(jù)庫(kù)大型應(yīng)用解決方案總結(jié)
SQL Server數(shù)據(jù)庫(kù)大型應(yīng)用解決方案總結(jié)
2017-07-08
收藏

SQL Server數(shù)據(jù)庫(kù)大型應(yīng)用解決方案總結(jié)

一、負(fù)載均衡技術(shù)

負(fù)載均衡集群是由一組相互獨(dú)立的計(jì)算機(jī)系統(tǒng)構(gòu)成,通過(guò)常規(guī)網(wǎng)絡(luò)或?qū)S镁W(wǎng)絡(luò)進(jìn)行連接,由路由器銜接在一起,各節(jié)點(diǎn)相互協(xié)作、共同負(fù)載、均衡壓力,對(duì)客戶(hù)端來(lái)說(shuō),整個(gè)群集可以視為一臺(tái)具有超高性能的獨(dú)立服務(wù)器。

1、實(shí)現(xiàn)原理

實(shí)現(xiàn)數(shù)據(jù)庫(kù)的負(fù)載均衡技術(shù),首先要有一個(gè)可以控制連接數(shù)據(jù)庫(kù)的控制端。在這里,它截?cái)嗔藬?shù)據(jù)庫(kù)和程序的直接連接,由所有的程序來(lái)訪問(wèn)這個(gè)中間層,然后再由中間層來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。這樣,我們就可以具體控制訪問(wèn)某個(gè)數(shù)據(jù)庫(kù)了,然后還可以根據(jù)數(shù)據(jù)庫(kù)的當(dāng)前負(fù)載采取有效的均衡策略,來(lái)調(diào)整每次連接到哪個(gè)數(shù)據(jù)庫(kù)。

2、實(shí)現(xiàn)多數(shù)據(jù)庫(kù)數(shù)據(jù)同步

對(duì)于負(fù)載均衡,最重要的就是所有服務(wù)器的數(shù)據(jù)都是實(shí)時(shí)同步的。這是一個(gè)集群所必需的,因?yàn)椋绻麛?shù)不據(jù)實(shí)時(shí)、不同步,那么用戶(hù)從一臺(tái)服務(wù)器讀出的數(shù)據(jù),就有別于從另一臺(tái)服務(wù)器讀出的數(shù)據(jù),這是不能允許的。所以必須實(shí)現(xiàn)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步。這樣,在查詢(xún)的時(shí)候就可以有多個(gè)資源,實(shí)現(xiàn)均衡。比較常用的方法是Moebius for SQL Server集群,Moebius for SQLServer集群采用將核心程序駐留在每個(gè)機(jī)器的數(shù)據(jù)庫(kù)中的辦法,這個(gè)核心程序稱(chēng)為Moebius for SQLServer 中間件,主要作用是監(jiān)測(cè)數(shù)據(jù)庫(kù)內(nèi)數(shù)據(jù)的變化并將變化的數(shù)據(jù)同步到其他數(shù)據(jù)庫(kù)中。數(shù)據(jù)同步完成后客戶(hù)端才會(huì)得到響應(yīng),同步過(guò)程是并發(fā)完成的,所以同步到多個(gè)數(shù)據(jù)庫(kù)和同步到一個(gè)數(shù)據(jù)庫(kù)的時(shí)間基本相等;另外同步的過(guò)程是在事務(wù)的環(huán)境下完成的,保證了多份數(shù)據(jù)在任何時(shí)刻數(shù)據(jù)的一致性。正因?yàn)镸oebius中間件宿主在數(shù)據(jù)庫(kù)中的創(chuàng)新,讓中間件不但能知道數(shù)據(jù)的變化,而且知道引起數(shù)據(jù)變化的SQL語(yǔ)句,根據(jù)SQL語(yǔ)句的類(lèi)型智能的采取不同的數(shù)據(jù)同步的策略以保證數(shù)據(jù)同步成本的最小化。

數(shù)據(jù)條數(shù)很少,數(shù)據(jù)內(nèi)容也不大,則直接同步數(shù)據(jù)

數(shù)據(jù)條數(shù)很少,但是里面包含大數(shù)據(jù)類(lèi)型,比如文本,二進(jìn)制數(shù)據(jù)等,則先對(duì)數(shù)據(jù)進(jìn)行壓縮然后再同步,從而減少網(wǎng)絡(luò)帶寬的占用和傳輸所用的時(shí)間。

數(shù)據(jù)條數(shù)很多,此時(shí)中間件會(huì)拿到造成數(shù)據(jù)變化的SQL語(yǔ)句, 然后對(duì)SQL語(yǔ)句進(jìn)行解析,分析其執(zhí)行計(jì)劃和執(zhí)行成本,并選擇是同步數(shù)據(jù)還是同步SQL語(yǔ)句到其他的數(shù)據(jù)庫(kù)中。此種情況應(yīng)用在對(duì)表結(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ù)庫(kù)處理速度時(shí),只要簡(jiǎn)單地增加數(shù)據(jù)庫(kù)服務(wù)器就 可以得到擴(kuò)展。

(2) 可維護(hù)性:當(dāng)某節(jié)點(diǎn)發(fā)生故障時(shí),系統(tǒng)會(huì)自動(dòng)檢測(cè)故障并轉(zhuǎn)移故障節(jié)點(diǎn)的應(yīng)用,保證數(shù)據(jù)庫(kù)的持續(xù)工作。

(3) 安全性:因?yàn)閿?shù)據(jù)會(huì)同步的多臺(tái)服務(wù)器上,可以實(shí)現(xiàn)數(shù)據(jù)集的冗余,通過(guò)多份數(shù)據(jù)來(lái)保證安全性。另外它成功地將數(shù)據(jù)庫(kù)放到了內(nèi)網(wǎng)之中,更好地保護(hù)了數(shù)據(jù)庫(kù)的安全性。

(4) 易用性:對(duì)應(yīng)用來(lái)說(shuō)完全透明,集群暴露出來(lái)的就是一個(gè)IP

(1) 不能夠按照Web服務(wù)器的處理能力分配負(fù)載。

(2) 負(fù)載均衡器(控制端)故障,會(huì)導(dǎo)致整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)癱瘓。

二、數(shù)據(jù)庫(kù)的讀寫(xiě)分離

1,實(shí)現(xiàn)原理:讀寫(xiě)分離簡(jiǎn)單的說(shuō)是把對(duì)數(shù)據(jù)庫(kù)讀和寫(xiě)的操作分開(kāi)對(duì)應(yīng)不同的數(shù)據(jù)庫(kù)服務(wù)器,這樣能有效地減輕數(shù)據(jù)庫(kù)壓力,也能減輕io壓力。主數(shù)據(jù)庫(kù)提供寫(xiě)操作,從數(shù)據(jù)庫(kù)提供讀操作,其實(shí)在很多系統(tǒng)中,主要是讀的操作。當(dāng)主數(shù)據(jù)庫(kù)進(jìn)行寫(xiě)操作時(shí),數(shù)據(jù)要同步到從的數(shù)據(jù)庫(kù),這樣才能有效保證數(shù)據(jù)庫(kù)完整性。
▲(ebay的讀寫(xiě)比率是260:1,ebay的讀寫(xiě)分離)
▲(微軟數(shù)據(jù)庫(kù)分發(fā))

2,實(shí)現(xiàn)方法:在MS Sql server中可以使用發(fā)布定義的方式實(shí)現(xiàn)數(shù)據(jù)庫(kù)復(fù)制,實(shí)現(xiàn)讀寫(xiě)分離,復(fù)制是將一組數(shù)據(jù)從一個(gè)數(shù)據(jù)源拷貝到多個(gè)數(shù)據(jù)源的技術(shù),是將一份數(shù)據(jù)發(fā)布到多個(gè)存儲(chǔ)站點(diǎn)上的有效方式。使用復(fù)制技術(shù),用戶(hù)可以將一份數(shù)據(jù)發(fā)布到多臺(tái)服務(wù)器上。復(fù)制技術(shù)可以確保分布在不同地點(diǎn)的數(shù)據(jù)自動(dòng)同步更新,從而保證數(shù)據(jù)的一致性。SQL SERVER復(fù)制技術(shù)類(lèi)型有三種,分別是:快照復(fù)制、事務(wù)復(fù)制、合并復(fù)制。SQLSERVER 主要采用出版物、訂閱的方式來(lái)處理復(fù)制。源數(shù)據(jù)所在的服務(wù)器是出版服務(wù)器,負(fù)責(zé)發(fā)表數(shù)據(jù)。出版服務(wù)器把要發(fā)表的數(shù)據(jù)的所有改變情況的拷貝復(fù)制到分發(fā)服務(wù)器,分發(fā)服務(wù)器包含有一個(gè)分發(fā)數(shù)據(jù)庫(kù),可接收數(shù)據(jù)的所有改變,并保存這些改變,再把這些改變分發(fā)給訂閱服務(wù)器。

3,優(yōu)缺點(diǎn)

(1)數(shù)據(jù)的實(shí)時(shí)性差:數(shù)據(jù)不是實(shí)時(shí)同步到自讀服務(wù)器上的,當(dāng)數(shù)據(jù)寫(xiě)入主服務(wù)器后,要在下次同步后才能查詢(xún)到。

(2)數(shù)據(jù)量大時(shí)同步效率差:?jiǎn)伪頂?shù)據(jù)量過(guò)大時(shí)插入和更新因索引,磁盤(pán)IO等問(wèn)題,性能會(huì)變的很差。

(3)同時(shí)連接多個(gè)(至少兩個(gè))數(shù)據(jù)庫(kù):至少要連接到兩個(gè)數(shù)據(jù)數(shù)據(jù)庫(kù),實(shí)際的讀寫(xiě)操作是在程序代碼中完成的,容易引起混亂

(4)讀具有高性能高可靠性和可伸縮:只讀服務(wù)器,因?yàn)闆](méi)有寫(xiě)操作,會(huì)大大減輕磁盤(pán)IO等性能問(wèn)題,大大提高效率;只讀服務(wù)器可以采用負(fù)載均衡,主數(shù)據(jù)庫(kù)發(fā)布到多個(gè)只讀服務(wù)器上實(shí)現(xiàn)讀操作的可伸縮性。

二、數(shù)據(jù)庫(kù)的讀寫(xiě)分離

1,實(shí)現(xiàn)原理:讀寫(xiě)分離簡(jiǎn)單的說(shuō)是把對(duì)數(shù)據(jù)庫(kù)讀和寫(xiě)的操作分開(kāi)對(duì)應(yīng)不同的數(shù)據(jù)庫(kù)服務(wù)器,這樣能有效地減輕數(shù)據(jù)庫(kù)壓力,也能減輕io壓力。主數(shù)據(jù)庫(kù)提供寫(xiě)操作,從數(shù)據(jù)庫(kù)提供讀操作,其實(shí)在很多系統(tǒng)中,主要是讀的操作。當(dāng)主數(shù)據(jù)庫(kù)進(jìn)行寫(xiě)操作時(shí),數(shù)據(jù)要同步到從的數(shù)據(jù)庫(kù),這樣才能有效保證數(shù)據(jù)庫(kù)完整性。


▲(ebay的讀寫(xiě)比率是260:1,ebay的讀寫(xiě)分離)


▲(微軟數(shù)據(jù)庫(kù)分發(fā))

2,實(shí)現(xiàn)方法:在MS Sql server中可以使用發(fā)布定義的方式實(shí)現(xiàn)數(shù)據(jù)庫(kù)復(fù)制,實(shí)現(xiàn)讀寫(xiě)分離,復(fù)制是將一組數(shù)據(jù)從一個(gè)數(shù)據(jù)源拷貝到多個(gè)數(shù)據(jù)源的技術(shù),是將一份數(shù)據(jù)發(fā)布到多個(gè)存儲(chǔ)站點(diǎn)上的有效方式。使用復(fù)制技術(shù),用戶(hù)可以將一份數(shù)據(jù)發(fā)布到多臺(tái)服務(wù)器上。復(fù)制技術(shù)可以確保分布在不同地點(diǎn)的數(shù)據(jù)自動(dòng)同步更新,從而保證數(shù)據(jù)的一致性。SQL SERVER復(fù)制技術(shù)類(lèi)型有三種,分別是:快照復(fù)制、事務(wù)復(fù)制、合并復(fù)制。SQLSERVER 主要采用出版物、訂閱的方式來(lái)處理復(fù)制。源數(shù)據(jù)所在的服務(wù)器是出版服務(wù)器,負(fù)責(zé)發(fā)表數(shù)據(jù)。出版服務(wù)器把要發(fā)表的數(shù)據(jù)的所有改變情況的拷貝復(fù)制到分發(fā)服務(wù)器,分發(fā)服務(wù)器包含有一個(gè)分發(fā)數(shù)據(jù)庫(kù),可接收數(shù)據(jù)的所有改變,并保存這些改變,再把這些改變分發(fā)給訂閱服務(wù)器。

3,優(yōu)缺點(diǎn)

(1)數(shù)據(jù)的實(shí)時(shí)性差:數(shù)據(jù)不是實(shí)時(shí)同步到自讀服務(wù)器上的,當(dāng)數(shù)據(jù)寫(xiě)入主服務(wù)器后,要在下次同步后才能查詢(xún)到。

(2)數(shù)據(jù)量大時(shí)同步效率差:?jiǎn)伪?a href="http://www.3lll3.cn/view/21992.html" target="_blank">數(shù)據(jù)量過(guò)大時(shí)插入和更新因索引,磁盤(pán)IO等問(wèn)題,性能會(huì)變的很差。

(3)同時(shí)連接多個(gè)(至少兩個(gè))數(shù)據(jù)庫(kù):至少要連接到兩個(gè)數(shù)據(jù)數(shù)據(jù)庫(kù),實(shí)際的讀寫(xiě)操作是在程序代碼中完成的,容易引起混亂

(4)讀具有高性能高可靠性和可伸縮:只讀服務(wù)器,因?yàn)闆](méi)有寫(xiě)操作,會(huì)大大減輕磁盤(pán)IO等性能問(wèn)題,大大提高效率;只讀服務(wù)器可以采用負(fù)載均衡,主數(shù)據(jù)庫(kù)發(fā)布到多個(gè)只讀服務(wù)器上實(shí)現(xiàn)讀操作的可伸縮性。



數(shù)據(jù)分析咨詢(xún)請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢(xún)
客服在線
立即咨詢(xún)
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶(hù)后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }