數據庫

大乐透走势图2500期图:SACC 2019:達夢數據庫推進實踐與思考

廣告
廣告

2019年10月31日~11月2日,由 IT168 旗下 ITPUB 企業社區平臺主辦的第十一屆中國系統架構師大會(SACC2019)在北京成功召開。本屆大會繼續沿用四大主線并行的演講模式,設置業務系統架構設計、大數據平臺架構設計、數字化轉型實踐和開源架構設計四大主線,為廣大參會者提供了一場最具價值的技術交流盛會,深得參會者好評。

達夢公司北京公司副總經理(技術負責人) 郭一兵

武漢達夢數據庫有限公司(以下簡稱“達夢公司”)作為國產數據庫領域的推動者,在本屆大會中進行了精彩議題分享,演講嘉賓是來自達夢公司北京公司副總經理(技術負責人)郭一兵,其擁有十年以上數據庫研發、產品規劃、架構設計和咨詢解決方案等豐富經驗。擁有多個超大型業務系統去IOE化、數十個國家部委級數據庫項目建設經驗,帶領團隊實現了達夢數據庫在國家電網、中國神華、中國鐵建、中國民航等重大行業的核心生產系統中的廣泛應用。目前致力于達夢數據庫核心技術研究及達夢數據庫的推廣工作。

摘要:

提到達夢,相信很多人都會有所了解。作為中國數據庫自主原創路線的堅定踐行者,達夢公司產品已成功應用于金融、社保、民航、電力等眾多行業。本次的分享從達夢數據庫的關鍵技術演進過程出發,對國產數據庫的技術發展和推進經驗進行了總結,重點突出新一代自研數據庫DM8及分布式數據庫的相關內容,并對國產數據庫未來的發展方向進行了相關展望,以下為郭一兵的演講實錄:

大家好,今天我給大家介紹一下達夢數據庫推進的實踐與思考。

首先我先簡單介紹一下我們達夢公司的情況和產品。然后說一下技術的路線發展,再重點介紹一下DM8,也就是我們今年推出的一個新產品。

達夢公司是做國產數據庫的,企業愿景是堅持原始創新、實現產業報國。這是我們公司的四個歷程:

70年代末,華中科技大學的馮裕才教授帶領一些學生研究數據庫的理論,當時更多的是興趣愛好;到1989年,在華中科技大學成立研究所,開始了產品的研究;到2000年我們由研究所進化成商業公司,進行了成果的轉化,一直到2012年,在這個過程中國家持續對我們進行支持;到2013年之后,我們通過市場運作模式,進行全面市場化競爭。

接下來是我們產品的發展歷史,從1992年依托華中科技大學成立研究所,到發布DM1、DM2、DM3,這些其實是一個產品的不斷升級迭代。

后期又有DM4、DM5、DM6,中間有一段時間是在2000年之后,是開源數據庫的興起時期,對原來達夢的數據庫產生了很大的沖擊,對此,達夢堅定走自主研發路線,并不斷提升自身能力,推出了滿足市場需求的產品。2012年我們推出了DM7,當時Oracle作為事實上的數據庫標準,依據于市場需求, DM7功能實現全面對標Oracle。

今年我們推出DM8,DM8在DM7的基礎上進行了性能優化,在功能方面主要增加了透明分布式,因為分布式現在在金融領域的應用越來越多,我們也逐步向金融行業進行推廣。

達夢數據庫的理念是重視細節,簡單實用。比如用過Oracle數據庫,都覺得它是一個重型的數據庫。達夢數據庫的功能很全,也可以完全對標Oracle,同時使用起來非常簡單。

根據市場需求,我們在持續改進、勇于創新,不斷完善產品性能,目前已支持事務型、分析型和分布式數據庫。

目前,關系數據庫現在最高版本是DM8,達夢公司初期產品就是關系型數據庫,后期我們也將產品線進行了擴展,以數據為核心,提供一些工具,包括數據同步平臺等等,可以說,達夢是一個以數據為核心提供全產品線的的服務商。

下面和大家介紹下我們的技術發展路線。

通過上面的技術路線可以看出,早期達夢數據庫都是單機運行,逐步發展到現在的分布式集群架構。詳細地回顧發展路線,達夢數據庫首先支持了高可用的主備架構,之后包括讀寫分離架構、MPP并行計算架構,后期是提供了DSC,就是共享存儲集群,到最后的是分布式集群的架構,整體隨著版本的提升我們所能提供的高可用方案越來越全面,我下面來一一介紹一下:

