偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

基礎(chǔ)普及之什么是分布式SQL

譯文
運(yùn)維 數(shù)據(jù)庫(kù)運(yùn)維 分布式
本文向您介紹分布式SQL的基本概念,其對(duì)應(yīng)的數(shù)據(jù)庫(kù)架構(gòu),以及對(duì)于業(yè)務(wù)應(yīng)用的各種優(yōu)勢(shì)。

【51CTO.com快譯】在過(guò)去的近40年中,SQL已經(jīng)成為了關(guān)系型數(shù)據(jù)庫(kù)(又稱為RDBMS)的通用語(yǔ)言。這也就是為什么關(guān)系型數(shù)據(jù)庫(kù)經(jīng)常被簡(jiǎn)單稱為SQL數(shù)據(jù)庫(kù)的原因。從架構(gòu)而言,以O(shè)racle、PostgreSQL和MySQL為首的傳統(tǒng)SQL數(shù)據(jù)庫(kù),是單體式(monolithic)的。也就是說(shuō),它們無(wú)法在多個(gè)實(shí)例之間自動(dòng)地分配數(shù)據(jù)和查詢。而NewSQL數(shù)據(jù)庫(kù)的出現(xiàn)使得SQL具有了可擴(kuò)展性和高性能。當(dāng)然,此類數(shù)據(jù)庫(kù)仍然具有與生俱來(lái)的局限性。

2015年,Docker容器和Kubernetes編排的出現(xiàn),讓我們能夠以靈活、可組合的基礎(chǔ)架構(gòu)方式,來(lái)創(chuàng)建各種基于微服務(wù)的應(yīng)用。其中,內(nèi)置的可擴(kuò)容性、靈活性、以及地理分布特性,是此類云原生架構(gòu)的核心特點(diǎn)。這也就是人們常說(shuō)的“分布式SQL”--這一新型的數(shù)據(jù)庫(kù)。在應(yīng)用方面,此類分布式SQL數(shù)據(jù)庫(kù)的一個(gè)顯著特征是:無(wú)論其中有多少個(gè)節(jié)點(diǎn),整個(gè)數(shù)據(jù)庫(kù)集群對(duì)于應(yīng)用程序而言,都被其視為一個(gè)邏輯的SQL數(shù)據(jù)庫(kù)。

數(shù)據(jù)庫(kù)的架構(gòu)

分布式SQL數(shù)據(jù)庫(kù)通常具有如下三層體系結(jié)構(gòu)。

基礎(chǔ)普及之什么是分布式SQL

1. SQL API

顧名思義,分布式SQL數(shù)據(jù)庫(kù)仍然必須提供SQL API服務(wù),以便應(yīng)用程序可以對(duì)關(guān)系型數(shù)據(jù)進(jìn)行建模,并執(zhí)行涉及到各種關(guān)系信息的查詢操作。它保留了SQL數(shù)據(jù)庫(kù)典型的數(shù)據(jù)建模結(jié)構(gòu),包括:索引、外鍵約束、JOIN查詢、以及多行ACID事務(wù)(譯者注:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability))。

2.分布式查詢執(zhí)行

由于分布式SQL的查詢能夠被自動(dòng)地分配到目標(biāo)群集的多個(gè)節(jié)點(diǎn)上,因此,此舉有效地避免了單個(gè)節(jié)點(diǎn)成為查詢處理中的瓶頸問(wèn)題。具體的查詢流程為:目標(biāo)群集中的任一節(jié)點(diǎn)都可以接受傳入的某個(gè)查詢。通過(guò)在網(wǎng)絡(luò)中的各節(jié)點(diǎn)之間傳輸數(shù)據(jù)、協(xié)同工作,該節(jié)點(diǎn)能夠以最小化處理等待時(shí)間的方式,僅分擔(dān)查詢請(qǐng)求中的一部分任務(wù)。而由其他節(jié)點(diǎn)協(xié)助完成剩余的部分。最后,該接受請(qǐng)求的原始節(jié)點(diǎn),將匯總所有的查詢結(jié)果,并發(fā)回給客戶端應(yīng)用程序。

3.分布式數(shù)據(jù)存儲(chǔ)

