集群數(shù)據庫與單節點數(shù)據庫相(xiàng)比©♥₽有(yǒu)多(duō)個(gè)優點,但(dàn)費(fèi)用(yò₽δng)和(hé)複雜(zá)性更高(gā≥€o)。除此之外(wài),集群數(shù)據庫還(hái)有(yǒ≈✔u)更高(gāo)的(de)可(kě)用(yòng)性、更高(gāo₽δ₹)的(de)吞吐量,在一(yī)些(xiē)情況下(xià)還(γφ¶±hái)有(yǒu)更低(dī)的(de) ←延遲。
對(duì)于每個(gè)節點都(dōu)有(yǒu)整個(gè)£← 數(shù)據庫副本的(de)集群而言,你(nǐ)可(k₽★ě)以獲得(de)更高(gāo)的(de♦ ↓)冗餘性和(hé)更高(gāo)的(de)可(kě)用(yòng)性。視(s✘↓&hì)策略而定,讀(dú)取操作(zuò'≠)可(kě)能(néng)隻需要(yào&¶♦α)一(yī)個(gè)節點,否則集群中的(de)一(yī)組節點可(kě)♠λ♦₹能(néng)需要(yào)就(jiù)返回≈≥值達成一(yī)緻。
使用(yòng)有(yǒu)多(duō)個(gè)節點的(de₹∏←δ)集群可(kě)以讓數(shù)據庫使用(yòng)更多(duō≠≥ )的(de)CPU,從(cóng)而增加吞吐量,并提高(gā≤≤αo)事(shì)務率。使用(yòng)允許最近(jìn)節點返回值的(de∑ )讀(dú)取策略,讀(dú)取延遲通(tōng> ₩ )常會(huì)降低(dī)。另一(yī)方面,π 必須等待所有(yǒu)節點提交的(de)寫入或事(sh<≠ì)務策略,有(yǒu)時(shí)會(huì)★±☆₹增加寫入延遲。
使用(yòng)共識組有(yǒu)助于縮短(duǎn)延遲→。如(rú)果你(nǐ)有(yǒu)一(yī)個(g≠↕è)三節點集群,一(yī)個(gè)節點負載過大(☆¥β¥dà),另兩個(gè)節點就(jiù)可(kě)₹ 以批準共識事(shì)務,并在第三個(gè)節點可(kě)用 ↕(yòng)時(shí)更新該節點。
分(fēn)片是(shì)一(yī)種通(tōng)過劃>$♦分(fēn)數(shù)據庫來(lái)處理(lǐ)更多(duō)數(shù)↑π據的(de)方法。手動分(fēn)片可(kě)能(néng)費(∑₽☆"fèi)時(shí)又(yòu)麻煩,許多(duō)數(shù)據庫都(dō∏∞≤÷u)有(yǒu)自(zì)動分(fēn)片功能(néng)。
集群不(bù)是(shì)擴展數(shù)據庫的(d♣£e)終極方法,不(bù)過是(shì)第一(yī)步。下(x₩♣ià)一(yī)步是(shì)分(fēn)布式數(shùΩεφλ)據庫,這(zhè)通(tōng)常意味著(zh↕e)在多(duō)個(gè)區(qū)域有(yǒu)集群。一(≥©yī)些(xiē)數(shù)據庫允許分(fēn)布式隻讀(dú★÷§∏)副本和(hé)主讀(dú)寫實例或集群。其他(tā)數(shù)™ε₹據庫允許分(fēn)布式讀(dú)寫實例或集群,并具有(yǒu)同★¥步機(jī)制(zhì)。
分(fēn)布式數(shù)據庫常常可(kě)以為(wèi Ω ✘)遠(yuǎn)程用(yòng)戶提供更低(dī)的(de)延遲和'β(hé)更高(gāo)的(de)吞吐量。東(dōng)京的(d♣• e)用(yòng)戶訪問(wèn)巴塞羅那(nà÷>)的(de)服務器(qì)可(kě)能(nδ↕©éng)會(huì)有(yǒu)260 毫秒(miǎo≥€)的(de)延遲,但(dàn)如(rú)果日(rì)本有(yǒu)數(sσ↓hù)據庫副本,他(tā)們的(de)平★γ♥均讀(dú)取延遲可(kě)能(néng)隻有(yǒu✔™δ✔)10毫秒(miǎo)。這(zhè)對(duì)寫入和(hé)事(shì×>)務的(de)影(yǐng)響取決于數(shù)據庫的¶₽(de)一(yī)緻性要(yào)求以及遠(yuǎn)程集群是(shì)∏± 如(rú)何配置的(de)。
早期的(de)分(fēn)布式數(shù)據庫是(γ₹δφshì)具有(yǒu)最終一(yī)緻性的(de)NoS§≥QL數(shù)據庫。最終一(yī)緻性意味著(zh ↓ e)不(bù)能(néng)保證在遠(yuǎn)程位置寫入後讀(dú)取返回&σ最新信息,但(dàn)會(huì)随著(zhe)時β≠(shí)間(jiān)而更新。最終一(yī)緻性放(fàng)寬了(le)✘₽π←寫入和(hé)事(shì)務完成的(de)要≥£&(yào)求,因而降低(dī)了(le)延遲。
最近(jìn)幾種分(fēn)布式數(shù₹☆±)據庫在數(shù)據結構、共識組和(hé)時(shí)間(☆γjiān)同步的(de)幫助下(xià)實現(xiàn)了(le♣δ↑≈)強一(yī)緻性。這(zhè)方面的(de)例子(zǐ₹¥>)包括Google Cloud Spanner和×<(hé)CockroachDB。
雖然大(dà)多(duō)數(shù)數≥±φ(shù)據庫都(dōu)有(yǒu)免費(fè "×i)的(de)"社區(qū)"或"開(kāi)發/測試"版本,但(dà₹δn)除了(le)在線社區(qū)論壇外(wàiγ$♣☆),它們可(kě)能(néng)缺乏支持。社區(qū)版和(hé)®↓開(kāi)源版也(yě)可(kě)能(<♥néng)缺乏商業(yè)版本提供的(de)一(y>£♥₽ī)些(xiē)性能(néng)優化(h≠★₩uà)。如(rú)果貴公司依賴數(shù)據庫,應在許可(kě)證和(hé∑∏"↕)支持上(shàng)投入成本。
如(rú)果你(nǐ)在雲端運行(xíng)數(shù)據庫,至少(shǎo)✘₽≈需要(yào)為(wèi)雲資源付費(fèi&£)。如(rú)果是(shì)商業(yè)數(shù)εσ"據庫,你(nǐ)還(hái)需要(yào)數(shù)據庫許可(kě)證,這☆§(zhè)可(kě)能(néng)是(shì)來(lái©♥β)自(zì)供應商的(de)長(cháng)期許可(kě)證,也φ★(yě)可(kě)能(néng)是(shì)©∏通(tōng)過雲提供商購(gòu)買的↔•±'(de)按需付費(fèi)許可(kě)證。
CAP定理(lǐ)(Brewer 等人(rén)于19♥"α98 年(nián)提出)聲稱,任何網絡共'¥♠∞享數(shù)據系統最多(duō)具有(yǒu)以下(xià)三↑個(gè)理(lǐ)想屬性中的(de)兩 ©↓ 個(gè):
C:一(yī)緻性,相(xiàng)當于擁有(yǒu)一(yī)個(gè)γ₹最新的(de)數(shù)據副本;
A:該數(shù)據的(de)可(kě)用(y≠§"δòng)性,用(yòng)于更新;
P:對(duì)網絡分(fēn)區(qū)★<的(de)容忍度。
數(shù)據庫的(de)理(lǐ)想屬性取決于它所服務的(d∑¶←×e)應用(yòng)的(de)需求。如(rú)↔₩§果該應用(yòng)顯示目錄,那(nà)麽數(shù)據庫的(δγ↔€de)讀(dú)取速度和(hé)延遲很(hě♥↕☆☆n)重要(yào),文(wén)檔數(shù)據庫可(k₩∑↔ě)能(néng)很(hěn)理(lǐ)想,™®但(dàn)關系數(shù)據庫和(hé)寬列數(shù)據庫也(yě)≤★↓π适用(yòng)。如(rú)果該應用(yòng)∏♥™δ處理(lǐ)金(jīn)融交易,那(nà)麽數(shù)據庫的(de$$<φ)ACID屬性(原子(zǐ)性、一(yī)緻性、隔離(lí)性和(hé™")持久性)就(jiù)很(hěn)重要(yào),關系數(shù)據庫可(σ™↕kě)能(néng)很(hěn)理(lǐ)想。