天天看點

雲栖PPT下載下傳 | 開源界大咖集展現身,開源資料庫專場重點再回眸!

阿裡雲開源資料庫項目最新釋出

阿裡巴巴集團副總裁、阿裡雲智能資料庫事業部總裁、進階研究員李飛飛(飛刀)、阿裡雲資料庫資深技術專家樓方鑫(黃忠)以及阿裡雲資料庫技術專家傅宇(齊木)三位阿裡雲技術專家為大家介紹了最新的阿裡雲開源資料庫項目。

李飛飛:

資料庫在過去這麼多年,尤其近幾年發展如此迅速的核心原因之一就是開源生态做出了很大貢獻。難以想象如果沒有開源的MySQL、PG、HBase、MongoDB以及Cassandra等,隻有Oracle、DB2、SQL Server等,今天世界會是什麼樣子?那必然還是寡頭壟斷的局面。因為核心的OLAP系統難以實作,需要經過大量試錯才能不斷完善。而開源生态為資料庫提供這樣的一個平台,幫助資料庫快速疊代,使得開源資料庫可以比肩商業資料庫的能力。

對于阿裡而言,AliSQL獲得了2018年MySQL的社群公司貢獻獎,這是因為AliSQL做了大量優化,比如實作了Sequence、表級并行複制以及隐式主鍵等。而做這些優化的驅動力是阿裡内部的業務需求,并且對于技術的優化後續就會貢獻回開源社群。

雲栖PPT下載下傳 | 開源界大咖集展現身,開源資料庫專場重點再回眸!

最新釋出是讓DRDS支援POLARDB,并且在2020年的某個時間,阿裡雲将會開源DRDS。DRDS完全由阿裡自研,其中包含了Sharding、Unique Sequence、Parallel Query、Global Secondry Index以及Distributed Transaction。希望大家能夠更加廣泛地使用DRDS,如果有機會也貢獻更多的代碼,将DRDS做得更好。

雲栖PPT下載下傳 | 開源界大咖集展現身,開源資料庫專場重點再回眸!

樓方鑫:

AliSQL通過效率、性能、自主、穩定以及安全方面的不斷改進,希望讓業務、運維、研發和合作夥伴都能夠感覺更“爽”。

雲栖PPT下載下傳 | 開源界大咖集展現身,開源資料庫專場重點再回眸!

基于這個思路,阿裡雲在一年半之前就将主要精力投入到MySQL 8.0上面,這是因為MySQL 8.0更能夠滿足以上目标。MySQL 8.0具有Automic DDL、Instant Add Column、Window Function和Temp Engine的能力。而AliSQL在MySQL的基礎之上還做了更多的優化,比如支援了TDE加密和SM4國密算法,并且重新設計了線程池,AliSQL Cluster支援三節點并能做到RTO為0等。

雲栖PPT下載下傳 | 開源界大咖集展現身,開源資料庫專場重點再回眸!

MySQL官方版本也有線程池,而AliSQL線程池的差別在于連接配接數可以達到2萬,并且能保持非常平穩的輸出。首先,AliSQL嚴格控制了線程數來提升了CPU效率,做到了高性能。其次,AliSQL可以一鍵随時切換啟用線程池,而無需重新開機執行個體。最後,AliSQL能夠區分操作類型并實作智能優先級排隊,并适用于所有業務場景。總之,AliSQL的線程池是完全重新實作的,并且性能也會超出期望。

雲栖PPT下載下傳 | 開源界大咖集展現身,開源資料庫專場重點再回眸!

AliSQL Cluster可以總結出“三高”,即高可靠、高可用和高性能。AliSQL Cluster具有99.99%的可用性,事務資料具有強一緻性,并且使用了Paxos智能并行發包實作高效同步。這樣的“三高”使得業務、運維和研發都更“爽”。

SQL Outline是在資料庫版本更新、增減索引、統計資訊以及程式固化時來收集和編輯SQL關鍵路資訊,并用持久化Hint固化執行路徑的。

AliSQL基于MySQL做了很多性能的增強,實作了對象統計,并提供了完善的名額和多級次元。比如索引、SQL統計資訊都能夠一目了然,是以可以加速對業務的響應。這也說明在上雲之後,如果想要服務好業務,還有很多工作需要做。

