
大數(shù)據(jù)時(shí)代的數(shù)據(jù)庫集群技術(shù)漫談
當(dāng)今世界是一個(gè)信息化的世界, 我們的生活中無論是生活、工作、學(xué)習(xí)都離不開信息系統(tǒng)的支撐。而信息系統(tǒng)的背后用于保存和處理最終結(jié)果的地方就是數(shù)據(jù)庫。因此數(shù)據(jù)庫系統(tǒng)就變得尤為重要, 這意味著如果數(shù)據(jù)庫如果面臨問題,則意味著整個(gè)應(yīng)用系統(tǒng)也會(huì)面臨挑戰(zhàn),從而帶來嚴(yán)重的損失和后果。
如今“大數(shù)據(jù)”這個(gè)詞已經(jīng)變得非常流行,雖然這個(gè)概念如何落地不得而知。但可以確定的是,隨著物聯(lián)網(wǎng)、移動(dòng)應(yīng)用的興起,數(shù)據(jù)量相比過去會(huì)有幾何級(jí)的提升,因此數(shù)據(jù)庫所需要解決的問題不再僅僅是記錄程序正確的處理結(jié)果,還需要解決如下挑戰(zhàn):
當(dāng)數(shù)據(jù)庫性能遇到問題時(shí),是否能夠橫向擴(kuò)展,通過添加服務(wù)器的方式達(dá)到更高的吞吐量,從而充分利用現(xiàn)有的硬件實(shí)現(xiàn)更好的投資回報(bào)率。
是否擁有實(shí)時(shí)同步的副本,當(dāng)數(shù)據(jù)庫面臨災(zāi)難時(shí),可以短時(shí)間內(nèi)通過故障轉(zhuǎn)移的方式保證數(shù)據(jù)庫的可用性。此外,當(dāng)數(shù)據(jù)丟失或損壞時(shí),能否通過所謂的實(shí)時(shí)副本(熱備)實(shí)現(xiàn)數(shù)據(jù)的零損失。
數(shù)據(jù)庫的橫向擴(kuò)展是否對(duì)應(yīng)用程序透明,如果數(shù)據(jù)庫的橫向擴(kuò)展需要應(yīng)用程序端進(jìn)行大量修改,則所帶來的后果不僅僅是高昂的開發(fā)成本,同時(shí)也會(huì)帶來很多潛在和非潛在的風(fēng)險(xiǎn)。
面對(duì)上述挑戰(zhàn)一個(gè)顯而易見的辦法是將多個(gè)服務(wù)器組成一組集群,這樣一來就可以充分利用每一臺(tái)服務(wù)器的資源并將客戶端負(fù)載分發(fā)到不同服務(wù)器上,隨著應(yīng)用程序負(fù)載的增加,只需要將新的服務(wù)器添加到集群即可。
本篇文章將對(duì)集群的概念、形式以及目前主流的數(shù)據(jù)庫集群技術(shù)進(jìn)行探討。
數(shù)據(jù)庫集群的形式
數(shù)據(jù)庫的集群和擴(kuò)展不像應(yīng)用程序擴(kuò)展那樣容易,因?yàn)閺臄?shù)據(jù)庫端來說,一旦涉及到了集群,往往會(huì)涉及到數(shù)據(jù)庫層面的同步,因此從是否存在數(shù)據(jù)冗余這個(gè)角度來講,我們可以從大面上把數(shù)據(jù)庫集群分為以下兩種形式:
Share-Disk架構(gòu)
Share-Disk架構(gòu)是通過多個(gè)服務(wù)器節(jié)點(diǎn)共享一個(gè)存儲(chǔ)來實(shí)現(xiàn)數(shù)據(jù)庫集群,兩臺(tái)機(jī)器最簡單的Share-Disk架構(gòu)如圖1所示。
圖1.簡單的Share-Disk架構(gòu)
在 此基礎(chǔ)之上,Share-Disk架構(gòu)又分為單活和雙活,雙活即為集群中的每一個(gè)節(jié)點(diǎn)都可以同時(shí)對(duì)外提供服務(wù),而單活為集群中只有一個(gè)節(jié)點(diǎn)可對(duì)外提供服 務(wù),集群中的其他服務(wù)器作為冗余在“活”的節(jié)點(diǎn)出現(xiàn)故障時(shí)接替該服務(wù)器成為對(duì)外提供服務(wù)的節(jié)點(diǎn)。該類架構(gòu)最典型的產(chǎn)品就是SQL Server Failover Cluster(SQL Server故障轉(zhuǎn)移集群)、NEC的EXPRESSCLUSTER、ROSE的ROSE HA。這種方式的弊端也是顯而易見的,如下:
硬件資源的嚴(yán)重浪費(fèi),同一時(shí)間集群中只有一臺(tái)服務(wù)器活著,其他服務(wù)器只能作為冗余服務(wù)器。
集群無法提升性能,因?yàn)橹挥幸慌_(tái)服務(wù)器可用
存儲(chǔ)方面存在單點(diǎn)故障,除非在存儲(chǔ)層級(jí)保證高可用,通常需要昂貴的SAN存儲(chǔ)。
因此該類方案僅僅可以做到服務(wù)器層面的高可用,無法帶來性能的提升,也無法解決存儲(chǔ)單點(diǎn)故障的問題。因此如果不搭配其他高可用或負(fù)載均衡的技術(shù),存在的意義并不是很大。
另 一類技術(shù)是Share-Disk中的雙活的技術(shù),與單活技術(shù)不同的是,雙活的技術(shù)雖然也是共享磁盤,但集群中的所有節(jié)點(diǎn)都可以對(duì)外提供服務(wù),典型的產(chǎn)品就 是Oracle的RAC。RAC的技術(shù)性非常的高,因此需要水平比較高的人來運(yùn)維系統(tǒng)。RAC設(shè)計(jì)的初衷并不是為了性能,而是為了高可用和可擴(kuò)展性,如果 應(yīng)用程序不是針對(duì)RAC架構(gòu)設(shè)計(jì)和開發(fā)的,則將應(yīng)用程序遷移到RAC上由于block contention (block busy waits)可能會(huì)導(dǎo)致性能的急劇下降,并且節(jié)點(diǎn)越多性能下降越明顯。
Share-Nothing架構(gòu)
Share-Nothing架構(gòu)又分為兩種,首先是分布式架構(gòu)。將數(shù)據(jù)庫中的數(shù)據(jù)按照某一標(biāo)準(zhǔn)分布到多臺(tái)機(jī)器中,查詢或插入時(shí)按照條件查詢或插入對(duì)應(yīng)的分區(qū)。
另一種是每一個(gè)節(jié)點(diǎn)完全獨(dú)立,節(jié)點(diǎn)之間通過網(wǎng)絡(luò)連接,通常是通過光釬等專用網(wǎng)絡(luò)。如圖2所示。
圖2.Share-Nothing冗余架構(gòu)
在Share-Nothing架構(gòu)中,每一個(gè)節(jié)點(diǎn)都擁有自己的內(nèi)存和存儲(chǔ),都保留數(shù)據(jù)的完整副本。通常來說,又可以分為兩種,可以負(fù)載均衡和不可以負(fù)載均衡。
首 先談?wù)劜豢韶?fù)載均衡的集群,在不可負(fù)載均衡的技術(shù)中,集群中的節(jié)點(diǎn)會(huì)被分為主節(jié)點(diǎn)和輔助節(jié)點(diǎn),主節(jié)點(diǎn)向外提供服務(wù),輔助節(jié)點(diǎn)作為熱備(二階段事務(wù)提交)或 暖備(不需要保證事務(wù)同步),同時(shí)有可能使得輔助節(jié)點(diǎn)提供只讀的服務(wù)。使用這個(gè)架構(gòu)的技術(shù)包括:SQL Server AlwaysOn,SQL Server Mirror,Oracle Data Guard這種架構(gòu)帶來的好處包括:
輔助節(jié)點(diǎn)數(shù)據(jù)和主節(jié)點(diǎn)保持同步或準(zhǔn)同步,當(dāng)搭配第三方仲裁后,可以實(shí)現(xiàn)自動(dòng)的故障轉(zhuǎn)移,從而實(shí)現(xiàn)了高可用
輔助節(jié)點(diǎn)由于和主節(jié)點(diǎn)完全獨(dú)立且數(shù)據(jù)同步或準(zhǔn)同步,因此主節(jié)點(diǎn)出現(xiàn)數(shù)據(jù)損壞后,可以從輔助節(jié)點(diǎn)恢復(fù)數(shù)據(jù)(自動(dòng)或手動(dòng))
由于Share-Nothing架構(gòu)使用了本地存儲(chǔ)(或SAN),相較于Share-Disk架構(gòu)在慢速網(wǎng)絡(luò)時(shí)有非常大的性能優(yōu)勢(shì)
當(dāng)然,弊端也顯而易見,因?yàn)檩o助節(jié)點(diǎn)無法對(duì)外提供服務(wù)或只能提供只讀服務(wù),因此該類集群的弊端包括:
擴(kuò)展能力非常有限
對(duì)性能沒有提升,因?yàn)樯婕暗礁鞴?jié)點(diǎn)的數(shù)據(jù)同步,甚至帶來性能的下降
輔助節(jié)點(diǎn)如果可讀,雖然提升性能,但需要修改前端應(yīng)用程序,對(duì)應(yīng)用程序不透明
另一類Share-Nothing架構(gòu)中,是允許負(fù)載均衡的。所謂負(fù)載均衡就是就是將對(duì)數(shù)據(jù)庫的負(fù)載分布到集群中的多個(gè)節(jié)點(diǎn)上,在集群中的每一個(gè)節(jié)點(diǎn)都可以對(duì)外提供服務(wù),從而達(dá)到更高的吞吐量,更好的資源利用率和更低的響應(yīng)時(shí)間。前端通過代理進(jìn)行調(diào)度。
圖3.Amoeba
圖4.HA Proxy
圖5.Moebius集群
可 負(fù)載均衡的Share-Nothing架構(gòu)的好處是每臺(tái)服務(wù)器都能提供服務(wù),能充分利用現(xiàn)有資源,達(dá)到更高的吞吐量。其中Amoeba中可能會(huì)涉及到數(shù)據(jù) 分片,數(shù)據(jù)分片的好處是對(duì)于海量數(shù)據(jù)的處理更加高效,但同時(shí)也引入了其他問題,比如說需要應(yīng)用程序端對(duì)應(yīng)數(shù)據(jù)分片進(jìn)行調(diào)整、跨分片節(jié)點(diǎn)查詢的處理問題、每 一個(gè)數(shù)據(jù)分片節(jié)點(diǎn)是否能夠承受各自業(yè)務(wù)負(fù)載的高峰問題等。該類架構(gòu)需要實(shí)施的人員水平比較高,且需要應(yīng)用層面做調(diào)整,因此更適合于互聯(lián)網(wǎng)企業(yè)。
另一類不涉及到數(shù)據(jù)分片的架構(gòu),比如一類可以使用組合方案,比如說Oracle RAC+F5。另一類是使用單個(gè)廠商提供的方案,比如說SQL Server上的Moebius。這類方案集群中的每個(gè)節(jié)點(diǎn)都會(huì)對(duì)外提供服務(wù),因此有如下好處:
由于每一個(gè)節(jié)點(diǎn)都可以對(duì)外提供服務(wù),因此可以提升性能
擴(kuò)展性得到提升,可以通過向集群添加節(jié)點(diǎn)直接進(jìn)行Scale-Out擴(kuò)充
由于前端應(yīng)用通過代理連接到集群,而集群中的每一個(gè)節(jié)點(diǎn)都保持完整的數(shù)據(jù)集,因此不存在分片不到位反而造成性能下降的問題,因此對(duì)應(yīng)用程序端完全透明
但相比較于MySQL的數(shù)據(jù)分片,該類方案的弊端也顯而易見,因?yàn)槊恳粋€(gè)節(jié)點(diǎn)都需要完整的數(shù)據(jù)集,因此需要占用更多的存儲(chǔ)空間。
小結(jié)
本文從一個(gè)比較高的層面談到了數(shù)據(jù)庫集群技術(shù)。從數(shù)據(jù)庫應(yīng) 用層面的Share-Disk集群直到集群的最高形式-能夠提供負(fù)載均衡的集群,并列舉了一些主流的商用產(chǎn)品。集群的存在意義是為了保證高可用、數(shù)據(jù)安 全、擴(kuò)展性以及負(fù)載均衡。如果現(xiàn)在的集群產(chǎn)品不能包含這幾個(gè)特性,而業(yè)務(wù)場景也需要,也可以將和一些現(xiàn)有的技術(shù)結(jié)合來實(shí)現(xiàn),但畢竟不是每一個(gè)人都是數(shù)據(jù)庫 專家,即使給你一堆工具和材料你也做不出來iPhone,因此在系統(tǒng)設(shè)計(jì)之初就對(duì)數(shù)據(jù)庫方面的方案有所考慮會(huì)免去很多麻煩。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
PyTorch 核心機(jī)制:損失函數(shù)與反向傳播如何驅(qū)動(dòng)模型進(jìn)化 在深度學(xué)習(xí)的世界里,模型從 “一無所知” 到 “精準(zhǔn)預(yù)測” 的蛻變,離 ...
2025-07-252025 年 CDA 數(shù)據(jù)分析師考綱煥新,引領(lǐng)行業(yè)人才新標(biāo)準(zhǔn) 在數(shù)字化浪潮奔涌向前的當(dāng)下,數(shù)據(jù)已成為驅(qū)動(dòng)各行業(yè)發(fā)展的核心要素。作為 ...
2025-07-25從數(shù)據(jù)到?jīng)Q策:CDA 數(shù)據(jù)分析師如何重塑職場競爭力與行業(yè)價(jià)值 在數(shù)字經(jīng)濟(jì)席卷全球的今天,數(shù)據(jù)已從 “輔助工具” 升級(jí)為 “核心資 ...
2025-07-25用 Power BI 制作地圖熱力圖:基于經(jīng)緯度數(shù)據(jù)的實(shí)踐指南 在數(shù)據(jù)可視化領(lǐng)域,地圖熱力圖憑借直觀呈現(xiàn)地理數(shù)據(jù)分布密度的優(yōu)勢(shì),成 ...
2025-07-24解析 insert into select 是否會(huì)鎖表:原理、場景與應(yīng)對(duì)策略 在數(shù)據(jù)庫操作中,insert into select 是一種常用的批量數(shù)據(jù)插入語句 ...
2025-07-24CDA 數(shù)據(jù)分析師的工作范圍解析 在數(shù)字化時(shí)代的浪潮下,數(shù)據(jù)已成為企業(yè)發(fā)展的核心資產(chǎn)之一。CDA(Certified Data Analyst)數(shù)據(jù)分 ...
2025-07-24從 CDA LEVEL II 考試題型看 Python 數(shù)據(jù)分析要點(diǎn) 在數(shù)據(jù)科學(xué)領(lǐng)域蓬勃發(fā)展的當(dāng)下,CDA(Certified Data Analyst)認(rèn)證成為眾多從 ...
2025-07-23用 Python 開啟數(shù)據(jù)分析之旅:從基礎(chǔ)到實(shí)踐的完整指南 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代,數(shù)據(jù)分析已成為各行業(yè)不可或缺的核心能力。而 Pyt ...
2025-07-23鳶尾花判別分析:機(jī)器學(xué)習(xí)中的經(jīng)典實(shí)踐案例 在機(jī)器學(xué)習(xí)的世界里,有一個(gè)經(jīng)典的數(shù)據(jù)集如同引路明燈,為無數(shù)初學(xué)者打開了模式識(shí)別 ...
2025-07-23解析 response.text 與 response.content 的核心區(qū)別 在網(wǎng)絡(luò)數(shù)據(jù)請(qǐng)求與處理的場景中,開發(fā)者經(jīng)常需要從服務(wù)器返回的響應(yīng)中提取數(shù) ...
2025-07-22解析神經(jīng)網(wǎng)絡(luò)中 Softmax 函數(shù)的核心作用 在神經(jīng)網(wǎng)絡(luò)的發(fā)展歷程中,激活函數(shù)扮演著至關(guān)重要的角色,它們?yōu)榫W(wǎng)絡(luò)賦予了非線性能力, ...
2025-07-22CDA數(shù)據(jù)分析師證書考取全攻略 一、了解 CDA 數(shù)據(jù)分析師認(rèn)證 CDA 數(shù)據(jù)分析師認(rèn)證是一套科學(xué)化、專業(yè)化、國際化的人才考核標(biāo)準(zhǔn), ...
2025-07-22左偏態(tài)分布轉(zhuǎn)正態(tài)分布:方法、原理與實(shí)踐 左偏態(tài)分布轉(zhuǎn)正態(tài)分布:方法、原理與實(shí)踐 在統(tǒng)計(jì)分析、數(shù)據(jù)建模和科學(xué)研究中,正態(tài)分 ...
2025-07-22你是不是也經(jīng)常刷到別人漲粉百萬、帶貨千萬,心里癢癢的,想著“我也試試”,結(jié)果三個(gè)月過去,粉絲不到1000,播放量慘不忍睹? ...
2025-07-21我是陳輝,一個(gè)創(chuàng)業(yè)十多年的企業(yè)主,前半段人生和“文字”緊緊綁在一起。從廣告公司文案到品牌策劃,再到自己開策劃機(jī)構(gòu),我靠 ...
2025-07-21CDA 數(shù)據(jù)分析師的職業(yè)生涯規(guī)劃:從入門到卓越的成長之路 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的當(dāng)下,數(shù)據(jù)已成為企業(yè)核心競爭力的重要來源,而 CD ...
2025-07-21MySQL執(zhí)行計(jì)劃中rows的計(jì)算邏輯:從原理到實(shí)踐 MySQL 執(zhí)行計(jì)劃中 rows 的計(jì)算邏輯:從原理到實(shí)踐 在 MySQL 數(shù)據(jù)庫的查詢優(yōu)化中 ...
2025-07-21在AI滲透率超85%的2025年,企業(yè)生存之戰(zhàn)就是數(shù)據(jù)之戰(zhàn),CDA認(rèn)證已成為決定企業(yè)存續(xù)的生死線!據(jù)麥肯錫全球研究院數(shù)據(jù)顯示,AI驅(qū) ...
2025-07-2035歲焦慮像一把高懸的利刃,裁員潮、晉升無望、技能過時(shí)……當(dāng)職場中年危機(jī)與數(shù)字化浪潮正面交鋒,你是否發(fā)現(xiàn): 簡歷投了10 ...
2025-07-20CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-18