達夢分布式資料庫演進

2020-12-23 IT168

  作者:馮源

  整理:老魚

  作者介紹:

  馮源,武漢達夢資料庫股份有限公司副總經理,主要負責達夢資料庫產品的軟體測試、技術規劃工作。長期從事大型、通用國產關係資料庫管理系統——達夢資料庫產品DMDBMS v4.0、v5.0、v6.0、v7.0和v8.0系列的產品測試和技術規劃工作,熟悉國內外主流資料庫產品體系架構,對於資料庫安全防護體系、資料庫性能優化、資料庫領域基準測試模型與方法具有深厚經驗;參與了《GB/T 30994-2014 關係資料庫管理系統檢測規範》、《GB/T 20273-2019 資料庫管理系統安全技術要求》等多項國家標準的編制工作。

  正文

  我分享的主題是「達夢分布式資料庫演進」,主要分享達夢公司分布式資料庫演進、發展歷程,介紹達夢公司對分布式資料庫未來發展和應用前景的分析觀點。

  在正式分享前,我想先從幾個不太相關的小故事講起,以歸納我的核心觀點。

  無論是爆米花,還是要扔出去的手雷,亦或是過年發射的竄天猴,其實都有一定共性,就是加熱膨脹時,如果不對其進行精準控制,扔出去就會變成一個炸彈,如果是在精準的溫度、壓力下釋放,就會變成爆米花,如果自始至終都給其一個發洩口,就會飛上天去變成一個漂亮的焰火。

  通過這三個事物,我想表達的是什麼?很多時候,看起來不太一樣的東西背後,其實都有著相似的原理,不同的用途,就看你怎麼用?

  技術是用來解決問題的,同樣的技術可以解決不同問題。反之,為了解決問題,達到相同目標,又可以選擇不同的技術,至於用什麼技術、用哪項技術,還是以需求為核心,這是我在導語當中可以得出的兩個結論。

  接下來,我將通過挖掘分布式資料庫是怎麼產生的,最初是為了解決什麼問題,來印證前面兩個結論。

  分布式資料庫其實不是什麼特別新鮮的東西,基於以下幾個事實:

  為什麼?上述事實可能不是特別清晰,回到當時文獻看一看,這是1979年到1980年的文獻。

  總體來說,當時學術界對於分布式資料庫的研究,主要分為兩個架構:一個是分層集中控制式,也就是很多區域性資料庫,上面加一個分布式調度層。另一個是非集中控制式,這個更接近現在的分布式資料庫,也就是去中心化的架構。即便是在今天來看,也不是特別過時,現在有很多資料庫仍然是沿著這樣的思路架構來做。

  無論任何一種架構,1970-1980年時,其定義,抽象出來有三個特點,也就是所謂的分布式資料庫應該具備哪些特徵?

  首先,是跨物理地域的特點,資料庫實例分布在不同的物理地點。當時名詞中,有一個「集群系統」,也是採用類似架構,由很多節點組成,但沒有跨地域,所以,稱之為集群系統。

  另一特點是局部自治性,任何資料庫都應該具備本地管理、本地處理的能力。

  在此基礎上有全局性的數據訪問請求時,不需要關心數據分布在哪一個區域,稱之為應用透明性。

  總結起來,就是物理上分布,邏輯上一體。

  當時的分布式資料庫選的什麼技術進行研究?我們能發現,其中很多詞在今天是非常熟悉了,比如數據的劃分,水平劃分還是垂直劃分,分片存儲還是複製存儲,數據分布以後如何保證事務完整性?怎麼實現數據提交?怎麼預防分布式環境下的變化?

  要用一項技術,一定要看當時的需求是什麼?我們再仔細看,就會發現非常有意思的東西,今天我們談資料庫的劃分,更多的是希望,通過資料庫的劃分讓數據分散存儲,提高數據存儲能力,通過分散存儲可以實現過載均衡性能提高,但當時的論文寫得非常有意思,他們的目標是節省網絡費用,甚至包括後面很多研究者在研究,到底是應該分片還是應該複製,或者是在什麼時候分片、什麼時候覆制,出發點也是怎樣平衡存儲費用和網絡通信費用。

  既然,分布式資料庫的大量技術問題,早在「上古時代」就已經提出,並已有相當的基礎,那麼,為什麼分布式資料庫在90年代卻「偃旗息鼓」了?

  如果仔細回顧當時研究這些技術的目標,也就是費用問題,就能夠很清楚地知道,為什麼出現這些情況。(左圖)是當時西德實驗室的分布式資料庫,從當時的架構圖非常清楚地看到,三所大學節點網絡通信用的是電話線,九十年代,在家裡上網都知道,那個時候上網費有多貴,所以,如果資料庫系統,分布式通信依靠的是電話線實現,就近劃分數據就近訪問數據,一定能夠節省大量的通信費用成本,如果不去挖歷史,是無法得知當時的技術目標是什麼。

  七八十年代,計算機應用剛剛興起,那時,現在熟悉的中間件還不存在,用戶稍微多一點,資料庫就無法承擔並發能力,在C/S模式下,硬體能力不足以支撐「較高並發」,因此,單機資料庫或者集中式資料庫沒有辦法滿足性能要求。

  為什麼在九十年代會發生這種巨變?原因很簡單,硬體技術的發展,使得集中式資料庫具備了足夠的並發處理能力。另一個非常重要的原因是,交易中間件的誕生和完善,大概是1985年到1995年,它的出現改變了應用程式訪問資料庫的訪問模式,信息系統從兩層結構變成三層結構,顯著改善了資料庫並發響應速度。

  達夢認為,集中式資料庫技術的發展,充分發揮了硬體設備的能力,當時面對的問題,最終由硬體設備的發展+集中式資料庫組合解決,人們失去了繼續發展、使用分布式資料庫技術的理由。

  小結一下,通過對七十年代到八十年代分布式資料庫的回顧,不管是用戶或是研究者,在當時研究分布式資料庫技術,或者到了九十年代不再研究分布式資料庫技術,最終都是「需求第一」 性原則的作用結果。

  1989年,達夢發布了第二代資料庫產品DM2(分布式資料庫管理系統),也是那時,達夢開始做分布式資料庫研究,體系結構、存儲結構和隨機查詢方面都做了一些工作,最後,也是隨著技術趨勢的演進,演變為主要研發集中式資料庫產品。

  到了今天為什麼分布式資料庫再次興起?移動網際網路之前,我們非常熟悉的甲骨文和IBM這些巨頭,在市場上非常成功。而到2012年,以Google發布Spanner論文為標誌,分布式資料庫結束蟄伏。分布式資料庫到今天有著非常多的流派,大體上可以分為三類:Google Spanner及其參考文獻,PG XC/XL技術結構方案更傳統,也更接近經典的分布式資料庫,為什麼我把PG單獨拎出來說?因為,達夢看到,今年國內有很多分布式資料庫廠商基於PG XC/XL,產業上是不可忽視的點。另外Amazon雲原生資料庫,國內也有很多產品是參照其方案實現。

  我們找到一些參考資料,只針對Spanner和Aurora進行了對比,我個人把PG也加進來了。可以看到,雖然大家都叫分布式資料庫,但實際上細節不一樣,這說明實現目標不一樣。如果仔細去看的話,有的是共享存儲架構,有的是非共享。今天,因為時間有限,我們單獨拎出來一個點看一看,比如持續可用。為什麼不同的分布式資料庫會選擇不同的資料庫協議?強調一下,之前我形成的第一個結論,為了解決產品的問題,用戶和開發人員都是以「需求第一性」原則為主。

  Spanner有很多的技術創新,最關鍵的精髓有幾點:首先是引入PAXOS,引入TruTime API,然後,做了多版本的外部一致性。

  為什麼Spanner要做PAXOS?Spanner是Google自用的資料庫,雖然後來發布了Cloud Spanner,但在最初,它是給Google廣告系統用的。Google是一個全球化的公司,業務遍布全球,用戶遍布全球,分布式機構也是遍布全球,全球化的公司就有全球化的利益,什麼叫做全球化的利益?就是當一個區域甚至一個大洲發生不可控的因素的時候,利益不會受損,業務可以持續運轉,需要一個能夠維護全球利益的資料庫,也就意味著遇到局域性的災害、疫情甚至政治不穩定、海底光纜故障大面積設備失效,也可以保證其業務持續不斷地賺錢,也能為客戶帶去它的價值,這是Google對資料庫的訴求。正因為如此,Google第一篇論文並非冠以分布式資料庫,而是冠以全球分布式資料庫的名字和原因。

  今天,我們發微信或打電話都時習以為常,認為信息傳播成本非常低,可能就幾分錢或者幾毛錢話費,但我們忽略了一個事實,信息傳播速度是有上限,信息傳輸是有成本的。

  站在地球這樣個範圍不是問題,如果極端一點,遠在火星或太陽進行通信,一條消息發過去,要五分鐘的時間,如何知道消息對方收到否?所以,通信天生的不可靠才是一種常態。

  只有在這種情況下,我們才會意識到,進行一次通信傳輸應該有一些保證,保證信息不可失真,保證大家能夠看到同樣的消息,在這種情況下PAXOS是最好的衍生性保障。

  為什麼70年代會有分布式集群概念?因為距離比較近,如果距離遠,信息能不能收到會成問題,我們是不是能達成共識也是問題,這是這個概念的由來,沒有一個大距離的跨度,是不需要這麼複雜技術的。

  眾所周知,PG-XC/XL的經典版本,或社區版本當中用的是傳統複製技術,保證同步複製和異步複製,好處是同步複製帶來強一致,異步複製延遲較低,但這是在一個小距離環境下看到的,也就是一個硬幣正面和反面的問題。要是這個距離擴大到一千公裡級別,硬幣的另外一面就會顯現出來,在大區域範圍下,同步複製的延遲以及異步複製帶來的不一致性問題就會顯現。PG這套系統如果視之為集群效果非常好,有著更好的響應時間、運維和線性擴展效果,所以,這套系統更適合小範圍部署的、追求線性擴展的用戶。

  雲原生算不算分布式?有沒有衡量標準?如果以是否產生分布式事務來看,單主模式是沒有分布式事務的,所以不是分布式資料庫。以有沒有分布式存儲來看,邏輯上看是共享存儲,所以,好像也不算分布式資料庫,但是基於雲技術實現分布式存儲,所以應該可以算分布式資料庫。如果從有沒有跨地域的能力來看,當然有了,所以應該算分布式資料庫。

  因此,從需求第一性原則出發,雲原生是不是分布式不重要,重要的還是Amazon為什麼要做?Aurora的定位是什麼?滿足全球訪問需求?其實不是,也不是在小範圍做到極致擴展,就是為了租賃給普通用戶。普通用戶怎樣使用資料庫?99%的用戶沒有像Google那樣的全球利益,也不需要做極致的擴展,其實就是一種使用模式,只是想把以前使用從本地搬到雲上,簡簡單單地讓雲廠商解決副本的問題就很完美。

  所以我們能看到,過去幾年,雲原生數據架構的變革更多的是在中下層動刀,比如亞馬遜的日誌即數據,減少雲上的網絡流量,到了國內可能還有一些改變,Quorum協議改到Raft協議,進一步降低網絡同步流量佔用,但會引入一些延遲;不過這樣也沒關係,可以通過RDMA來彌補。另一方面,因為雲上部署,因此基礎設施集約化是可以做到的,NVME可以上,FPEG、RDMA也可以上,這些就是前幾年可以看到的雲原生資料庫廠商的技術發展的內容,而資料庫的中上層,更多的是以繼承PG和MySQL為主。

  通過分析這三類技術路線,達夢認為是不是分布式其實並不重要,還是要回到發展技術的初衷來看「需求第一性」。站在用戶的角度要不要用分布式資料庫?怎樣用分布式資料庫?用戶應該要對自己的需求非常清楚,然再去選資料庫。

  剛才談了三種架構,還有一種沒有談,就是分布式中間件。2015年,達夢做了一個分布式中間件,後來發現這個技術方案對應用不透明,事務也不保證,容災能力也較弱,所以,達夢拋棄了這套方案,中間件的事情,交給中間件廠商來做,達夢來走適配,效果同樣很好。

  到了2019年,達夢認為從現狀上來看,分布式資料庫最大的問題是兼容性代價太高,所以,達夢更提倡透明式TDD的概念,在保障資料庫通用性、具有比較強的一致性前提下,同時具備一些可擴展的能力。

  到了2020年,達夢發布了新一代的原生資料庫,希望在透明式分布式資料庫的基礎上進一步加強分布式處理能力。

  達夢分布式思路,原則是「需求第一性」,技術只是工具手段,按需選擇。

  鑑於分布式資料庫現狀,眾所周知,分布式資料庫性能很強,但有好就有壞。達夢對未來的判斷是,80%的系統架構還會在原有的傳統集中式架構當中去用,因為這些業務系統負載較高,或者對可靠性要求沒有那麼高,並發也沒有那麼高,通過傳統技術可以非常低成本地解決。

  隨著分布式架構複雜度的增加,成本也一定會增加,所以,更適合更高端的行業場景。傳統集中式無法解決的分布式資料庫應該是什麼樣子?

  首先,是數據量爆炸,並發曲線非常陡峭,用戶對數據響應時間的容忍度相對比較低,這也是一個現實,分布式資料庫今後不是你的資料庫或者是我的資料庫,它將變成基礎設施,因此一定要有足夠的容災能力,因為,大家都是跑在一個系統上。

  時間有限,每個需求採用什麼樣的技術來滿足,不能全部介紹,我只提三點:達夢資料庫已經引入Raft,因為異地副本自適應能力是採用傳統複製技術不可能實現的,現在有很多廠商仍然採用一主多備的複製,達夢認為並不太適合1000公裡以上的自適應故障處理能力。

  前幾年,分布式資料庫主要是談架構,很少談優化器,其實優化器是資料庫的核心。作為一個傳統的資料庫廠商,做了這麼多年,達夢最大的優勢就在於優化器。記得以前和大家分析過一個案例,一個央企財務系統上,有一個500多頁的SQL,達夢可以很好的處理這種複雜SQL,這種請求目前來看,在分布式是比較難處理的,而達夢可以把這種SQL優化能力,從集中式資料庫平移到分布式資料庫產品裡面。

  目前,分布式資料庫應用和推廣最大的障礙就是生態,原因在於分布式資料庫的通用性不夠:很多經典功能在集中式可以用得很好,分布式就不能用,所以,會有很多的應用移植工作。達夢的重點思路是通過一套Code Base完成這項工作,不管是集中式還是分布式,達夢都用一套Code Base,無論是做運維管理還是應用開發,或是做大數據集中層,協議都是一樣的,語法都是一樣的,可以做到平滑的過渡、互聯,實現統一。

  最後,目前看來分布式資料庫技術現狀,用一個字來總結就是「亂」,廠商多、路線多、概念多。但這是百花齊放的時代,亂是正常的。從長久來看,最終一定是趨同。不管是從傳統廠商做起的達夢,還是從To B、To C或者伺服器廠商做起的,沒有誰一開始就是做分布式資料庫的,大家的基因不太一樣,但基因不是重點,重點是環境最後會把大家塑造成長得差不多的模樣。所以,作為用戶不用太擔心,選誰都不會錯。

