分布式數(shù)據(jù)庫系統(tǒng)是將屬于單個(gè)邏輯數(shù)據(jù)庫的數(shù)據(jù)分發(fā)到兩個(gè)或多個(gè)物理數(shù)據(jù)庫的系統(tǒng)。除了這個(gè)簡(jiǎn)單的定義之外,關(guān)于數(shù)據(jù)何時(shí)、如何以及為什么分發(fā),還有許多令人困惑的可能性。有些適用于邊緣和/或霧計(jì)算,有些適用于霧和/或云計(jì)算,有些適用于邊緣,霧和云計(jì)算的整個(gè)范圍。
本文將介紹邊緣、霧和云計(jì)算背景下分布式數(shù)據(jù)庫系統(tǒng)的類型,解釋“何時(shí)、如何以及為什么”數(shù)據(jù)是分布式的,以及為什么這些細(xì)節(jié)使某些分布式數(shù)據(jù)庫系統(tǒng)適用于(或不適用)邊緣、霧和云計(jì)算中的特定需求。
定義
維基百科的作者在定義分布式數(shù)據(jù)庫時(shí)采取了集體嘗試:“分布式數(shù)據(jù)庫是存儲(chǔ)設(shè)備并非全部連接到公共處理器的數(shù)據(jù)庫。它可以存儲(chǔ)在位于同一物理位置的多臺(tái)計(jì)算機(jī)中;或者可能分散在互連的計(jì)算機(jī)網(wǎng)絡(luò)上。與處理器緊密耦合并構(gòu)成單一數(shù)據(jù)庫系統(tǒng)的并行系統(tǒng)不同,分布式數(shù)據(jù)庫系統(tǒng)由松散耦合的站點(diǎn)組成,這些站點(diǎn)不共享任何物理組件。該定義本身部分來自與美國(guó)商務(wù)部相關(guān)的電信科學(xué)研究所。
這個(gè)定義實(shí)際上相當(dāng)狹窄。在“分布式數(shù)據(jù)庫”的一般標(biāo)題下,我至少會(huì)問到其他三個(gè)用例:高可用性,集群數(shù)據(jù)庫和區(qū)塊鏈。維基百科的定義,高可用性和集群都適用于物聯(lián)網(wǎng)。此外,我認(rèn)為分布式數(shù)據(jù)庫的分片可以存在于同一臺(tái)物理計(jì)算機(jī)上。使數(shù)據(jù)庫分布式的原因是,各個(gè)分區(qū)由數(shù)據(jù)庫系統(tǒng)的單獨(dú)實(shí)例管理,而不是由這些分區(qū)的物理位置管理。第六節(jié)將對(duì)此進(jìn)行詳細(xì)介紹。
高可用性
要使數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)高可用性 (HA),它需要在單獨(dú)的硬件實(shí)例中實(shí)時(shí)維護(hù)物理數(shù)據(jù)庫的相同副本。通過維護(hù),我的意思是保持副本與主副本的一致性。在這種情況下,(至少)有兩個(gè)數(shù)據(jù)庫副本,我們稱之為主數(shù)據(jù)庫和從數(shù)據(jù)庫(有時(shí)稱為副本)。應(yīng)用于主數(shù)據(jù)庫的操作(即插入、更新、刪除操作)必須在從屬數(shù)據(jù)庫上復(fù)制,并且從站必須準(zhǔn)備好隨時(shí)將其角色更改為主數(shù)據(jù)庫。這稱為故障轉(zhuǎn)移。主站和副本通常部署在不同的物理系統(tǒng)上,但在電信中,常見的 HA 設(shè)置是機(jī)箱內(nèi)的多個(gè)板:主控制器板、備用控制器板和一些數(shù)量的線卡,每個(gè)線卡都為某種協(xié)議(BGP、OSPF 等)提供服務(wù)。在這里,主數(shù)據(jù)庫由主控制器板上的進(jìn)程維護(hù)。數(shù)據(jù)庫系統(tǒng)將更改復(fù)制到備用控制器板上的從數(shù)據(jù)庫,該從屬數(shù)據(jù)庫具有相同的進(jìn)程,等待在主控制器板發(fā)生故障(或只是在熱插拔設(shè)置中被移除)時(shí)接管處理。在物聯(lián)網(wǎng)中,高可用性對(duì)于任務(wù)關(guān)鍵型工業(yè)系統(tǒng)是可取的,以保持網(wǎng)關(guān)的可用性,以及在云中,以確保即使在面對(duì)硬件故障時(shí)也可以繼續(xù)執(zhí)行實(shí)時(shí)分析。
集群數(shù)據(jù)庫
群集數(shù)據(jù)庫是在整個(gè)數(shù)據(jù)庫有多個(gè)保持同步的物理副本的數(shù)據(jù)庫。與 HA 的不同之處在于,數(shù)據(jù)庫的任何物理實(shí)例都可以修改,并且會(huì)將其修改復(fù)制到集群中的其他數(shù)據(jù)庫實(shí)例。這也稱為主-主配置,與 HA 的主-從配置相反。這就是數(shù)據(jù)庫集群實(shí)現(xiàn)之間的相似之處結(jié)束的地方。從廣義上講,有兩種實(shí)現(xiàn)模型:ACID和最終一致性。在 ACID 實(shí)現(xiàn)中,修改在兩階段提交協(xié)議中同步復(fù)制,以確保一旦提交,更改就會(huì)立即反映在數(shù)據(jù)庫的每個(gè)物理實(shí)例中。換句話說,所有數(shù)據(jù)庫實(shí)例始終是一致的。此體系結(jié)構(gòu)消除了發(fā)生沖突的可能性(或者,更確切地說,在事務(wù)成功提交到群集之前解決沖突)。使用最終一致性時(shí),可能會(huì)在原始節(jié)點(diǎn)將更改提交到數(shù)據(jù)庫很久之后異步復(fù)制更改。這意味著某種協(xié)調(diào)過程,以解決由兩個(gè)或多個(gè)節(jié)點(diǎn)發(fā)起的沖突更改。使用最終一致性,必須編寫應(yīng)用程序以應(yīng)對(duì)它們所附加到的數(shù)據(jù)庫的物理實(shí)例中存在過時(shí)數(shù)據(jù)的可能性。例如,考慮一個(gè)全球在線書商。庫存中可能有一本特定書籍的副本;紐約和悉尼的買家都會(huì)看到這本書有貨,兩者都可以把書放在購物車?yán)锝Y(jié)賬。系統(tǒng)將不得不弄清楚誰真正拿到了這本書,誰的訂單被延期了。用戶已經(jīng)接受了這一點(diǎn)。但是,這種模式永遠(yuǎn)不適用于需要驗(yàn)證用戶是否訂閱了某種服務(wù)或擁有足夠資金的蜂窩電話網(wǎng)絡(luò)。這種類型的系統(tǒng)需要一致的數(shù)據(jù)庫視圖。由于 ACID 實(shí)現(xiàn)所需的同步復(fù)制的性質(zhì),水平可伸縮性受到限制,但實(shí)現(xiàn)非常簡(jiǎn)單(無需解決沖突)。最終一致性實(shí)現(xiàn)的可伸縮性相當(dāng)高,但復(fù)雜性也很高。集群實(shí)現(xiàn)在物聯(lián)網(wǎng)中比比皆是。例如,可以群集 IoT 網(wǎng)關(guān)以提高可伸縮性和可靠性。參見圖1。每個(gè)網(wǎng)關(guān)群集中的節(jié)點(diǎn)數(shù)適中,因此即時(shí)一致性和最終一致性模型都適用。群集可以處理來自邊緣設(shè)備的流量,而不是單個(gè)網(wǎng)關(guān)所能處理的流量,并且可靠性/可用性得到提高(即時(shí)一致性模型的可伸縮性固有限制不會(huì)在小型群集中發(fā)揮作用)。
區(qū)塊鏈
術(shù)語“分布式數(shù)據(jù)庫”通常與區(qū)塊鏈技術(shù)相關(guān)聯(lián)(比特幣是最知名的)。它與“分布式賬本”同義使用,后者更合適(在作者看來)。我在區(qū)塊鏈技術(shù)的背景下使用術(shù)語分布式數(shù)據(jù)庫的問題是,“分布式數(shù)據(jù)庫”意味著分布式數(shù)據(jù)庫管理系統(tǒng)。但區(qū)塊鏈中很少涉及數(shù)據(jù)庫管理系統(tǒng)。不是要詳細(xì)闡述這一點(diǎn),但重要的是要區(qū)分?jǐn)?shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)。數(shù)據(jù)庫只是數(shù)據(jù)的集合,這些數(shù)據(jù)可能是分布式的,也可能是不分布的。數(shù)據(jù)庫管理系統(tǒng)是管理數(shù)據(jù)庫的軟件。區(qū)塊鏈實(shí)際上是一個(gè)分布式數(shù)據(jù)庫。但是,如前所述,在創(chuàng)建/維護(hù)區(qū)塊鏈分布式賬本時(shí),很少涉及數(shù)據(jù)庫管理系統(tǒng)。
分區(qū)數(shù)據(jù)庫
維基百科定義“。..存儲(chǔ)在多臺(tái)計(jì)算機(jī)中,位于同一物理位置。..”是俗稱的數(shù)據(jù)庫分片。分片與 HA 和集群分布式數(shù)據(jù)庫之間的主要區(qū)別在于,每個(gè)物理數(shù)據(jù)庫實(shí)例(分片)僅包含所有數(shù)據(jù)的一小部分。所有分片共同表示單個(gè)邏輯數(shù)據(jù)庫,該數(shù)據(jù)庫在許多物理分片中體現(xiàn)出來。我同意維基百科的定義,因?yàn)榉制恍枰鎯?chǔ)在多臺(tái)計(jì)算機(jī)中即可獲得分片的好處。從邏輯上講,目的是相同的:可伸縮性。分片是分布在各個(gè)服務(wù)器上,還是在單個(gè)服務(wù)器上進(jìn)行分區(qū)以利用多個(gè) CPU 或 CPU 內(nèi)核,這并不重要。在所有情況下,處理都是并行的。分片的物理分布方式是一個(gè)不重要的工件。例如,在我們自2012年以來進(jìn)行的STAC-M3發(fā)布的基準(zhǔn)測(cè)試中,我們利用了具有24個(gè)內(nèi)核的單個(gè)服務(wù)器,創(chuàng)建了72個(gè)分片,我們使用了4到6個(gè)服務(wù)器,每個(gè)服務(wù)器有16到22個(gè)內(nèi)核,創(chuàng)建了64到128個(gè)分片。在所有情況下,目標(biāo)都是使 I/O 通道飽和,以便將數(shù)據(jù)放入 CPU 內(nèi)核進(jìn)行處理。雖然STAC-M3是資本市場(chǎng)(刻度數(shù)據(jù)庫)基準(zhǔn),但這些原則同樣適用于物聯(lián)網(wǎng)的大數(shù)據(jù)分析。物聯(lián)網(wǎng)數(shù)據(jù)絕大多數(shù)是時(shí)間序列數(shù)據(jù)(例如傳感器測(cè)量值),就像刻度數(shù)據(jù)庫是時(shí)間序列數(shù)據(jù)一樣。
對(duì)數(shù)據(jù)庫進(jìn)行分片意味著支持分布式查詢處理。每個(gè)分片都由其自己的數(shù)據(jù)庫服務(wù)器實(shí)例管理。由于每個(gè)分片/服務(wù)器都表示整個(gè)邏輯數(shù)據(jù)庫的一部分,因此任何分片返回的查詢結(jié)果都可能只是部分結(jié)果集,需要與所有其他分片/服務(wù)器的部分結(jié)果集合并,然后才作為完整的結(jié)果集呈現(xiàn)給客戶端應(yīng)用程序。如果數(shù)據(jù)以最佳方式在分片之間分布,則可以在單個(gè)分片上找到給定查詢的所有數(shù)據(jù),并且查詢可以分發(fā)到管理該分片的特定服務(wù)器實(shí)例。通常,必須支持這兩種方法。例如,考慮一個(gè)跨越多個(gè)園區(qū)的大型智能建筑物聯(lián)網(wǎng)部署,每個(gè)園區(qū)都有多棟建筑。我們可能會(huì)選擇在多個(gè)物理數(shù)據(jù)庫中分發(fā)有關(guān)每個(gè)園區(qū)的(分片)信息。如果我們想計(jì)算特定建筑物的某些指標(biāo)(例如,15分鐘窗口中的功耗),我們只需要查詢包含該建筑物數(shù)據(jù)的分片。但是,如果我們想為多個(gè)建筑物和/或跨校園計(jì)算相同的指標(biāo),那么我們需要將該查詢分發(fā)到許多分片/服務(wù)器,這就是并行性發(fā)揮作用的地方。每個(gè)服務(wù)器實(shí)例都與所有其他服務(wù)器實(shí)例并行處理其部分問題。
數(shù)據(jù)庫分片還支持垂直可擴(kuò)展性(即能夠存儲(chǔ) 10 或 100 的 TB、PB 及以上)。要?jiǎng)?chuàng)建單個(gè) 100 TB 的邏輯數(shù)據(jù)庫,我可以創(chuàng)建 50 個(gè) 2 TB 物理數(shù)據(jù)庫的實(shí)例。分布式數(shù)據(jù)庫系統(tǒng)通常支持“彈性”可伸縮性,允許我添加分片,這也可能意味著向分布式系統(tǒng)添加服務(wù)器,以便系統(tǒng)在垂直和水平維度上都是可伸縮的。垂直和水平可擴(kuò)展性對(duì)于生成大量數(shù)據(jù)的大型物聯(lián)網(wǎng)系統(tǒng)至關(guān)重要。您需要縱向可擴(kuò)展性來處理不斷增長(zhǎng)的數(shù)據(jù)量,并且需要水平可擴(kuò)展性來保持及時(shí)處理/分析數(shù)據(jù)的能力,因?yàn)閿?shù)據(jù)從 1TB 增長(zhǎng)到 100TB,再到 PB 級(jí)甚至更高。
物聯(lián)網(wǎng)復(fù)制
雖然嚴(yán)格來說,不是分布式數(shù)據(jù)庫實(shí)現(xiàn),但如果我們不談?wù)撐锫?lián)網(wǎng)系統(tǒng)中的數(shù)據(jù)分布,我們將是失職的。物聯(lián)網(wǎng)生態(tài)系統(tǒng)通常由“邊緣”,“網(wǎng)關(guān)”和“云”組成,數(shù)據(jù)庫存在于所有位置。物聯(lián)網(wǎng)數(shù)據(jù)最初是在邊緣生成的,需要從那里分發(fā)到網(wǎng)關(guān),從網(wǎng)關(guān)分發(fā)到云。邊緣數(shù)據(jù)通常用于實(shí)時(shí)控制某些“事物”,例如在工業(yè)物聯(lián)網(wǎng)系統(tǒng)中打開或關(guān)閉螺線管。在企業(yè)層面,在許多情況下(如果不是大多數(shù)的話),物聯(lián)網(wǎng)系統(tǒng)的目標(biāo)之一是從數(shù)據(jù)中獲取和提取價(jià)值。通常,這意味著數(shù)據(jù)的某種“貨幣化”。這可以以提高效率或減少維護(hù)成本或工業(yè)環(huán)境中的停機(jī)時(shí)間的形式出現(xiàn),或者與客戶進(jìn)行更智能的互動(dòng),從而更有效地從錢包中提取資金。
物聯(lián)網(wǎng)系統(tǒng)的數(shù)據(jù)分發(fā)意味著將數(shù)據(jù)從邊緣通過一個(gè)或多個(gè)網(wǎng)關(guān)移動(dòng)到私有云或公共云。這種數(shù)據(jù)移動(dòng)充滿了它自己的問題:
連接
邊緣設(shè)備可以處于脫機(jī)狀態(tài),無論是出于設(shè)計(jì)還是由于通信基礎(chǔ)結(jié)構(gòu)中的故障。例如,電池供電的邊緣設(shè)備在設(shè)計(jì)上處于脫機(jī)狀態(tài),并且僅按計(jì)劃連接到網(wǎng)關(guān)?;蛘?,它們可以是進(jìn)出網(wǎng)關(guān)或蜂窩塔范圍的移動(dòng)設(shè)備。或者,通信鏈路可以簡(jiǎn)單地?cái)嚅_。在任何情況下,設(shè)備都必須具有將數(shù)據(jù)排隊(duì)以供以后傳輸?shù)闹悄堋?/p>
安全
安全性是這十年中物聯(lián)網(wǎng)系統(tǒng)的首要考慮因素,并且很可能在未來十年中一直存在。傳輸中的數(shù)據(jù)需要得到保護(hù)。這可以像使用 SSL/TLS 一樣簡(jiǎn)單。
帶寬
邊緣設(shè)備可用的通信通道的帶寬可能非常有限。例如,低功耗藍(lán)牙 (BLE) 為 1 或 2 兆位/秒 (Mbit/s)。Zigbee 的范圍為 20 到 250 千位每秒 (kbit/s)。這與10 Mbit/s時(shí)最慢的以太網(wǎng)相比。為了最大化可用帶寬,應(yīng)在將數(shù)據(jù)放入通信通道之前對(duì)其進(jìn)行壓縮。
范圍
物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)人員需要考慮的一些問題:是否會(huì)將所有數(shù)據(jù)從邊緣推送到云端?還是某些數(shù)據(jù)僅在邊緣有用?數(shù)據(jù)是在傳輸之前聚合,還是僅傳輸原始粒度數(shù)據(jù)?
在 eXtremeDB 中,我們已經(jīng)在主動(dòng)復(fù)制結(jié)構(gòu)?中預(yù)見并解決了這些問題。
總之,術(shù)語分布式數(shù)據(jù)庫包括三種不同的數(shù)據(jù)庫系統(tǒng)安排,用于三個(gè)不同的目的。高可用性數(shù)據(jù)庫系統(tǒng)將 master 數(shù)據(jù)庫分發(fā)給一個(gè)或多個(gè)副本,其明確目的是在發(fā)生故障時(shí)保持系統(tǒng)的可用性。集群數(shù)據(jù)庫系統(tǒng)分發(fā)數(shù)據(jù)庫以實(shí)現(xiàn)大規(guī)模/全局可伸縮性(最終一致性)或用于在相對(duì)較少的節(jié)點(diǎn)(ACID)之間進(jìn)行協(xié)作計(jì)算。分片將邏輯數(shù)據(jù)庫分區(qū)為多個(gè)分片,以促進(jìn)并行處理和水平可擴(kuò)展性。所有功能都是部署可擴(kuò)展且可靠的物聯(lián)網(wǎng)系統(tǒng)不可或缺的一部分。
這些分布式數(shù)據(jù)庫機(jī)制通常結(jié)合使用。再次參考上面的圖 1,我們看到網(wǎng)關(guān)群集,群集中的每個(gè)節(jié)點(diǎn)都聚合來自一定數(shù)量的設(shè)備的數(shù)據(jù)。如果群集節(jié)點(diǎn)發(fā)生故障,則其所服務(wù)的設(shè)備可以連接到群集中的另一個(gè)網(wǎng)關(guān)并維護(hù)操作。在服務(wù)器級(jí)別,描述了一個(gè)分片數(shù)據(jù)庫,每個(gè)分片從其中一個(gè)網(wǎng)關(guān)集群接收數(shù)據(jù)。分片共同表示單個(gè)邏輯數(shù)據(jù)庫。每個(gè)分片由一個(gè)主/副本 HA 對(duì)組成。這是可取的,因?yàn)槿绻麤]有 HA,如果任何分片發(fā)生故障,邏輯數(shù)據(jù)庫的完整性就會(huì)受到損害。
審核編輯:郭婷
-
云計(jì)算
+關(guān)注
關(guān)注
39文章
7855瀏覽量
137953 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2914文章
44984瀏覽量
377533 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3853瀏覽量
64749
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
分布式云化數(shù)據(jù)庫有哪些類型
基于ptp的分布式系統(tǒng)設(shè)計(jì)
PingCAP推出TiDB開源分布式數(shù)據(jù)庫
![PingCAP推出TiDB開源<b class='flag-5'>分布式數(shù)據(jù)庫</b>](https://file1.elecfans.com/web1/M00/F5/B8/wKgZoWdCne-ANUlgAAAq48nz1ik747.png)
一文講清什么是分布式云化數(shù)據(jù)庫!
分布式工業(yè)物聯(lián)網(wǎng)平臺(tái):引領(lǐng)智能制造的新篇章
分布式云化數(shù)據(jù)庫的優(yōu)缺點(diǎn)分析
軟件系統(tǒng)數(shù)據(jù)庫的分庫分表設(shè)計(jì)
![軟件<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>數(shù)據(jù)庫</b>的分庫分表設(shè)計(jì)](https://file1.elecfans.com/web2/M00/03/C2/wKgZombGsDeAbXZcAADe-3smVHg464.png)
基于分布式存儲(chǔ)WDS的金融信創(chuàng)云承載數(shù)據(jù)庫類關(guān)鍵應(yīng)用
![基于<b class='flag-5'>分布式</b>存儲(chǔ)WDS的金融信創(chuàng)云承載<b class='flag-5'>數(shù)據(jù)庫</b>類關(guān)鍵應(yīng)用](https://file1.elecfans.com/web2/M00/03/D4/wKgaoma-rm-AeQeUAABn3gVGlrU598.png)
恒訊科技分析:跨境電商網(wǎng)站有哪些數(shù)據(jù)庫系統(tǒng)是推薦使用的?
基于英特爾至強(qiáng)6能效核處理器優(yōu)化原生分布式數(shù)據(jù)庫OceanBase
![基于英特爾至強(qiáng)6能效核處理器優(yōu)化原生<b class='flag-5'>分布式數(shù)據(jù)庫</b>OceanBase](https://file1.elecfans.com/web2/M00/FF/0C/wKgaomagqriADJapAASnVcXMyWo646.png)
小米試點(diǎn)業(yè)務(wù)系統(tǒng)上線OceanBase,數(shù)據(jù)庫性能飛躍新高度
小米攜手OceanBase實(shí)現(xiàn)數(shù)據(jù)庫升級(jí)
鴻蒙開發(fā)接口數(shù)據(jù)管理:【@ohos.data.distributedData (分布式數(shù)據(jù)管理)】
![鴻蒙開發(fā)接口<b class='flag-5'>數(shù)據(jù)</b>管理:【@ohos.data.distributedData (<b class='flag-5'>分布式</b><b class='flag-5'>數(shù)據(jù)</b>管理)】](https://file1.elecfans.com/web2/M00/ED/44/wKgaomZiYtqAeD3lAABQ0iJCe48630.png)
HarmonyOS開發(fā)實(shí)例:【分布式手寫板】
![HarmonyOS開發(fā)實(shí)例:【<b class='flag-5'>分布式</b>手寫板】](https://file1.elecfans.com/web2/M00/CB/B8/wKgZomYf0WyAHiKnCeFbI4vcXhg029.jpg)
鴻蒙HarmonyOS開發(fā)實(shí)例:【分布式關(guān)系型數(shù)據(jù)庫】
![鴻蒙HarmonyOS開發(fā)實(shí)例:【<b class='flag-5'>分布式</b>關(guān)系型<b class='flag-5'>數(shù)據(jù)庫</b>】](https://file1.elecfans.com/web2/M00/C8/C0/wKgaomYWnY2AXRLeAACi1aI8uJg476.jpg)
評(píng)論