達夢最早支持的集群架構是主備集群,當時在國家電網智能電網調度項目時,用戶提出來的需求,我們當時攻關解決了這個問題,就是主機將重做日志傳到備機來保證一致性,也可以自動進行切換。其對標的是Oracle的Dataguard。我們通過這種方式,包括自動使用切換也好,實時復制也好,系統整體可用性可以達到較高的水平。

另外,2012年,國產數據庫廠商面臨著一個問題,國產數據庫要和國產CPU、國產平臺進行適配,之前的都是基于x86進行適配的。而國產CPU存在包括主頻、內存、帶寬等一些問題。

基于國產CPU在電子政務領域進行使用,大多數業務場景都是讀多寫少,在這樣的場景模式下,我們提供了一個讀寫分離的方式,主機是可以寫的,備機是只讀方式打開?;詬詹盤岬降鬧鞅訃悍⒄估吹募芄?,它會在接口驅動層自動會將SQL語句進行分發。如果是讀SQL語句就分到備機上,如果是寫SQL語句就分到主機上。

實際上是把讀事務的讀事務給充分的并行起來了,當然這套解決方案不能解決所有的場景,但是對于讀多寫少的場景它的有效性還是非常高的。

我們在一些部委和央企的實際使用,如果是單節點200個并發,登陸就已經超過五秒,而對項目驗收來說,他要求500個并發不超過五秒,所以只能通過讀寫分離的方式來提升性能,替國產CPU分擔壓力。如果是基于x86的,我們用單機就可以把這個問題解決,但對于國產CPU的我們必須用讀寫分離的方式。

另外我們還提出了并行計算的方式,在2011年大數據興起,數據量基本上達到TB級別,現在就更大了,可能是達到PB級別。數據量對于單條復雜SQL語句并行執行來說,其他的集群都很難解決,達夢提出了MPP+列存儲的方式,來將一條SQL語句充分并行起來,提高執行是金;同時也支持MPP+行存儲的方式,行存表可以快速轉入列存,行存表和列存表進行進行關聯查詢,實現了行存和列存真正進行融合。

如果是純列存,頻繁的進行插入和更新是非常不合適的,性能也很差,但是基于列存我們做了行列融合,先給表創建一個影子表,是行存表,如果你對列存表進行更新時,先更新到行存影子表里,然后在后臺進行合并,把行存表的信息合并到列存表上。如果查詢,能夠做到對沒有合并完的數據會進行必要的綜合,返回給用戶,會保證數據的一致性。

  達夢公司MPP可以做到高頻的插入和并發精確查詢,也可以進行大規模數據集上的統計分析。另外我們MPP是支持事務ACID的,就是事務的強一致性。所以在一些案例中還是可以滿足一些需求的,比如說市場監督管理總局的某系統,就是大量使用了達夢MPP集群,系統主要是查詢,同時必須能夠處理事務,所以只能說是達夢這種MPP集群可以滿足用戶需求。

另外一個架構發展就是共享存儲集群,Oracle現在主推的是他的RAC共享存儲集群,幾乎所有的用戶在用Oracle進行事務處理時,肯定選擇RAC方案。

這可能是國產數據庫的一塊心病,因為我們大部分國產數據庫廠商無法實現技術突破,被認為是在高端集群上國產數據庫和國外主流商業數據庫最大的一個差距。達夢經過多年的研發,我們突破了此類技術, 推出了達夢的共享集群DSC。

從2011年我們就開始做,但真正成熟是在2018年。因為他不是那么容易做出來的。2016年時,一些案例中跟合作好的一些伙伴也陸續進行了大量使用,所以我們認為2018年它已經成熟??贍苡幸恍┤艘蔡倒蠹易蓯竊諦塹腞AC,但是遲遲沒有拿出來。但達夢現在首推的方案就是共享存儲集群。

另外我們在今年發布了DM8,其中提出了分布式架構,現在的一些友商,他們提出的都是一些分庫分表集群,類似于MySQL這種方式。這種方式有個問題是通用性很差,例如我的應用系統很可能需要根據你的數據庫進行修改。之前可能大量的SQL語句、存儲過程需要修改,甚至觸發器都無法使用,針對這些問題我們提出了達夢的解決方案。

其實是分布式DSC的方式,各個節點也可以讀寫。首先是分了三層:計算層、日志層和存儲層,每一層都是獨立服務器。計算層的各個節點都可以讀寫,實際上是個DSC,但是他們對存儲層都可以訪問到,其實存儲層對計算層是共享存儲集群,每個節點都可以訪問存儲層所有節點。