相關焦點

  • 從單體式向分布式演進 金山雲打造更高性能的資料庫DragonBase
    來源:時刻頭條在信息快速發展多元化的今天,資料庫作為現代信息技術領域的三大核心基礎之一,重要性愈發明顯。隨著傳統商業資料庫產品的熱度逐漸下降,更多的企業級用戶逐漸轉向雲分布式資料庫及開源資料庫產品,雲化部署模式正在逐漸超越傳統部署模式並成為市場的發展趨勢。
  • 分布式系列之一:架構的演進過程
    節點是指一個可以獨立按照分布式協議完成一組邏輯的程序個體。 2、分布式架構的演進過程 階段一,單應用架構 我們的網站演進的變化過程,交易、商品、用戶的數據都還在同一個資料庫中,儘管採取了增加緩存,讀寫分離的方式,但是隨著資料庫的壓力持續增加,資料庫的瓶頸仍然是個最大的問題。
  • 架構革新 高效可控 2020中國資料庫技術大會盛大召開
    馮源:達夢分布式資料庫演進  掀開三天技術狂歡的首位專家是武漢達夢資料庫股份有限公司副總經理馮源,作為國內的資料庫專業廠商,達夢公司在關係資料庫領域長期探索,推出了得到廣泛應用的關係資料庫產品,在電力、金融、政務、公安、社保、交通等行業領域得到了廣泛應用。
  • 世平信息與達夢資料庫完成產品兼容互認證
    近日,世平信息與達夢資料庫完成技術兼容和認證工作,經過雙方多次嚴格測試,世平資料庫內容保密檢查系統和達夢資料庫管理系統V8完成產品兼容互認證,認證結果表明,雙方產品兼容性良好,系統功能運行穩定,能夠滿足用戶安全性以及關鍵性應用需求。
  • 國產資料庫優秀選手,達夢是如何做到的?
    我不知道會有多少人堅持,但達夢一定會堅持,並且會努力跑完全程。  達夢自2000年加入國產資料庫這場長跑,如今儼然成為了國產資料庫領域的優秀跑者,即便自研這條路異常難走,但達夢卻愣是堅持了這十餘年,套用一位作家的話來說,由於這10多年間從不間斷地跑步,達夢大致朝著良好的方向得到強化。
  • 「技術乾貨」分布式 SQL:資料庫的未來發展方向
    描述中有很多內容,還有長達14頁的論文,詳細介紹了他們如何構建一致且可擴展的資料庫。內容非常精彩,概述了資料庫下一步發展的基礎:分布式SQL。是什麼構成了分布式SQL資料庫?為了在分布式環境中交付真正可伸縮的SQL,已經進行了幾次嘗試。
  • 南大通用分布式事務型資料庫GBase 8c滿分通過工信部標準測評
    南大通用分布式交易型資料庫產品GBase 8c在基礎能力、兼容能力、管理能力、高可用、擴展能力、安全能力等50個方面,均滿足資料庫管理平臺基礎能力測試要求,以滿分的優異成績通過「第11批大數據產品能力測評」分布式事務資料庫能力認證。GBase 8c是南大通用在十餘年分布式資料庫研發積累的基礎上,全新打造的新一代分布式交易型資料庫管理系統。
  • 分布式資料庫比集中式資料庫的優勢在哪裡?
    大數據時代,面對日益增長的海量數據,傳統的集中式資料庫的弊端日益顯現,分布式資料庫相copy對傳統的集中式資料庫有如下優點。更強的可擴展性:分布式資料庫可以通過增添存儲節點來實現存儲容量的線性擴展,而集中式資料庫的可擴展性十分有限。更高的並發訪問量:分布式資料庫由於道採用多臺主機組成存儲集群,所以相對集中式資料庫,它可以提供更高的用戶並發訪問量。更適合分布式的管理與控制。
  • 金融企業選擇與應用分布式資料庫的7個核心問題
    接手騰訊分布式資料庫以來,主要負責騰訊雲分布式資料庫功能策劃、市場能力建設、服務支撐能力建設和團隊建設等。 大家好,我是來自騰訊雲的蘇強。從騰訊雲分布式資料庫商用那天起,我就在分布式資料庫團隊裡,所以可以很自豪地說,我是最了解騰訊雲分布式資料庫的人之一。今天我將和大家分享近兩年來分布式資料庫在金融行業裡真實應用的細節與核心。
  • 對話巨杉資料庫核心研發:分布式資料庫修煉之路
    分布式資料庫是當前資料庫發展的主要方向,但是一直以來資料庫的核心研發都是十分神秘的團隊,作為巨杉資料庫幕後的隱士高人,他們對資料庫發展以及資料庫研發團隊的看法是什麼呢?本文我們就由一位巨杉資料庫的技術「老江湖」向大家分享分布式資料庫自研之路。
  • 山東移動計費系統首試國內自研分布式資料庫 業務處理提速30%
    中新網11月30電 螞蟻集團自研資料庫OceanBase正被更多非金融客戶用在核心系統上。據悉,山東移動計費業務系統已經正式「跑上」OceanBase,這是螞蟻集團自研資料庫在非金融領域的又一合作夥伴。
  • 易用、穩定、高效,萬裡資料庫開啟新一代分布式資料庫新紀元
    萬裡資料庫聯合創始人林韶賓受邀於主會場發表《新一代分布式資料庫的產品理念和落地實踐》的演講,從整個資料庫行業的發展、國內分布式資料庫的技術演變出發,講述了萬裡資料庫「易用、穩定、高效」的產品理念和對用戶的重要意義,以及如何以技術驅動創新,全方位保證該理念的落地實踐,做出優秀的新一代分布式資料庫,引發現場觀眾熱議。大勢所趨,新一代分布式資料庫如何定義?
  • 巨杉資料庫完成數億元D輪融資,引領金融級分布式資料庫發展
    巨杉資料庫是國內最早布局分布式資料庫產品的公司,自2011年成立起,9年來一直堅持以原生分布式資料庫作為核心產品,聚焦於金融業。2017年,巨杉資料庫成為首批入選Gartner資料庫榜單的國產分布式資料庫。目前,巨杉資料庫已被大規模應用於超百家金融企業,特別是銀行的核心系統,累計為數百個應用提供高並發零宕機在線數據服務。
  • 胡利明:金融機構分布式資料庫轉型的要點和路徑
    本文轉自【TechWeb】;近日,《金融科技時代》(2020年第5期)刊發了騰訊金融雲總經理胡利明的專題文章——《分布式資料庫在金融行業的應用和展望》,文章全面回顧了資料庫技術的形成過程、分布式資料庫的分類以及雲原生資料庫對分布式資料庫發展的影響,深入分析了金融機構分布式資料庫轉型需關注的要點和轉型的主要路徑,詳細闡述了分布式資料庫應用於金融行業的主要發展方向
  • NDN Protocol:為分布式存儲而生的資料庫
    資料庫,對於普通用戶來說會有一定迷惑。到底什麼是資料庫呢?我們可以從其名字來說,資料庫的意思是數據的集合,如果這樣來理解的話,在電腦上我們把照片放到同一個文件夾下,那麼這個文件夾就是一個照片資料庫;把文檔資料放到一個文件夾,那麼這個文件夾也是一個資料庫。
  • 產業分布式技術變革乘風破浪,資料庫國產化巨浪加速
    近日,在2020中國系統架構師大會上,騰訊雲資料庫技術負責人雷海林圍繞騰訊雲資料庫異構多源同步遷移技術方案進行了分享。」資料庫未來一定是向分布式方向發展,資料庫核動力升級的時代即將到來。」雷海林表示。
  • 國產資料庫行業研究與投資機會:寬賽道、高壁壘、新機遇
    經過近 30 年的發展,國產資料庫已經形成了以武漢達夢、人大金倉、南大通用和神舟通用「四小龍」為代表的,以阿里、騰訊和華為科技巨頭為代表的,以科藍軟體外延併購 SUNJE SOFT 廠商切入資料庫賽道為代表的,以及百餘家新興資料庫廠商採用開源參與的競爭格局。其中,武漢達夢、南大通用等企業廠商年銷售額均在億元以上。
  • 巨杉資料庫入選Gartner資料庫報告,中國首家入選廠商
    SequoiaDB巨杉資料庫入選Gartner資料庫報告,成為國內首批入選Gartner報告的資料庫廠商。「SequoiaDB, 總部位於中國廣州,是一款分布式、多模型(Multimodel)、高可用的SQL資料庫。SequoiaDB具有跨地域分布式部署和靈活擴展的能力,同時還支持針對內容和文件的塊存儲引擎。
  • OceanBase上線OBCA認證,推動分布式資料庫人才生態發展
    據悉,OceanBase後期將會面向更多的人員推出OBCP(OceanBase 資料庫認證專家) 及 OBCE(OceanBase 資料庫認證大師)等認證,形成一套完整的學習體系。OceanBase是螞蟻集團自主研發的分布式資料庫,歷經阿里和螞蟻集團內部不同場景的打磨,已經在支付寶、網商銀行等核心系統上順利運行。今年6月,螞蟻集團正式將OceanBase獨立進行公司化運作,成立北京奧星貝斯科技有限公司。
  • HBase——大數據平臺之分布式NoSQL資料庫
    #大數據#1 概述Apache HBase是一個開源的,分布式的,版本化的非關係、列式、多版本、可擴展資料庫,模仿Google的Bigtable。正如Bigtable利用Google文件系統提供的分布式數據存儲一樣,Apache HBase在Hadoop和HDFS之上提供類似Bigtable的功能。主要特點是可以對大數據進行隨機、實時讀/寫訪問(1s以內)。能夠託管非常大的表 - 數十億行X百萬列(傳統關係型資料庫列數一般不超過30個,單表不超過500萬)。