那些包含有索引信息的數(shù)據(jù)會(huì)被自動(dòng)分布(也稱為分片,sharded)到群集的多個(gè)節(jié)點(diǎn)處。此舉確保了單個(gè)節(jié)點(diǎn)都不會(huì)成為高性能和高可用性的瓶頸。此外,數(shù)據(jù)庫(kù)集群能夠支持高一致性的復(fù)制、以及多行(也稱為分布式)ACID事務(wù),進(jìn)而保留了單個(gè)邏輯數(shù)據(jù)庫(kù)的基本概念。

高度一致性的復(fù)制

在數(shù)據(jù)庫(kù)的管理概念中,所謂支持強(qiáng)大的SQL API層,其本質(zhì)上就是要求處于底層的存儲(chǔ)層,能夠在跨數(shù)據(jù)庫(kù)的群集節(jié)點(diǎn)上建立強(qiáng)一致性的復(fù)制。這就意味著:對(duì)于數(shù)據(jù)庫(kù)的寫入操作,將會(huì)在多個(gè)節(jié)點(diǎn)上被同步提交,以保證出現(xiàn)故障時(shí)的數(shù)據(jù)可用性。而讀取操作則是基于最后一次被提交的寫入數(shù)據(jù),或是出錯(cuò)之前的數(shù)據(jù)。該屬性通常被稱為線性一致性(Linearizability,http://www.bailis.org/blog/linearizability-versus-serializability/)。根據(jù)著名的CAP原則(https://towardsdatascience.com/cap-theorem-and-distributed-database-management-systems-5c2be977950e,譯者注:一致性(Consistency)、可用性(Availability)、分區(qū)容錯(cuò)性(Partition tolerance)),分布式SQL數(shù)據(jù)庫(kù)具有一致性和分區(qū)容錯(cuò)性。

分布式的ACID事務(wù)

為了能夠支持分布式的ACID事務(wù),分布式數(shù)據(jù)庫(kù)的存儲(chǔ)層需要在多個(gè)節(jié)點(diǎn)的多個(gè)數(shù)據(jù)行中進(jìn)行事務(wù)性的協(xié)調(diào)任務(wù)。此處,它們正好用到了兩階段提交(2 Phase Commit,2PC)協(xié)議。參照ACID中I(隔離性)的要求,為了能夠?qū)Σl(fā)式的數(shù)據(jù)訪問(wèn)實(shí)現(xiàn)嚴(yán)格的隔離,分布式SQL數(shù)據(jù)庫(kù)將可序列化性(Serializability,http://www.bailis.org/blog/linearizability-versus-serializability/)作為最嚴(yán)格的隔離級(jí)別,并且通過(guò)快照(Snapshot)之類的其他方式來(lái)支持較弱的隔離級(jí)別。

業(yè)務(wù)應(yīng)用的優(yōu)勢(shì)

分布式SQL的四個(gè)關(guān)鍵優(yōu)勢(shì),如下圖所示。

1.讓SQL和事務(wù)類的開發(fā)更具敏捷性

如今,由于SQL仍然是一種輕松實(shí)現(xiàn)建模關(guān)系和多行操作的數(shù)據(jù)建模語(yǔ)言,因此為了滿足應(yīng)用開發(fā)人員持續(xù)對(duì)于SQL數(shù)據(jù)庫(kù)的操作習(xí)慣與需求,即便是Amazon DynamoDB、MongoDB和FaunaDB之類的NoSQL數(shù)據(jù)庫(kù),也開始具備了事務(wù)性的操作能力。例如:SQL通過(guò)顯式(使用BEGIN和END TRANSACTION的語(yǔ)法)和隱式(使用外鍵和JOIN查詢之類的二級(jí)索引),來(lái)允許多行事務(wù),這比傳統(tǒng)的鍵-值(key-value)型NoSQL要方便得多。

此外,開發(fā)人員往往喜歡通過(guò)一次性輕松地使用SQL,來(lái)對(duì)數(shù)據(jù)(和存儲(chǔ))進(jìn)行建模。而在業(yè)務(wù)需求發(fā)生變化時(shí),他們只需修改JOIN,便可反映到查詢之中。

2.具有本地故障轉(zhuǎn)移與修復(fù)的超強(qiáng)彈性

在分布式SQL數(shù)據(jù)庫(kù)中,我們使用基于分片(per-shard)的分布式共識(shí)復(fù)制(consensus replication)等技術(shù),來(lái)確保每個(gè)分片(而不是每個(gè)實(shí)例)在出現(xiàn)故障時(shí),仍可保持高可用性。

如此,基礎(chǔ)架構(gòu)一旦出現(xiàn)故障,它始終只會(huì)影響到目標(biāo)數(shù)據(jù)的某個(gè)子集(也就是那些被leader分割開的碎片),而不會(huì)影響到整個(gè)集群。并且,由于剩余的分片副本能夠在幾秒鐘之內(nèi)自動(dòng)地選出新的leader,因此,集群會(huì)在出現(xiàn)故障時(shí)表現(xiàn)出一定的自我修復(fù)能力。

此外,這些發(fā)生在后臺(tái)群集配置上的更改對(duì)于應(yīng)用程序來(lái)說(shuō)是完全透明的,它們可以照常運(yùn)行,而不會(huì)出現(xiàn)任何中斷或是性能的驟降。

3.具有按需進(jìn)行水平寫入的可擴(kuò)展性

《如何在分布式SQL數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)分片》一文(https://dzone.com/articles/how-data-sharding-works-in-a-distributed-sql-datab),說(shuō)明了開發(fā)人員通常是如何在分布式SQL數(shù)據(jù)庫(kù)中實(shí)現(xiàn)自動(dòng)化數(shù)據(jù)分片的。無(wú)論有新節(jié)點(diǎn)的加入,還是現(xiàn)有節(jié)點(diǎn)的刪除,分片都將會(huì)在所有可用節(jié)點(diǎn)之間保持自動(dòng)的平衡狀態(tài)。

目前,那些需要處理事務(wù)的應(yīng)用程序都具有可擴(kuò)展能力的微服務(wù)。它們?cè)诓恍枰略龌A(chǔ)架構(gòu)的基礎(chǔ)上,完全可以直接依賴于內(nèi)存中的緩存(無(wú)需從數(shù)據(jù)庫(kù)中讀取請(qǐng)求,而保留對(duì)于寫入請(qǐng)求的處理)或NoSQL數(shù)據(jù)庫(kù)(雖然能夠擴(kuò)展寫入操作,但是無(wú)法保證ACID)。

