你需要集群數(shù)據(jù)庫嗎?
集群數(shù)據(jù)庫與單節(jié)點(diǎn)數(shù)據(jù)庫相比有多個(gè)優(yōu)點(diǎn),但費(fèi)用和復(fù)雜性更高。除此之外,集群數(shù)據(jù)庫還有更高的可用性、更高的吞吐量,在一些情況下還有更低的延遲。
對(duì)于每個(gè)節(jié)點(diǎn)都有整個(gè)數(shù)據(jù)庫副本的集群而言,你可以獲得更高的冗余性和更高的可用性。視策略而定,讀取操作可能只需要一個(gè)節(jié)點(diǎn),否則集群中的一組節(jié)點(diǎn)可能需要就返回值達(dá)成一致。
使用有多個(gè)節(jié)點(diǎn)的集群可以讓數(shù)據(jù)庫使用更多的CPU,從而增加吞吐量,并提高事務(wù)率。使用允許最近節(jié)點(diǎn)返回值的讀取策略,讀取延遲通常會(huì)降低。另一方面,必須等待所有節(jié)點(diǎn)提交的寫入或事務(wù)策略,有時(shí)會(huì)增加寫入延遲。
使用共識(shí)組有助于縮短延遲。如果你有一個(gè)三節(jié)點(diǎn)集群,一個(gè)節(jié)點(diǎn)負(fù)載過大,另兩個(gè)節(jié)點(diǎn)就可以批準(zhǔn)共識(shí)事務(wù),并在第三個(gè)節(jié)點(diǎn)可用時(shí)更新該節(jié)點(diǎn)。
分片是一種通過劃分?jǐn)?shù)據(jù)庫來處理更多數(shù)據(jù)的方法。手動(dòng)分片可能費(fèi)時(shí)又麻煩,許多數(shù)據(jù)庫都有自動(dòng)分片功能。
你需要分布式數(shù)據(jù)庫嗎?
集群不是擴(kuò)展數(shù)據(jù)庫的終極方法,不過是第一步。下一步是分布式數(shù)據(jù)庫,這通常意味著在多個(gè)區(qū)域有集群。一些數(shù)據(jù)庫允許分布式只讀副本和主讀寫實(shí)例或集群。其他數(shù)據(jù)庫允許分布式讀寫實(shí)例或集群,并具有同步機(jī)制。
分布式數(shù)據(jù)庫常常可以為遠(yuǎn)程用戶提供更低的延遲和更高的吞吐量。東京的用戶訪問巴塞羅那的服務(wù)器可能會(huì)有260 毫秒的延遲,但如果日本有數(shù)據(jù)庫副本,他們的平均讀取延遲可能只有10毫秒。這對(duì)寫入和事務(wù)的影響取決于數(shù)據(jù)庫的一致性要求以及遠(yuǎn)程集群是如何配置的。
早期的分布式數(shù)據(jù)庫是具有最終一致性的NoSQL數(shù)據(jù)庫。最終一致性意味著不能保證在遠(yuǎn)程位置寫入后讀取返回最新信息,但會(huì)隨著時(shí)間而更新。最終一致性放寬了寫入和事務(wù)完成的要求,因而降低了延遲。
最近幾種分布式數(shù)據(jù)庫在數(shù)據(jù)結(jié)構(gòu)、共識(shí)組和時(shí)間同步的幫助下實(shí)現(xiàn)了強(qiáng)一致性。這方面的例子包括Google Cloud Spanner和CockroachDB。
你的數(shù)據(jù)庫預(yù)算是多少?
雖然大多數(shù)數(shù)據(jù)庫都有免費(fèi)的@quot;社區(qū)@quot;或@quot;開發(fā)/測(cè)試@quot;版本,但除了在線社區(qū)論壇外,它們可能缺乏支持。社區(qū)版和開源版也可能缺乏商業(yè)版本提供的一些性能優(yōu)化。如果貴公司依賴數(shù)據(jù)庫,應(yīng)在許可證和支持上投入成本。
如果你在云端運(yùn)行數(shù)據(jù)庫,至少需要為云資源付費(fèi)。如果是商業(yè)數(shù)據(jù)庫,你還需要數(shù)據(jù)庫許可證,這可能是來自供應(yīng)商的長期許可證,也可能是通過云提供商購買的按需付費(fèi)許可證。
附:CAP 定理
CAP定理(Brewer 等人于1998 年提出)聲稱,任何網(wǎng)絡(luò)共享數(shù)據(jù)系統(tǒng)最多具有以下三個(gè)理想屬性中的兩個(gè):
C:一致性,相當(dāng)于擁有一個(gè)最新的數(shù)據(jù)副本;
A:該數(shù)據(jù)的可用性,用于更新;
P:對(duì)網(wǎng)絡(luò)分區(qū)的容忍度。
數(shù)據(jù)庫的理想屬性取決于它所服務(wù)的應(yīng)用的需求。如果該應(yīng)用顯示目錄,那么數(shù)據(jù)庫的讀取速度和延遲很重要,文檔數(shù)據(jù)庫可能很理想,但關(guān)系數(shù)據(jù)庫和寬列數(shù)據(jù)庫也適用。如果該應(yīng)用處理金融交易,那么數(shù)據(jù)庫的ACID屬性(原子性、一致性、隔離性和持久性)就很重要,關(guān)系數(shù)據(jù)庫可能很理想。
這則三分之二的公式被證明過于簡單化。在現(xiàn)代分布式數(shù)據(jù)庫架構(gòu)中,節(jié)點(diǎn)故障和網(wǎng)絡(luò)分區(qū)由共享組使用Paxos或Raft算法來緩解。實(shí)際上,當(dāng)一個(gè)節(jié)點(diǎn)退出集群后,只要它有仲裁機(jī)制,集群就會(huì)繼續(xù)工作。此外,分區(qū)在私有網(wǎng)絡(luò)內(nèi)部很少見,比如在主要云提供商處的私有網(wǎng)絡(luò):它們?cè)跀?shù)據(jù)中心之間使用冗余光纖,并不通過公共互聯(lián)網(wǎng)傳輸內(nèi)部流量。
這意味著,雖然從嚴(yán)格上來說沒有數(shù)據(jù)庫可以繞過CAP定理,但實(shí)際上好的云數(shù)據(jù)庫擁有超過五個(gè)九(99.999%)的可用性,這些數(shù)據(jù)庫可以繞過CAP定理,同時(shí)擁有一致性和可用性。
作者:Martin Heller現(xiàn)為《InfoWorld》網(wǎng)站的特約編輯兼評(píng)論員,此前擔(dān)任Web和Windows編程顧問。從1986年至2010年,Heller一直從事數(shù)據(jù)庫、軟件和網(wǎng)站的開發(fā)工作。近期,他出任Alpha Software的技術(shù)和教育副總裁,還是Tubifi的主席兼首席執(zhí)行官。
原文網(wǎng)址:https://www.infoworld.com/article/3627792/how-to-choose-a-cloud-database.html