雲栖PPT下載下傳 | 開源界大咖集展現身,開源資料庫專場重點再回眸!

AliSQL在5.6版本時做了開源,經過總結之後發現讓官方合并AliSQL 5.6這條路走不通,是以也将對于AliSQL 8.0進行開源。在開源8.0版本的時候會吸收5.6版本的經驗,想辦法更高效地維護AliSQL開源項目。

傅宇:

在阿裡巴巴業務中,DRDS和MySQL是互相配合,榮辱與共的關系。DRDS是阿裡雲提供的一個服務,全稱是分布式關系型資料庫服務。DRDS功能最簡單概括就是分庫分表,使用者可以從DRDS接口上建立一個表,隻需要在建表時指定分庫分表的方式,剩下的工作由DRDS搞定,使用者可以像操作普通表一樣操作DRDS,業務層無需再做分布式相關的考慮。除此之外,DRDS還提供了讀寫分離、彈性擴容等能力。

下圖是典型的DRDS部署拓撲,圖左側分為兩層,Server層包含多個無狀态的DRDS節點,DRDS節點向Load Balancer彙報心跳,如果出現當機,Load Balancer就會将流量遷移到其他節點上,保證叢集高可用。存儲層可能使用RDS、POLARDB甚至列式存儲。總體來說,查詢會在Server層被轉化成執行計劃,在存儲層具體執行并傳回給使用者。圖右側是DRDS的分析型隻讀執行個體,裡面包含多個MPP Worker。對于複雜SQL,單台機器可能無法完成計算,此時就會将SQL的執行計劃發往MPP叢集來計算,并且不會對主庫産生影響。

雲栖PPT下載下傳 | 開源界大咖集展現身,開源資料庫專場重點再回眸!

DRDS的架構演進經曆很長的過程,最開始隻想着如何将分庫分表做到極緻。随着DRDS上雲,企業級場景更加豐富,遇到了越來越複雜的SQL,需求推動着DRDS架構的重構。如今的DRDS架構最分為了網絡、優化器和執行器。

SQL進入DRDS首先會經過Parser變成AST,之後經過Validator進行驗證,通過驗證之後轉化成最樸素的邏輯執行計劃,在經過SQL Rewriter和Plan Enumerator變為最優的實體執行計劃,并交給Executor進行執行。

雲栖PPT下載下傳 | 開源界大咖集展現身,開源資料庫專場重點再回眸!

對于查詢優化器而言,SQL Rewriter會對邏輯執行計劃進行改寫,它是基于啟發式規則的優化器,也被稱為RBO。SQL Rewriter會實作子查詢的去關聯化,并做算子Transpose,而為了實作極緻下推,SQL Rewriter還做了Join Clustering。

雲栖PPT下載下傳 | 開源界大咖集展現身,開源資料庫專場重點再回眸!

查詢優化器的第二步是Plan Enumerator做的實體優化,主要負責Joint Recorder和算法選擇。DRDS采用的最為通用的Volcano/Cascades優化器,經過這一過程會拿到理論最優的實體執行計劃。

DRDS查詢優化器的優化過程是基于代價的,而代價最初計算來自于統計資訊,這些統計資訊将會計算代價并帶入算子Cost Model中進而計算執行計劃的總體代價。

雲栖PPT下載下傳 | 開源界大咖集展現身,開源資料庫專場重點再回眸!

查詢優化無法瞬間完成,是以需要管理執行計劃,可以将執行計劃存儲下來加以複用,提升優化速度。DRDS使用了基于Chunk的執行器,使得每個算子一次性産出一批資料。在Chunk裡面資料按列存儲,分析速度更快,計算效率更高。Parallel Query部分會啟動多個Worker程序并對結果加以彙總。

并行處理--MySQL發展的趨勢及中國本地應用實踐

中國計算機行業協會開源資料庫專委會會長,極數雲舟CEO周彥偉為大家分享了MySQL的基礎架構和ArkDB的并行化實踐。

MySQL基礎架構

MySQL Server引擎的好處在于大家可以基于此實作自己的資料庫。目前,MySQL已經釋出了8.0版本,可以看到這麼多年MySQL官方其實一直在進步。MySQL在并行和提高速度方面做了很多工作。在引擎方面,最開始MySQL使用的是MyISAM,現在預設是InnoDB,這是因為MyISAM的并行處理能力不夠好,而InnoDB實作了行級鎖,還支援了MVCC,增加了并行讀寫的能力。在引擎層面,從MyISAM過渡到InnoDB是一個巨大的進步。