通過這種方式,計算和存儲分離的方式解決了分布式自動擴展的問題,計算節點和存儲都可以自動擴展。傳統的方式或共享存儲方式都達不到這個水平,但說我們來說是可以實現的。

另外日志節點,負責將重做日志應用到存儲層,會對數據進行分區,同時來完成數據的多副本,分布式的主要特點都能滿足。他的優點是對業務系統的兼容性非常好。因為之前所用的所有SQL語句在這個系統上不需要進行修改,這是我們的最大的一個優勢,我們把歷史的一些積累應用系統,和我們現在的創新點結合起來,這是我們提供的一個分布式數據庫。

接下來介紹一下DM8,它對原來的功能進行了增強,比如說達夢數據庫兼容性比較好,我們對國際標準、對兼容業界的測試標準(Oracle)都進行了全面的兼容,包括他所能提供的系統包以及視圖,都能進行全面兼容。這樣就做到了?;び沒У腦型蹲?,基于Oracle開發的系統移植到達夢上不需要修改代碼。對于用戶來說原有的代碼完全可以在達夢上進行使用。移植過程成本費基本為零,也非常容易做到。

首先我們對面向對象的過程語言存儲過程進行了改進,優化了調優和調試功能,現在通過各種方式可以達到像調試C語言或Java語言的水平,相對來說對存儲過程的運維或開發會比較得心應手。

其次我們DM8對優化器方面也做了很好的兼容,傳統關系數據庫最難的一點就是優化器,像開源數據庫和Oracle的差距也非常大。

達夢數據庫在這方面也做了很深入的研發。像我們DM8在兼容性方面是兼容機器生成的復雜SQL,因為現在我們在一些應用系統中有一些機器生成的SQL語句特別長,可能達到上萬行。所以這種SQL語句是機器生成的SQL語句,人看起來是非??植賴?,對于數據庫來說也不好對付。像這一類復雜的上萬行一條的SQL語句的分析,我們也做了針對性的優化。

我們也提供了一個虛擬機,DM7也有,我們在虛擬機上來完成SQL語句和面向對象語言的支撐,包括我們數據庫設計核心的工作日志、回滾段,分區進行了全面的改進和優化,它的性能更好,并發性也更好,穩定性也更好。

這是我們性能提升的標準。TPC-C的標準是100萬,是在單臺兩路CPU上的測試結果,16G的內存、300G的SAS磁盤。另外我們在TPC-H的基準測試可以達到17分鐘,這兩個指標在國產數據庫中是非常領先。

同時DM8也提供了更加完善的運維管理工具,這部分是達夢數據庫之前相對的一個弱點,諸如Oracle在這方面做的相對完善,DM8已經把短板補齊了。

我們提供了一個圖形化界面,對曾經發生的一些瓶頸、等待等一些問題都可以進行記錄,同時給用戶提供報警。也可以對目前狀況提出建議,如果出現某種問題,可能的分析原因在哪里,它會自動對一些運維、經驗不太豐富的人員提供綜合考慮的建議。

此外DM8也在挖掘硬件的潛力,現在CPU的核數越來越多,如何去支撐多業務擴展以及TB級別的內存,包括一些固態硬盤。現在越來越多的應用系統是用在固態硬盤,非常好的服務器上。另外國產CPU也在不斷的進行持續進步,我們要利用性能的提升來改進達夢數據庫的性能。

DM8架構新的趨勢,一個是行業融合,提出了HTAP的方式,就是通過高級日志的方式來實現。

我們寫一份數據,我們會把實際情況存儲兩份數據,一份是以傳統的行存儲組織,一份是以列存儲組織。這樣的話,你對這個表如果要進行分析,我們直接在列引擎上查就可以。如果要進行頻繁的查詢操作,我們在行引擎上查,但是它是一個表,它會自動地進行分發。根據發來的SQL語句會判定是事務型語句還是分析型語句,進行自動的分發,這是DM8的一個能力。

DM8集群設計的理念是同源性,我剛才說的所有包括關系型數據庫、分析型數據庫、分布式數據庫,主備集群、讀寫分離集群、共享存儲集群還有MMP集群其實是一個產品,我們內部只有一個產品線,我們只用一個產品可以滿足所有的場景。這個理念和Oracle是一致的。

