數(shù)據(jù)存儲服務(wù)器集群的伸縮性對數(shù)據(jù)的持久性和可用性提出了更高的要求觉渴。緩存的目的是加速數(shù)據(jù)讀取的速度和減輕數(shù)據(jù)存儲服務(wù)器的負(fù)載壓力弃酌,而數(shù)據(jù)存儲服務(wù)器需要保證數(shù)據(jù)的可靠性引谜,任何情況下都需要保證數(shù)據(jù)的可用性和正確性型宙。
數(shù)據(jù)庫分為兩種關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫。關(guān)系型數(shù)據(jù)庫是由強(qiáng)大的sql和眾多成熟的商業(yè)數(shù)據(jù)庫產(chǎn)品組成關(guān)系型數(shù)據(jù)庫都支持?jǐn)?shù)據(jù)復(fù)制的功能饲梭。你my sql為例乘盖,數(shù)據(jù)寫操作都在主服務(wù)器上,由主服務(wù)器將數(shù)據(jù)同步到集群中的重復(fù)器數(shù)據(jù)讀操作及數(shù)據(jù)分析等離線操作憔涉,都是在從服務(wù)器上進(jìn)行的订框。除了主從讀寫分離,業(yè)務(wù)分割模式也可以在數(shù)據(jù)庫中進(jìn)行不同的業(yè)務(wù)數(shù)據(jù)被部署到不同的數(shù)據(jù)庫集群上兜叨,這就是通常所說的分庫穿扳。除了豐富還可以對數(shù)據(jù)庫進(jìn)行分片,也就是將一張表分開分別存儲在多個(gè)數(shù)據(jù)庫中国旷。通常的做法是在應(yīng)用服務(wù)器和數(shù)據(jù)庫之間建立一個(gè)代理服務(wù)器集群矛物。這個(gè)代理服務(wù)器集群包含負(fù)載均衡的功能,以及代理服務(wù)器的功能跪但。它作為應(yīng)用程序和my sql數(shù)據(jù)庫服務(wù)器集群的中間層履羞。通過中間層負(fù)載均衡服務(wù)器對數(shù)據(jù)的分發(fā)可以把數(shù)據(jù)分發(fā)至不同的數(shù)據(jù)庫中。當(dāng)進(jìn)行查詢只需將數(shù)據(jù)庫a和數(shù)據(jù)庫b中的結(jié)果進(jìn)行合并屡久,既能返回原來的數(shù)據(jù)忆首。
由于該代理是無狀態(tài)的應(yīng)用服務(wù)器因此集權(quán)的伸縮可以簡單的使用負(fù)載均衡的手段,向集群中添加服務(wù)器即可實(shí)現(xiàn)被环。而數(shù)據(jù)庫中存儲的數(shù)據(jù)糙及,要想保證集群中擴(kuò)容后數(shù)據(jù)一致的負(fù)載均衡必須要做數(shù)據(jù)遷移,將集群中原來機(jī)器中的數(shù)據(jù)遷移到新添加的機(jī)器中去筛欢,這可以通過一致性哈希算法實(shí)現(xiàn)但是遷移數(shù)據(jù)需要遍歷數(shù)據(jù)庫中的每一條記錄浸锨,對數(shù)據(jù)庫會造成一定的壓力,并且需要解決遷移過程中的一致性版姑,可訪問性以及服務(wù)器宕機(jī)柱搜,使得可用性有很多問題。利用my sql數(shù)據(jù)庫的同步功能進(jìn)行數(shù)據(jù)復(fù)制以數(shù)據(jù)分段為單位贊美歌數(shù)據(jù)庫實(shí)例中創(chuàng)建多個(gè)數(shù)據(jù)分段剥险,當(dāng)擴(kuò)容的時(shí)候每個(gè)服務(wù)器遷移部分?jǐn)?shù)據(jù)分段到新機(jī)器中冯凹。由于使用了一致性,哈希算法,遷移的數(shù)據(jù)對原數(shù)據(jù)庫集群中的數(shù)據(jù)影響不大宇姚。
非關(guān)系型數(shù)據(jù)庫主要是指非關(guān)系的分布式的數(shù)據(jù)庫設(shè)計(jì)模式。非關(guān)系數(shù)據(jù)庫放棄了關(guān)于數(shù)據(jù)庫的兩大重要的基礎(chǔ)夫凸,一個(gè)是以關(guān)系為基礎(chǔ)的結(jié)構(gòu)化查詢語言和以及事務(wù)一致性保證浑劳。但是它強(qiáng)化了一些大型網(wǎng)站更關(guān)注的特性,也就是高可用性和可伸縮性夭拌。非關(guān)系型數(shù)據(jù)庫魔熏,其支持的數(shù)據(jù)結(jié)構(gòu)和伸縮性也各不相同。h base的伸縮性主要是以考核分列的hregion以及可伸縮的分布式文件系統(tǒng)hdfs實(shí)現(xiàn)了鸽扁。