雲栖PPT下載下傳 | 開源界大咖集展現身,開源資料庫專場重點再回眸!

InnoDB的發展

InnoDB也在MySQL 5.6、5.7、8.0的演進過程中發生了很大變化。InnoDB最早采用共享表空間,一堆表放在一個檔案裡,效率極差。後來InnoDB采用獨立表空間,一個表放在一個檔案裡,再後來演變到一個表分成多個檔案。這樣的變化是希望提升資料的處理速度。而到現在為止,MySQL 8.0還是落在單台伺服器上,隻能利用單台機器的計算和存儲功能。

現在,MySQL的進步其實就是InnoDB的進步,這在一些參數的變化上有所展現。此外,Inno DB也對Undo進行了優化,5.7之前ibdata檔案中包含Undo段,導緻檔案空間無法回收。5.7版本之後,Undo段從ibdata檔案中獨立出來,就可以實作并行讀寫。

很多年的時間,MySQL擴充都是基于Replication的。現在,MySQL官方也做了叢集化的處理。5.6之前是單線程複制,5.7版本中增加支援Write Set級别的并行複制。

總結而言,MySQL資料庫自身也在不斷進步,到如今MySQL 8.0版本已經做得很不錯了,能夠支援複雜查詢并且效率不錯。

并行化在ArkDB的實踐

雖然MySQL官方近幾年很努力,但是依舊存在一些不足之處,是以ArkDB也希望能夠基于MySQL做出一些貢獻。ArkDB在MySQL的基礎上做了大量并行化實踐。在引擎層,ArkDB實作了計算和存儲分離,通過分布式存儲實作了并行讀寫優化。在叢集層,ArkDB實作了自适應多線程實體複制,極大地提升了資料複制效率。在接入層,ArkDB實作了對稱式中間件叢集路由,是接入層成為無狀态的,能夠承擔大規模的通路應用。在高可用方面,ArkDB實作了去中心化分布式哨兵守護叢集。在遷移層,ArkDB實作了多源端多通道多結構實時同步,可以實作精确到行級的運作。

雲栖PPT下載下傳 | 開源界大咖集展現身,開源資料庫專場重點再回眸!

ArkDB在引擎層既基于索引樹存儲資料,又将資料分片地存儲在索引結構中。基于分布式存儲實作了并行讀寫優化,基于索引結構實作資料并行分片,基于對象存儲實作并發讀寫支援,基于分布式存儲支援了多副本和快照備份。ArkDB在叢集層實作了自适應多線程實體複制、實體日志的多線程讀寫,并基于從庫的多版本控制實作了多節點無鎖同步。ArkDB在遷移層充分利用了各種并行方式,從前端多源端,到多通道處理實作了在資料打通過程中盡量提升效率和傳輸速度。

PostgreSQL 12 迎來新機遇

Postgres中國社群主席,太陽塔科技創始人趙振平為大家分享了PostgreSQL 12帶來的新機遇。

目前,PostgreSQL 12的開發速度非常快,今年5月份釋出Beta 1版本,6月份釋出Beta 2版本,8月份釋出Beta 3版本,9月份釋出Beta 4版本,并且有可能成為了最後一個Beta版本,這意味着PostgreSQL 12即将正式釋出。雖然每個Beta版本對大家而言可能隻是一個小版本,但對于PostgreSQL社群而言,卻意味着大量修改,比如在PostgreSQL 12的Beta 3版本中修改了2個安全issue并且修改了40個小Bug。截止到目前,PostgreSQL 12的Beta版本總共做了161項修改,整體而言修改非常大,很多技術的修改和完善将為PostgreSQL帶來很大的提升。而且在未來,PostgreSQL基本上每個季度都會推出一個小版本,每年釋出一個大版本。

雲栖PPT下載下傳 | 開源界大咖集展現身,開源資料庫專場重點再回眸!

如今PostgreSQL等開源資料庫正在面對新的機遇,除了資料庫領域的國産化之路,世界各地方都開始了“去IOE”。而圍繞PostgreSQL可以做很多創新,企業可以基于PostgreSQL開發産品,甚至将PostgreSQL和背景産品打包銷售到國外,開發者還可以基于PostgreSQL開發新的資料庫。而對于太陽塔這樣的公司,也可以更好地提供PostgreSQL技術服務。

