蘇彥志,陳 廣,蔣越維
(中國移動通信集團(tuán)河北有限公司,河北 石家莊 050000)
分布式數(shù)據(jù)庫的特點主要包括以下幾點。
(1)透明性:分布式數(shù)據(jù)庫的透明性包括分片透明、復(fù)制透明、位置透明和邏輯透明等,其中分片透明是透明性的最高層次,邏輯透明層次最低。具體來說,透明性是指用戶在使用過程中,不必關(guān)心數(shù)據(jù)在數(shù)據(jù)庫管理系統(tǒng)內(nèi)部是如何分片的,不必知道數(shù)據(jù)都分別存放在哪個節(jié)點以及各個網(wǎng)絡(luò)節(jié)點是怎樣完成數(shù)據(jù)復(fù)制的,用戶只需在使用時完成自己的相關(guān)操作即可。
(2)高可靠性:分布式數(shù)據(jù)庫會對數(shù)據(jù)采取多次備份存儲形成多副本來提高數(shù)據(jù)的可靠性。當(dāng)某個節(jié)點出現(xiàn)故障時,其他節(jié)點可快速替代故障節(jié)點繼續(xù)工作,避免出現(xiàn)數(shù)據(jù)丟失現(xiàn)象。
(3)易擴(kuò)展性:當(dāng)數(shù)據(jù)庫現(xiàn)有容量和性能告急時,分布式數(shù)據(jù)庫可采取添加新節(jié)點和服務(wù)器的方法來實現(xiàn)擴(kuò)展,相比于集中式數(shù)據(jù)庫的難擴(kuò)展性可以更好地滿足用戶不斷增長的需求。如圖1所示。
圖1 分布式數(shù)據(jù)庫[1]
21世紀(jì)以前,關(guān)系型商業(yè)數(shù)據(jù)庫可以滿足大部分用戶應(yīng)用場景,但隨著互聯(lián)網(wǎng)應(yīng)用的到來,數(shù)據(jù)呈現(xiàn)大容量、多樣性、流動性等特點,采取集中式架構(gòu)的傳統(tǒng)關(guān)系型數(shù)據(jù)庫逐漸無法實現(xiàn)業(yè)務(wù)系統(tǒng)高并發(fā)的需求,于是分布式數(shù)據(jù)庫迎來了發(fā)展機(jī)遇。
2009年初,NoSQL數(shù)據(jù)庫應(yīng)運(yùn)而生代表著第一代分布式數(shù)據(jù)庫的誕生。它專注于分布式場景下數(shù)據(jù)的存儲和查詢,不需要預(yù)先定義Schema,開發(fā)人員可以頻繁在線更改Schema,更高效滿足業(yè)務(wù)需求。NoSQL數(shù)據(jù)庫打破以前傳統(tǒng)商業(yè)數(shù)據(jù)庫多節(jié)點部署難度大、造價高的困境,易于擴(kuò)展。但由于其是通過犧牲SQL和事務(wù)來實現(xiàn)可擴(kuò)展的,甚至缺乏ACID,因此數(shù)據(jù)一致性問題難以解決,應(yīng)用場景十分局限,不利于完成整個應(yīng)用架構(gòu)的搭建。最流行的兩個NoSQL系統(tǒng)分別是Amazon Dynamo和Google Bigtable。Dynamo系統(tǒng)因犧牲一致性而失敗。Bigtable雖實現(xiàn)了強(qiáng)一致性,但只支持單行事務(wù),未達(dá)到高效的目的。如圖2所示。
圖2 第一代分布式數(shù)據(jù)庫
第一代分布式數(shù)據(jù)庫友好性欠缺,且無法支持SQL,于是第二代分布式數(shù)據(jù)庫采用搭積木的方式,在NoSQL的基礎(chǔ)之上引入了SQL支持,以Google Spanner為代表。Spanner支持大部分SQL,但不兼容SQL標(biāo)準(zhǔn),通過Truetime實現(xiàn)全功能事務(wù),保證了強(qiáng)一致性,但單次事務(wù)提交時延、單機(jī)性能犧牲度較大,這意味著其不符合性價比的特性,難以廣泛應(yīng)用于傳統(tǒng)行業(yè)的業(yè)務(wù)場景。如圖3所示。
圖3 第二代分布式數(shù)據(jù)庫
第三代是原生式分布式數(shù)據(jù)庫,充分享受分布式高可用、可擴(kuò)展的技術(shù)紅利,在利用較低成本的前提下具備極致單機(jī)性能,是較為成熟的透明擴(kuò)展企業(yè)級數(shù)據(jù)庫,如OceanBase。OceanBase的底層為可擴(kuò)展的分布式架構(gòu),在同一套數(shù)據(jù)庫引擎中支持HTAP混合負(fù)載,支持SQL和Paxos高可用性,在眾多分布式數(shù)據(jù)庫中脫穎而出。如圖4所示。
圖4 第三代分布式數(shù)據(jù)庫
數(shù)據(jù)分片、分布式事務(wù)處理和數(shù)據(jù)同步都是分布式數(shù)據(jù)庫的核心技術(shù)。數(shù)據(jù)分片技術(shù)是實現(xiàn)可擴(kuò)展性和高可用性的核心技術(shù)。隨著數(shù)據(jù)量的增加,數(shù)據(jù)分片技術(shù)也在不斷發(fā)展,如基于哈希算法的分片、基于范圍的分片等;分布式事務(wù)處理技術(shù)的發(fā)展對保證事務(wù)的一致性和隔離性十分重要,常用的分布式事務(wù)處理技術(shù)[2]包括兩階段提交、三階段提交、Paxos算法等.數(shù)據(jù)同步技術(shù)是保證數(shù)據(jù)一致性和完整性的關(guān)鍵技術(shù),常用的數(shù)據(jù)同步技術(shù)包括主從復(fù)制、主主復(fù)制、基于日志的同步等。
隨著社會科學(xué)技術(shù)的快速發(fā)展,分布式數(shù)據(jù)庫系統(tǒng)的市場需求和市場競爭都在日益增加。據(jù)統(tǒng)計數(shù)據(jù)顯示,2018年分布式數(shù)據(jù)庫系統(tǒng)市場規(guī)模僅為92億美元,到2022年已達(dá)161億美元,年復(fù)合增長率達(dá)14.1%。市場需求的增長吸引了國內(nèi)外眾多企業(yè)開始參與到分布式數(shù)據(jù)庫系統(tǒng)市場的競爭中,如阿里云、華為云等。另外,開源分布式數(shù)據(jù)庫系統(tǒng)也在不斷涌現(xiàn),如Hadoop、MongoDB等,其以開源和靈活性高等特點受到廣大企業(yè)和開發(fā)者的關(guān)注并被采用。
分布式數(shù)據(jù)庫系統(tǒng)在云計算、大數(shù)據(jù)、物聯(lián)網(wǎng)等領(lǐng)域得到了廣泛應(yīng)用。分布式數(shù)據(jù)庫系統(tǒng)的高可用性、高擴(kuò)展性和高性能性可滿足企業(yè)在云環(huán)境下的數(shù)據(jù)存儲和處理需求。云計算領(lǐng)域主要應(yīng)用的分布式數(shù)據(jù)庫系統(tǒng)包括阿里云的AnalyticDB、亞馬遜的Aurora等。在大數(shù)據(jù)環(huán)境下,龐大的數(shù)據(jù)量需要分布式存儲和處理,該應(yīng)用環(huán)境中的主要分布式數(shù)據(jù)庫系統(tǒng)包括Apache HBase、Apache Cassandra等。物聯(lián)網(wǎng)中,設(shè)備和傳感器產(chǎn)生數(shù)據(jù)量巨大,需要實時分析和處理,分布式數(shù)據(jù)庫系統(tǒng)可滿足其需求,應(yīng)用的主要分布式數(shù)據(jù)庫系統(tǒng)包括InfluxDB、OpenTSDB等。
本節(jié)主要討論針對CAP理論的應(yīng)用系統(tǒng)合理選擇問題、遺留系統(tǒng)遷移改造問題以及產(chǎn)品成熟度不足[3]的問題。
CA P理論是一個經(jīng)典的分布式系統(tǒng)理論。已知一個分布式系統(tǒng)不可能同時滿足一致性(C:Consistency)、可用性(A:Availability)和分區(qū)容錯性(P:Partition tolerance)這三個基本需求,最多只能同時滿足其中的兩個。而在現(xiàn)實的分布式系統(tǒng)中,不可靠的網(wǎng)絡(luò)和宕機(jī)概率是一定存在的,因此分區(qū)容錯性是必選項而不是可選項,這樣用戶就需要在一致性和可用性之間進(jìn)行取舍,這是困擾眾多開發(fā)人員的問題。在實際場景中,各企業(yè)結(jié)合自身不同的業(yè)務(wù)需求,做出的最終抉擇有所不同,但是做好一致性和可用性之間平衡是所有企業(yè)的共同訴求。如圖5所示。
圖5 CAP理論[4]
分布式數(shù)據(jù)庫與集中式數(shù)據(jù)庫工作機(jī)制的不同使得兩者的功能性也存在著一定差異,比如存儲過程、視圖、外鍵約束等功能,雖然分布式數(shù)據(jù)庫也具備上述功能,但執(zhí)行效率會比集中式數(shù)據(jù)庫低,這樣使得上層業(yè)務(wù)遷移改造時需特別注意數(shù)據(jù)模型和實現(xiàn)邏輯。另外,還要考慮硬件開銷成本,分區(qū)計,充分利用分布式數(shù)據(jù)庫的高并發(fā)性和水平擴(kuò)展特性[4]。
分布式數(shù)據(jù)庫作為新興的數(shù)據(jù)庫技術(shù),自身發(fā)展還處于初期,存在著技術(shù)體系、產(chǎn)品推廣和標(biāo)準(zhǔn)規(guī)范不成熟的情況。而傳統(tǒng)集中式數(shù)據(jù)庫經(jīng)過幾十年的發(fā)展,已具備較為完善成熟的產(chǎn)品,甚至不斷衍生出許多特殊用法,這導(dǎo)致在遷移過程中會出現(xiàn)較大的困難,阻礙了分布式數(shù)據(jù)庫大面積推廣使用。
(1)大規(guī)模數(shù)據(jù)處理:隨著互聯(lián)網(wǎng)和物聯(lián)網(wǎng)等新技術(shù)不斷革新,數(shù)據(jù)量將會持續(xù)呈現(xiàn)爆炸式增長。分布式數(shù)據(jù)庫依靠其良好的可擴(kuò)展性和高性能的特點,能夠滿足大規(guī)模數(shù)據(jù)處理的需求,未來將會越來越受到關(guān)注。
(2)數(shù)據(jù)智能化:未來分布式數(shù)據(jù)庫將會越來越智能化,利用機(jī)器學(xué)習(xí)和人工智能等技術(shù)對海量數(shù)據(jù)進(jìn)行分析和挖掘,從而為企業(yè)提供更加有價值的業(yè)務(wù)洞察和預(yù)測結(jié)果。
(3)區(qū)塊鏈技術(shù):區(qū)塊鏈技術(shù)將會成為未來分布式數(shù)據(jù)庫的重要發(fā)展方向之一。區(qū)塊鏈技術(shù)依靠其去中心化、不可篡改、安全等特點,能夠為企業(yè)提供更加可信的數(shù)據(jù)存儲和訪問方式,因此將會成為分布式數(shù)據(jù)庫發(fā)展的重要趨勢[5]。
(4)云原生數(shù)據(jù)庫:云原生數(shù)據(jù)庫[6]將會成為未來分布式數(shù)據(jù)庫的趨勢。云原生數(shù)據(jù)庫采用微服務(wù)、容器化、自動化管理等技術(shù),實現(xiàn)了高可用性、高可伸縮性和高安全性,能夠幫助企業(yè)更加高效地管理和維護(hù)數(shù)據(jù)。
總的來說,分布式數(shù)據(jù)庫未來的發(fā)展前景非常廣闊,同時也需要我們密切關(guān)注技術(shù)的發(fā)展趨勢,不斷學(xué)習(xí)新的技術(shù)和知識,從而為企業(yè)提供更加優(yōu)質(zhì)的服務(wù)。■