新聞中心
分布式SQL數(shù)據(jù)庫新的演變方向
譯文
作者:陳峻 2020-08-03 07:00:00
數(shù)據(jù)庫
分布式 本文將和您具體討論分布式SQL的相關(guān)概念和基本特征,以方便進(jìn)行選擇與試用。

【51CTO.com快譯】隨著各個(gè)組織先后將其業(yè)務(wù)轉(zhuǎn)向云端環(huán)境時(shí),他們很快地意識(shí)到:在一些最關(guān)鍵的應(yīng)用背后,那些舊式的關(guān)系型數(shù)據(jù)庫不但限制了遷移的速度,而且根本無法有效地實(shí)現(xiàn)靈活的業(yè)務(wù)擴(kuò)展。許多企業(yè)既希望保持諸如Oracle、SQL Server、Postgres和MySQL之類關(guān)系型數(shù)據(jù)庫的可靠性,又能夠享受到云服務(wù)所帶來的規(guī)模效應(yīng)、以及全局穩(wěn)定性等“紅利”。
為了滿足此類需求,人們開始轉(zhuǎn)向使用NoSQL數(shù)據(jù)庫。但是由于NoSQL并非完全為提供真正的一致性而設(shè)計(jì)的,因此它無法作為事務(wù)型數(shù)據(jù)庫而使用。當(dāng)然,最近有一些NoSQL解決方案聲稱能夠提供“ACID事務(wù)”。不過,它們無法提供諸如:財(cái)務(wù)分帳、庫存控制、以及身份管理等關(guān)鍵任務(wù)所需的隔離級(jí)別。
分布式SQL--一種新的數(shù)據(jù)庫
2012年,Google發(fā)表了一篇有關(guān)Spanner的論文。文中介紹了一種全新的基于分布式系統(tǒng)的,且可以全球性擴(kuò)展的分布數(shù)據(jù)庫??偟恼f來,Google Cloud Spanner是一種可擴(kuò)展的、多版本的、同步復(fù)制(synchronously-replicated)型數(shù)據(jù)庫。它是第一個(gè)能夠在全球范圍內(nèi)分發(fā)數(shù)據(jù),并支持外部一致性(externally-consistent)的分布式事務(wù)的系統(tǒng)(具體請(qǐng)參見--https://ai.google/research/pubs/pub39966)。
下面我們此基礎(chǔ)上,一起來具體討論此類分布式SQL的基本相關(guān)概念,特別是如何實(shí)現(xiàn)可擴(kuò)展性和一致性的。通常,為了能夠在分布式環(huán)境中真正具有可擴(kuò)展性,分布式SQL數(shù)據(jù)庫具有如下七種核心特征:
1.可擴(kuò)展
正如我們無需繁重的準(zhǔn)備就能夠?qū)崿F(xiàn)擴(kuò)展式計(jì)算那樣,分布式SQL數(shù)據(jù)庫能夠在不增加操作復(fù)雜性的情況下,適應(yīng)云端環(huán)境的無縫擴(kuò)展。也就是說,它具有在多個(gè)分布式參與者之間均勻分布數(shù)據(jù)的能力。
2.一致性
分布式SQL數(shù)據(jù)庫必須在分布式環(huán)境中提供高度的隔離性。云端環(huán)境往往是由各種分布式系統(tǒng)和微服務(wù)所組成,而不同的調(diào)用和操作可能會(huì)指向同一塊數(shù)據(jù),因此我們很難保證事務(wù)一致性。分布式SQL數(shù)據(jù)庫除了能夠調(diào)節(jié)資源的爭(zhēng)用,還能夠提供與單實(shí)例數(shù)據(jù)庫相同的事務(wù)隔離級(jí)別。
3.魯棒性
分布式SQL數(shù)據(jù)庫能夠在無需任何外部工具的條件下,提供最高級(jí)別的魯棒性。憑借著云服務(wù)為我們的業(yè)務(wù)所提供持續(xù)在線環(huán)境,分布式數(shù)據(jù)庫可以將故障恢復(fù)的用時(shí)減到最少,并且無需任何外部配置,即可自動(dòng)化地復(fù)制數(shù)據(jù)。
4.地理復(fù)制(Geo-replication)性
由于云服務(wù)能夠以一種可接受的服務(wù)水平,將用戶的業(yè)務(wù)觸達(dá)全球的各個(gè)角落,因此分布式SQL數(shù)據(jù)庫也能夠據(jù)此突破地域的限制。在復(fù)雜、廣泛、分散的地理環(huán)境中,它能夠進(jìn)行分布處理和數(shù)據(jù)存儲(chǔ),以滿足各地用戶的業(yè)務(wù)需求。
5.支持SQL
眾所周知,SQL是數(shù)據(jù)庫所使用的結(jié)構(gòu)化語言,也是所有應(yīng)用邏輯的默認(rèn)語言。憑借著其通用性,我們不必重新培訓(xùn)開發(fā)人員,即可熟練地對(duì)接和調(diào)用數(shù)據(jù)庫資源。除了上面提到的Spanner,諸如Amazon Aurora、Yugabyte、FaunaDB和CockroachDB等都能夠支持SQL。
6.數(shù)據(jù)本地化
在分布式系統(tǒng)中,由于數(shù)據(jù)被分散到了各個(gè)地區(qū)的數(shù)據(jù)中心,因此應(yīng)用架構(gòu)師往往需要了解每個(gè)站點(diǎn)的位置,在程序邏輯上找到最近的位置,以便將需要調(diào)用的存儲(chǔ)數(shù)據(jù)綁定為應(yīng)用的一部分。那么,分布式SQL可以在其數(shù)據(jù)表中,基于某些字段對(duì)數(shù)據(jù)進(jìn)行地理分區(qū),進(jìn)而讓數(shù)據(jù)更接近用戶側(cè)。這就是所謂的數(shù)據(jù)庫的數(shù)據(jù)主權(quán)(data sovereignty)問題。據(jù)此,開發(fā)人員可以確保用戶對(duì)其信息的低延遲訪問,從而最大程度地減少數(shù)據(jù)在云端傳輸?shù)馁M(fèi)用和流量的開銷。
7.多云(Multi-cloud)模式
分布式SQL數(shù)據(jù)庫的一個(gè)獨(dú)特特征是:半自治單元(semi-autonomous units),它們可以參與到較大的系統(tǒng)中。也就是說,每個(gè)單元都能夠自行部署,然后加入到CockroachDB集群之類更大的系統(tǒng)中。通過該特征,分布式SQL數(shù)據(jù)庫可以更好地?cái)U(kuò)展到真正的多云環(huán)境中,而不僅僅依賴于單個(gè)網(wǎng)絡(luò),來完成數(shù)據(jù)的分發(fā)。在此模式下,參與者(participant)的云服務(wù)類別將不再受到限制,它們可以位于任何地方,任何一種公共云、私有云、甚至是單個(gè)的本地(on-premise)實(shí)例。顯然,這對(duì)于我們?cè)诜植际交旌吓c多云環(huán)境中的各類應(yīng)用來說,都是至關(guān)重要。
分布式SQL的基本要求
上述七項(xiàng)特征可謂分布式SQL在云端環(huán)境中所獨(dú)有的。但是,說到底它仍然是一種數(shù)據(jù)庫,因此也應(yīng)當(dāng)具備數(shù)據(jù)庫的如下基本功能:
- 可管理性:用戶可以使用一組命令行、或基于圖形化的工具,來輕松地安裝和配置目標(biāo)數(shù)據(jù)庫。用戶通過針對(duì)運(yùn)行環(huán)境的控制、數(shù)據(jù)生命周期的管理、以及常規(guī)的備份與還原,以實(shí)現(xiàn)數(shù)據(jù)表的創(chuàng)建,schema的定義與實(shí)現(xiàn),索引與分區(qū)的設(shè)置,以及DDL的重建等。
- 可優(yōu)化:DBA可以深入了解數(shù)據(jù)庫在查詢響應(yīng)方面的性能,運(yùn)用基于成本的優(yōu)化器(cost-based optimizer)等高級(jí)功能,進(jìn)而實(shí)現(xiàn)查詢效率的優(yōu)化。
- 具有安全性:與企業(yè)的其他常用軟件類似,安全性是一個(gè)不容忽視的環(huán)節(jié)。數(shù)據(jù)庫應(yīng)提供認(rèn)證、授權(quán)和可問責(zé)性,這樣的AAA機(jī)制。而且,此類功能不應(yīng)該只獨(dú)立數(shù)據(jù)庫內(nèi)部,而應(yīng)當(dāng)與具有身份管理和治理功能的集中式管控系統(tǒng)集成一起,以便對(duì)流轉(zhuǎn)在整個(gè)系統(tǒng)中各個(gè)級(jí)別的數(shù)據(jù)(包括表、行和列等級(jí)別)設(shè)置一致性的策略。
- 可集成:顯然,數(shù)據(jù)庫需要能夠通過經(jīng)過測(cè)試的、或已知的驅(qū)動(dòng)程序,與前端應(yīng)用相集成,以實(shí)現(xiàn)批量獲取或?qū)С鰯?shù)據(jù)等服務(wù)。與此同時(shí),數(shù)據(jù)庫還應(yīng)通過與ETL(Extract-Transform-Load)工具的配合使用,將捕獲到的數(shù)據(jù),與數(shù)據(jù)流分析、或云端存儲(chǔ)等更高級(jí)的服務(wù)相集成。
當(dāng)然,上述所謂“基本”功能要求,其實(shí)并不簡(jiǎn)單,它們旨在提供更加成熟的、針對(duì)企業(yè)級(jí)應(yīng)用的數(shù)據(jù)庫。
總結(jié)
作為一種新興的類別和演變的方向,分布式SQL數(shù)據(jù)庫還需要在數(shù)據(jù)一致性和本地化等方面,進(jìn)一步配合云端環(huán)境來不斷改進(jìn)。畢竟,在嚴(yán)苛的生產(chǎn)環(huán)境中,此類數(shù)據(jù)庫會(huì)碰到更多有關(guān)性能和效率等方面的實(shí)際問題。
前文提到的CockroachDB,是一種云原生的分布式SQL數(shù)據(jù)庫。它可以幫助各種企業(yè)級(jí)應(yīng)用,將最基本的工作負(fù)載和一些關(guān)鍵性的任務(wù)遷移到云端,并實(shí)現(xiàn)了對(duì)于各種高級(jí)云端原生環(huán)境的策略編排。您可以作為了解分布式SQL的一個(gè)切入口進(jìn)行試用。
原標(biāo)題:Distributed SQL: An Evolution of the Database ,作者: Jim Walker
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】
標(biāo)題名稱:分布式SQL數(shù)據(jù)庫新的演變方向
網(wǎng)站鏈接:http://fisionsoft.com.cn/article/dphehjs.html


咨詢
建站咨詢