之是以選擇PostgreSQL,首先是因為它曆史悠久。PostgreSQL在網際網路産生之前就已經存在了,其創始人Michael Stonebraker獲得了圖靈獎。從DB-Engines的資料來看,PostgreSQL在一路飙升。并且PostgreSQL和SQL Server等主流資料庫同宗同源,都是從Ingres衍生出來的。

從技術的角度來看,PostgreSQL也具有很多的優點。第一點就是并行,這一能力在PostgreSQL 10時開始成熟,在PostgreSQL 11時發揮得淋漓盡緻。PostgreSQL的并行能力主要展現在并行掃描、并行連接配接以及并行Append三個方面。第二點是穩定性,從版本疊代的過程可以看出,PostgreSQL是經過千錘百煉的。第三點是安全,大家可能對于開源資料庫的安全性存在一些誤解,其實PostgreSQL是非常安全的,它提供了認證方式、通道加密和資料加密一套完整的安全機制,基本可以認為Oracle有多安全,PostgreSQL就有多安全。第四點是功能強大,PostgreSQL在功能上還有超過Oracle的地方,比如索引更豐富、計時功能更強大、分布式數倉功能更加成熟。

此外,之是以說PostgreSQL會有很大機遇的另外一個原因就是它的開源協定,大家可以随意使用、拷貝、分發,而且可以随便修改,沒有任何版權風險和專利風險。是以,如今很多資料庫都是基于PostgreSQL,也正是因為它的開放協定和開放政策,提供了很大的商機。

實踐已經證明,基于PostgreSQL不僅誕生出很多公司,也誕生出很多的産品,比如獨角獸公司Greenplum。此外,PostgreSQL具有強大的生态圈,國際社群的凝聚力和開發能力能夠碾壓一切,PostgreSQL采用的是開放式體系結構,也就是插件結構,開發後可以很容易地回報社群。而且PostgreSQL的代碼和貢獻的品質都非常高。

開源資料庫在平安科技的應用實踐

平安雲資料庫及存儲産品團隊總經理汪洋為大家分享了平安科技的開源資料庫選型原則以及應用實踐。

為何使用開源資料庫

作為一個管理着數萬億資産的金融王國,平安為何要引入開源資料庫?其實,技術永遠是服務于業務和場景的。平安在2013年做完銀行新核心的“換心手術”之後,開始考慮向網際網路、數字化轉型。在這一過程中,一方面需要高性能、高可靠、高可用的系統架構,另一方面需要快速地捕捉市場需求,并快速轉換為IT需求開發出産品,再投入市場進行驗證。如果使用傳統的商業資料庫,在靈活地捕捉市場需求之後快速将産品推出市場方面就顯得捉襟見肘,這是平安引入開源資料庫的原因之一。

在靈活方面,微服務解決了單體架構的很多問題。第一點,單體架構牽一發而動全身,修改風險很大,開發和測試周期很長,新功能的上線速度很慢。第二點,在單體架構中,為了擴容某個元件或子產品需要對整個系統進行擴容,這是一種浪費,而微服務架構則可以針對某一個服務進行擴容。第三點,微服務可以滿足不同技術棧開發人員的需要,不同團隊可以使用不同的技術棧進行開發。

如今,一種資料庫難以适應所有業務場景的需要,需要依靠混合持久化資料庫來解決不同資料存儲需求。One For All時代已經過去,資料庫即便做到“大而全”,也難以涵蓋所有場景,現在要做的是“Best Fit”,針對某一種業務和負載,使用最适合的資料庫。此外,傳統的商業資料庫過于沉重,而開源資料庫則非常輕量。這些也是引入和推廣開源資料庫的原因。此外,即便使用開源資料庫,也很難滿足所有業務的需求,需要能夠基于開源資料庫進行二次開發,而這也是商業資料庫無法實作的。

開源并不意味着免費

引入開源資料庫是必然趨勢,但開源并不意味着免費。雖然License是免費的,但還需要付出其他成本。掌握開源技術需要一個過程,需要學習成本;從商業化産品到開源資料庫的遷移需要遷移成本;遷移完成之後還可能會增加運維成本以及風險,這些成本都需要在引入開源資料庫的時候考慮。