我們提出了數據守護與讀寫分離的集群,每個點實際上是一個DSC集群,主DSC可以讀寫,但備機以只讀方式打開,但它不是單機的,它是一個DSC集群,這個集群也可以實現故障自動切換、實時歸檔??梢允迪侄列捶擲氳募?,可以自動把對方把一些讀事務分到備機。

DM8對大規模并行處理MPP也進行了增強,一個是在優化器上,另外我們之前發現我們的通訊代價是比較大的,我們也會對這一層進一步的優化。

達夢公司會根據軟硬件技術,發展一些新的東西,我們把一些SSD、大的一些內存結合起來完善我們的一些優勢。實際上是共享存儲的一些優勢,多點讀寫、完整的數據庫特性,這是達夢數據庫最大的兩個特點。

數據共享集群,我們在DM7主推的是兩個節點,我們在DM8的時候我們已經擴展至八個節點,未來我們可能會擴展到更大,就是32個節點。因為分布式集群的擴展性比傳統的架構要好很多,我們實際測試的時候它能夠承受這么大的壓力,所以我們現在主推是最多可以擴展到八個節點。另外我們也可以支持同城跨機房多活部署,就是我們的DSC的各個節點可以跨機房部署,機房之內可能有幾十公里的距離。如果一個機房發生意外,另一個機房仍能對外提供服務。

達夢數據庫透明分布式集群,是綜合了分庫分表,像KV集中寫入KV鍵值數據庫等數據庫的優勢,結合我們的優勢來實現我們透明分布式的技術。

方式也可以進行擴展,這個方式的優點是魚與熊掌兼得,一是要有分布式數據庫的優點,比如可擴展性、多副本、數據的分區、避免熱點這些方式我們都可以支持,另外是以前開發的一些SQL語句、應用程序,他有大量的SQL語句重組過程我們也可以繼承,使用上沒有大的問題,應用程序以及基于傳統數據庫的開發移植到分布式數據庫上不需要大的修改,這是達夢最大的一個業務優點。

上圖展示的是DM8的融合架構,是把分布式架構、TDD架構和達夢分布式的統一存儲,包括DSC架構和RWC架構在分布式存儲的統一。另外DM8要把MPP架構融合進來,像分庫分表在未來也會支持。現在達夢公司主推的是DSC分布式架構,或者讀寫分離架構。

化繁為簡,合而為一。是達夢數據庫的自身優點,只用一個產品可以將所有的場景都可以兼容,因為數據庫最難的一點是通用性,數據庫一套產品要滿足相當多的產品,我們不會把它做成多個產品。如果是一個產品,可以對我們人員、資源投入進行集中。

最后進行簡單的總結。數據庫國產化的關鍵:

一是復雜應用如何進行有效的移植,達夢數據庫會向Oracle進行全面的兼容,基于Oracle開發的應用程序移植到達夢不需要修改程序。像Oracle的接口我們也進行了完整的兼容,不需要再對接口進行修改。把接口處Oracle的驅動換成我們的驅動,修改下連接串和頭文件并重新編譯,就可以從原來連接Oracle的數據庫連接到達夢數據庫,這個方式移植成本為零。

數據庫國產化的發展關鍵是什么呢?,用戶對達夢數據庫存有疑慮,例如我基于你上線總是害怕會宕機或出現嚴重故障。針對這樣的疑慮,達夢公司提出了解決方案,原來Oracle的數據庫不用扔掉,可作為備機來使用,建議用戶通過一個實時同步工具——DMHS,是達夢公司的一個獨立工具,是異構數據庫,它可以將達夢數據實時同步到Oracle庫上。

達夢數據庫通過軟件工程化實現的方式來柔性遷移,從國外數據庫遷移到達夢數據庫上,用戶不需要大量的修改,用戶雖然換成了國產數據庫,但他仍然會感覺是原來的國外商業數據庫,設計理念、使用習慣都是一樣的,這會是一個平滑的過渡,對用戶來說是可以接受的,也節省了用戶的成本。

此外對于達夢來講,無論是架構的演進、產品的策略,我們都是以用戶需求為引導,未來,我們依然會以用戶和市場的需求為導向,打造滿足時代需要的產品!我今天的分享到這里就結束了,謝謝大家!

我還沒有學會寫個人說明!

從P4到P9, 在馬云家寫代碼到雙11前端PM

上一篇

2019年度IT168技術卓越獎名單:大數據類

下一篇

你也可能喜歡

SACC 2019:達夢數據庫推進實踐與思考

長按儲存圖像,分享給朋友

ITPUB 每周精要將以郵件的形式發放至您的郵箱


微信掃一掃

微信掃一掃