4.針對(duì)地域分布式數(shù)據(jù)的低延遲性

正如《構(gòu)建具有低延遲的云原生、以及地域分布式SQL應(yīng)用的9種技術(shù)》一文(https://dzone.com/articles/9-techniques-to-build-cloud-native-geo-distributed)所強(qiáng)調(diào)的那樣:分布式SQL數(shù)據(jù)庫(kù)可以提供多種技術(shù),來(lái)構(gòu)建地域分布式的應(yīng)用程序。這些技術(shù)不僅有助于對(duì)于區(qū)域性故障實(shí)現(xiàn)自動(dòng)化容災(zāi),而且還能夠在一定程度上通過(guò)讓數(shù)據(jù)更接近來(lái)自本區(qū)域的最終用戶,以實(shí)現(xiàn)更低的數(shù)據(jù)延遲性。

原文標(biāo)題:What Is Distributed SQL? ,作者:Sid Choudhury

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:龐桂玉 來(lái)源: 51CTO
相關(guān)推薦

2020-12-14 14:24:07

CAP分布式數(shù)據(jù)一致性

2010-07-05 16:53:38

SQL Server

2018-01-30 11:17:56

集群分布式SOA?

2015-08-03 15:48:42

Hadoop大數(shù)據(jù)

2022-03-29 23:17:52

PostgreSQL集群Citus

2018-07-17 08:14:22

分布式分布式鎖方位

2018-10-29 08:44:29

分布式兩階段提交事務(wù)

2024-03-01 09:53:34

2009-09-18 15:10:13

分布式事務(wù)LINQ TO SQL

2016-10-08 21:12:36

CopyleftCopyright開源

2020-02-12 15:02:39

KVM架構(gòu)圖分布式

2009-06-12 11:42:28

EJB分布式

2017-04-14 09:48:25

分布式存儲(chǔ)系統(tǒng)

2025-06-13 07:30:51

2010-09-10 08:54:02

2022-03-06 21:43:05

Citus架構(gòu)PostgreSQL

2019-02-13 13:41:07

MemCache分布式HashMap

2019-09-26 15:43:52

Hadoop集群防火墻

2020-08-14 09:04:34

分布式事務(wù)

2021-07-07 07:14:48

分布式ID分布式系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)