如何選擇開源資料庫

首先要看業務場景,因為技術是服務于業務場景需求的。再看是否有合适的替代方案,比如PostgreSQL就是Oracle比較合适的替代方案。還要考慮現有開發人員的技能,否則會非常痛苦。此外,需要考慮現有資料庫的負載模式、開源社群的活躍度、市場佔有率以及行業知名度。另外還需要關注開發語言和資料庫類型,需要與團隊及業務場景适配。也需要關注資料庫技術的發展趨勢,比如存儲和計算分離、雲原生、分布式等。最後一點就是不要使用太多開源産品,每類選擇一種即可。

開源資料庫引入和應用政策

引入和應用開源資料庫也有一些政策:差別現有和建立的系統,選擇不同政策,可以降低遷移風險和成本。将資料庫進行分類,先從不重要的庫開始遷移,積累經驗,最小化風險。劃分不同的業務條線,先從要求不高的業務條線下手。實作資料庫産品引入過程中的Owner機制,做到“術業有專攻”。制定資料庫架構、營運和開發的指南手冊。還需要對營運、開發和DBA進行教育訓練。針對遇到的問題持續進行架構優化,積累開發和營運經驗。還需要通過學習源代碼來快速追蹤到根本原因,并防止問題的再次出現。如果現有功能滿足不了業務需求,可以組建研發團隊進行二次開發。最後一點就是擁抱開源社群,建立自己的生态,實作與開源社群的良好互動,進而實作雙赢。

資料庫選型政策

在關系型資料庫方面,因為平安屬于金融公司,是以隻要涉及到資金交易都需要極高的資料安全性和一緻性以及7*24小時不間斷的服務。不涉及資金交易的則可以根據具體業務場景選擇。在分布式關系型資料庫方面,有兩種資料庫選型——自研的PDRS和開源的TiDB。

開源資料庫推廣成果

現在平安總共有将近三萬個資料庫執行個體,其中Oracle占比非常低,Redis最多,PostgreSQL次多,也有一些MongoDB和MySQL執行個體。

發展路徑

總結而言,資料庫的發展路徑未來将會支援容器化部署,和K8S更好地結合,甚至實作Serverless化,也會出現更多的自研資料庫和基于開源資料庫研發新的功能。最後一點,就是在雲上可以收集大量運維資料,進而實作AIOps。

傳統資料庫到開源資料庫遷移的工具化流程

迪思傑DSG公司創始人、總裁韓宏坤為大家分享了傳統資料庫到開源資料庫遷移的工具化流程。

現在已經到了資料庫曆史的一個拐點,各個企業紛紛從高價值的商業資料庫走向自由的開源資料庫,并且混合架構時代已經來臨,各種資料正在快速地流動。

DSG需要服務于各種行業的客戶,而他們的系統千差萬别。DSG擁有完全自研的技術,是以能夠快速跟進各種技術的變化。DSG的核心技術優勢在于幾乎能夠涵蓋所有主流資料庫日志的實時分析技術,并且創造了一種統一的資料庫資料表達語言,是以DSG可以使用較少的研發資源創造很大的價值。目前對于中國而言,在資料庫方面有巨大的壓力和需求,正是以才驅動着資料庫技術走向極緻。阿裡如此,DSG也如此。

DSG具有強大的資料處理和複制能力,對于Oracle的遷移而言,機遇在于PostgreSQL,實踐也證明了PostgreSQL。各個企業都需要做遷移,而對于工程人員而言,可以說“兵貴神速”,是以DSG和阿裡合作對Oracle的遷移方法論做了整體梳理。Oracle遷移的客戶痛點主要有6點:

 源資料庫對象關系、依賴關系複雜;

 資料庫和應用改造工作量不明确;

 目标庫規格不明确;

 遷移割接業務停機時間短;

 需要同步進行資料對比驗證;

 需要資料回流保證安全和應用回切。

