自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

分片并不意味著分布式

數(shù)據(jù)庫
Sharding(分片)是一種將數(shù)據(jù)和負(fù)載分布到多個獨(dú)立的數(shù)據(jù)庫實例的技術(shù),盡管"分布"一詞出現(xiàn)在分片的定義中,但分片數(shù)據(jù)庫并不是分布式數(shù)據(jù)庫。

Sharding(分片)是一種將數(shù)據(jù)和負(fù)載分布到多個獨(dú)立的數(shù)據(jù)庫實例的技術(shù)。這種方法通過將原始數(shù)據(jù)集分割為分片來利用水平可擴(kuò)展性,然后將這些分片分布到多個數(shù)據(jù)庫實例中。

1*yg3PV8O2RO4YegyiYeiItA.png

但是,盡管"分布"一詞出現(xiàn)在分片的定義中,但分片數(shù)據(jù)庫并不是分布式數(shù)據(jù)庫。

分片解決方案

每個分片解決方案在其架構(gòu)中都有一個關(guān)鍵組件。該組件可以有各種名稱,包括協(xié)調(diào)器、路由器或?qū)а荩?/p>

1*kp39_8mQ0E9bIO0Lw3PGFw.png

協(xié)調(diào)器是唯一一個知道數(shù)據(jù)分布的組件。它將客戶端請求映射到特定的分片,然后轉(zhuǎn)發(fā)到相應(yīng)的數(shù)據(jù)庫實例。這就是為什么客戶端必須始終通過協(xié)調(diào)器路由其請求的原因。

例如,如果客戶端想要將新記錄插入到Car表中,請求首先會傳遞到協(xié)調(diào)器。協(xié)調(diào)器將記錄的主鍵映射到其中一個分片,然后將請求轉(zhuǎn)發(fā)到負(fù)責(zé)該分片的數(shù)據(jù)庫實例。

1*YNUB6y8WJnp0CCVAXSjQ0g.png

在上面的示意圖中,首先,協(xié)調(diào)器將鍵121映射到分片10,然后將記錄插入到存儲在擁有分片10的數(shù)據(jù)庫實例上的表car_10中。

然而,還有一個問題:為什么在分片解決方案中需要協(xié)調(diào)器呢?答案很直接。分片存儲在設(shè)計用于單服務(wù)器部署的數(shù)據(jù)庫實例上。

這些數(shù)據(jù)庫實例不相互通信,也不支持任何能促進(jìn)這種通信的協(xié)議。它們彼此不知道,存在于各自的隔離環(huán)境中,對于它們是一個更大系統(tǒng)的一部分這一事實毫不知情。

因此,在分片解決方案中,協(xié)調(diào)器是不可或缺的。如果您有興趣更深入地了解分片數(shù)據(jù)庫架構(gòu),請考慮探索用于PostgreSQL的CitusData或Azure CosmosDB,用于MySQL的Vitess,用于Oracle的Distributed Autonomous Database以及MongoDB Sharded Cluster。

分布式數(shù)據(jù)庫

與分片數(shù)據(jù)庫解決方案類似,分布式數(shù)據(jù)庫也使用類似的分片技術(shù)在數(shù)據(jù)庫節(jié)點(diǎn)群集中分發(fā)數(shù)據(jù)和負(fù)載。但是,與分片解決方案不同,分布式數(shù)據(jù)庫不依賴于協(xié)調(diào)器組件。

分布式數(shù)據(jù)庫建立在共享無關(guān)架構(gòu)上,沒有像協(xié)調(diào)器這樣的單一組件負(fù)擔(dān)著做出許多決策:

1*deOgcXccWs9lKUSgLPNOww.png

集群中的所有節(jié)點(diǎn)都知道對方,因此也知道數(shù)據(jù)的分布。通過直接通信,每個節(jié)點(diǎn)可以將客戶端請求路由到適當(dāng)?shù)姆制姓?。此外,它們可以?zhí)行和協(xié)調(diào)多節(jié)點(diǎn)事務(wù)。當(dāng)擴(kuò)展到更多節(jié)點(diǎn)時,集群會自動重新平衡和分割分片。節(jié)點(diǎn)保持?jǐn)?shù)據(jù)的冗余副本(基于配置的復(fù)制因子),即使某些節(jié)點(diǎn)失敗,也可以繼續(xù)操作而無需停機(jī)。

所有這些對于客戶端來說是透明的,客戶端只需與任何節(jié)點(diǎn)建立連接,然后允許該節(jié)點(diǎn)管理分布式方面。

例如,客戶端可能連接到node1并插入具有id121的新的Car記錄。如果node1是記錄分片的所有者,則它將在本地存儲記錄,并使用共識算法將更改復(fù)制到其他節(jié)點(diǎn)的子集。如果不是,node1將記錄轉(zhuǎn)發(fā)到分片的所有者,可能是node4。

1*weEdq2BxIpf6GiLjipns5Q.png

如果您有興趣探索真正分布式數(shù)據(jù)庫的架構(gòu),請考慮研究Google Spanner,YugabyteDB,CockroachDB,Apache Cassandra或Apache Ignite。

在數(shù)據(jù)庫領(lǐng)域,分片和分布經(jīng)常被混為一談,但它們有著不同的目的。

雖然分片涉及將數(shù)據(jù)分割到多個獨(dú)立的實例中,但這并不意味著系統(tǒng)本質(zhì)上是分布式的。分片解決方案中協(xié)調(diào)器的存在,該協(xié)調(diào)器指導(dǎo)客戶端請求到適當(dāng)?shù)姆制?,突顯了這一區(qū)別。

另一方面,建立在共享無關(guān)架構(gòu)上的分布式數(shù)據(jù)庫缺乏這種集中式協(xié)調(diào)器。這些系統(tǒng)中的節(jié)點(diǎn)都知道對方,管理數(shù)據(jù)分布,并無縫處理客戶端請求。

這兩種架構(gòu)都有其優(yōu)點(diǎn),了解它們的細(xì)微差別對于進(jìn)行數(shù)據(jù)庫設(shè)計和選擇至關(guān)重要。

責(zé)任編輯:趙寧寧 來源: 小技術(shù)君
相關(guān)推薦

2022-06-17 08:00:00

低代碼工具開發(fā)

2022-06-29 08:13:36

漏洞網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)安全

2013-02-18 09:25:48

WebKitWeb瀏覽器

2023-04-06 06:58:55

2011-08-29 15:55:48

虛擬化AMD

2015-01-21 09:08:13

數(shù)據(jù)安全合規(guī)性數(shù)據(jù)泄露

2018-10-10 16:06:27

天線路由器設(shè)備

2015-03-12 09:15:59

百度云OS云OS

2013-03-27 10:43:18

2015-08-24 09:51:04

dtit

2023-02-13 09:42:10

人工智能ChatGPT

2019-04-03 11:05:47

DevOps敏捷開發(fā)開源

2014-08-18 10:31:41

游戲設(shè)計

2023-09-27 10:54:25

物聯(lián)網(wǎng)傳感器

2013-12-03 09:37:02

工作時間

2021-04-08 10:17:13

云原生公共云云計算

2025-02-18 08:22:00

人工智能SaaSLLM

2021-08-05 16:30:58

邊緣物聯(lián)網(wǎng)物聯(lián)網(wǎng)大數(shù)據(jù)

2010-10-26 11:16:55

紅旗云計算祥云工程
點(diǎn)贊
收藏

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