對于Oracle遷移的解決方案而言,首先要通過采集和評估提前發現定位問題,不是在遷移的時候才發現問題,而應該是在遷移之前,就完成對資料庫對象關系以及應用和庫之間關系的梳理,發現可能存在的問題并作出規劃。其次要做自動相容性識别和轉換,自動地發現不相容的對象,并自動梳理資料庫對象之間的關系,從頭到尾自動地生成完整的遷移報告。這樣一來,使用者就能夠知道自己應該負責什麼,DSG應該負責什麼。最後還可以實作高效低幹擾的增量同步和資料實時對比,DSG可以幫助客戶以每小時300G到500G的速度進行資料庫遷移,并實作快速驗證。

阿裡推出了ADAM計劃,将整個資料庫和應用遷移的流程都定義得非常清晰。ADAM提供了功能強大的采集、畫像、評估、改造以及遷移系統。ADAM的智能畫像系統能夠為使用者客觀地進行Oracle資料庫畫像,分析其特性、性能、容量以及外部依賴等并以圖形化方式展現出來。ADAM的智能評估系統能夠分析資料庫對象以及SQL的相容性,識别風險SQL,将PLSQL轉成Java以及自動對資料庫對象進行相容性轉換。ADAM的智能改造系統則會為使用者提供一個資料庫報告,并通過仿真為使用者提供資料庫改造建議。

雲栖PPT下載下傳 | 開源界大咖集展現身,開源資料庫專場重點再回眸!

當ADAM的工作完成之後,DSG就負責打通資料遷移的最後一公裡了。DSG提供了一個非常強大、完整的資料庫遷移工具,實作了以ADAM遷移計劃為核心的完整方法論,打通了資料遷移的最後一公裡。DSG可以實作場景化、自動化、流程化的資料全量遷移、增量遷移、資料校驗、資料修正等,幫助使用者輕松、高效地遷移到雲上或者POLARDB一體機等。

DSG和ADAM的核心能力結合起來就能夠形成Oracle遷移智能全鍊路解決方案,并且在國内的很多客戶企業中已經落地。這麼多年來,DSG一直在深耕資料遷移方面的底層技術。而且DSG for ADAM深度內建了阿裡雲的技術,實作了資料遷移、資料比對等過程的可視化。此外,DSG for ADAM資料庫遷移方案對于正常業務的幹擾極小,并且可以在中間狀态、雲上雲下環境中部署。為了打消客戶對于資料庫遷移的疑慮,DSG還提供了完善的資料回流功能。

雲栖PPT下載下傳 | 開源界大咖集展現身,開源資料庫專場重點再回眸!

DSG擁有真正的底層技術,是以可以和阿裡雲一起推出更多的産品和相關的服務,比如加入ETL功能增強Oracle遷移大腦,支援blob to oid等更多類型方案,異構線上DDL轉換能力,加強遷移指導評估能力,支援POLARDB、ADB等更多全新的目标資料庫等。

DSG相信未來是開源和PostgreSQL的時代,Oracle被取代的速度可能非常快。而且國家也提出了軟體國産化的要求,PostgreSQL為核心的資料庫很可能是一個突破口,是以對于資訊架構的管理人員而言應該抓緊行動。

資料遷移能力隻是DSG的一部分,DSG在資料備份、容災、內建和彙集等方面也非常強大,DSG能夠适應各種各樣的異構資料庫,并且可以在資料采集和實施過程中進行轉換,可以幫助使用者獲得資料遷移的自由。

傳統資料庫DBA到開源的技能和心理切換

雲和恩墨創始人,ACOUG主席蓋國強從天道酬勤、認識時間和大道至簡三個方面分享了DBA的學習探索之路。

現在是一個“相向而行”的時代,無論大家如何讨論Oracle,但是沒有一個資料庫敢說自己超過了Oracle,而都在學習和追趕Oracle的特性。作為技術人,無論曾經熟悉什麼技術,在這個快速變革的時代,都會面臨學習的挑戰,都會感到焦慮。如今,随着資料庫技術的飛速發展,DBA應該進行“戰略轉移”。

天道酬勤

無論對于程式員還是DBA而言,學習方法可以分為6步。第一點就是打好地基,“為山九仞,始于壘土”,學習任何技術将基礎打牢都是前提,這樣才能靈活運用這些技術解決現實中遇到的困難。第二點是學會思考,很多人雖然學習了很多知識,但是沒有獨立思考的意識,在學習過程中一定要學會自己設問、自己解答,這樣的曆程可以促進自己成長。第三點是掌握方法,總有一種方法可以幫助你加快學習速度,其中最經濟的方法就是“由點及面,由淺入深”,抓住遇到的任何一個問題,深究到源碼層,這樣由知識點到線再到面連在一起。第四點是養成習慣,對于DBA而言,嚴謹是非常重要的,任何一個疏忽都可能導緻災難。第五點是實踐修正,最有助于個人成長的是高壓環境,通過實踐來驗證知識體系。最後一點就是臻于至善,走過千山萬水,最後得以“見微知著,大道至簡”,可以輕而易舉地解決困擾别人已久的問題。

雲栖PPT下載下傳 | 開源界大咖集展現身,開源資料庫專場重點再回眸!

總結了一個學習公式:興趣+勤奮+堅持+方法≈成功。首先是興趣,興趣是最好的老師,除了癡迷于技術的人,大部分人在深入學習時都會感到枯燥。是以在學習時,最好的方式是找到興趣,然後培養、呵護興趣,遇到挫折、打擊時不要放棄。其次是勤奮,所有做出卓越成績的人都是勤奮的。第三點就是堅持不懈,不要頻繁地調整方向。第四點就是找到适合的方法。有了這些條件就約等于成功,即使不一定真正能夠做到世人看到的成功,但可以無愧于心。

在這個時代,學習的速度慢就是退步。如今的資料庫世界可以說是百花齊放,目前全世界有超過400種資料庫,可以分為關系型和非關系型,還可以分為操作型和分析型,這樣一橫一縱可以分為四大類,而進而可以細分成小類。今天,國産資料庫也正在崛起,這是資料庫人最好的時代。

認識時間

運用方法來加速學習,首先要從時間開始。其實在研究資料庫時,最重要的一件事情就是考慮資料庫如何計算時間。資料庫的任何時間都需要度量,而在分布式環境裡面更需要關注時間。資料庫中通常四種計時方式,邏輯的、實體的、混合的,還有全局統一時鐘TSO。資料庫需要計時的原因有很多,如事務需要排序,MVCC需要靠時間控制等,是以時間必不可少。

Oracle資料庫是怎麼計時的呢?其實Oracle資料庫依靠SMON_SCN_TIME表計時,絕大多數Oracle修複完啟動時都會出現相關錯誤。Oracle建立了實體時間和Unix Time的對照表,是以在資料庫出故障的時候,這張表大機率會發生不一緻。再進一步,資料庫如何和作業系統打交道的呢?通過跟蹤Oracle程序就會發現,它會通過gettimeofday來擷取時間。

MySQL又是怎麼計時的呢?MySQL提供了很多函數來轉換Unix Time。如果大家關注MySQL Binlog,就會發現MySQL的日志裡面有大量Timestamp,這些就是Unix Time,這是因為MySQL在下面引用了now函數。MySQL是開源的,是以想要了解差異隻需要打開源碼就可以,是以從Oracle轉向MySQL是很容易的。MySQL使用位元組存儲Timestamp,而Oracle則是将SCN作為資料庫内部時鐘。

在PostgreSQL裡面,Unix Time無處不在。有趣的是在PostgreSQL文檔中寫道它所有的時間計算都是使用儒略曆法計算的,這個曆法從公元前4713年開始計時,理論上可以計算到未來任何一天。

大道至簡

接觸新技術時,心理恐懼是最大的障礙。當你克服了心理恐懼就勝利了。雲和恩墨最早研究了資料庫是怎麼初始化和啟動起來的,于是就跟蹤它,最後發現Oracle是通過初始化表的引導啟動起來的。這張表指向了block file 377,後續再深入探索讀取的檔案位址。但是其實在最開始的時候就能夠看出讀取的檔案位址,這說明如果我們能夠跳出思維慣性并戰勝心理恐懼,就能夠戰勝困難。

理想中的深入淺出是一種經曆千難萬險、峰回路轉之後,看山還是山的平淡。有時候能感受到會心之意是非常難能寶貴的,運用之妙,存乎一心。我們應該花力氣去積累、深入、思考,然後才能舉重若輕。

PPT下載下傳

開源資料庫在平安的應用實踐

[傳統資料庫到開源資料庫遷移工具化流程

](

https://yq.aliyun.com/attachment/download/?spm=a2c6h.12873639.0.0.6dc31300LyR0Us&id=7075)