Q:作為數據庫行業(yè)的“老司機”,您能否先介紹一下自己?

Danny:我叫Danny,是巨杉數據庫核心研發(fā)團隊的成員,是一名數據庫資深工程師和架構師,有超過20年的數據庫核心研發(fā)經驗,曾經作為DB2 內核研發(fā)團隊成員參與了DB2 ,DPF等產品的架構設計和研發(fā)工作。

目前,我們北美研發(fā)實驗室的團隊已經有很多數據庫的專家“老司機”加入,全部來自DB2 的核心技術團隊。

雖然我們團隊很多都是來自IBM、華為的“傳統(tǒng)企業(yè)級IT人”,不太喜歡拋頭露面。但是現在是技術圈一個變革的新時代,我們的產品已經開源了,所以我們之后也會讓我們團隊的技術大牛們多多參與社區(qū)活動,分享一下我們做數據庫核心研發(fā)的心得,同時也和大家一起進步。

Q:作為“老IBM”,您認為像IBM這樣歷史悠久的IT企業(yè),他們的核心研發(fā)團隊是怎么樣的呢?您對此感受最深的是什么?

Danny:IBM是最早提出“關系型數據庫”這一概念和理論體系的公司,從技術上看,傳統(tǒng)三大關系型數據庫在發(fā)展過程中,其實已經具有很深遠的技術儲備了。DB2是三大傳統(tǒng)關系型數據庫中唯一的分布式產品,因此我們團隊在分布式技術方面的積累是一脈相承的。

我在DB2的十幾年里,感受最深的就是技術底蘊和沉淀。

比如說,在Unix真正支持線程機制之前,針對多線程模型,甚至是針對不同的硬件設備,他們早已使用匯編語言實現了邏輯線程的切換和調用,這些機制在當時其實是相當領先的。

而說到研發(fā)團隊,IBM的實驗室也是臥虎藏龍。從最初使用匯編語言開始的技術專家們,一直在參與數據庫、操作系統(tǒng)和編譯器底層的研發(fā)工作,可以說正是他們創(chuàng)造了最早的關系型數據庫的概念,也是他們真正把數據庫打造成為一個通用的軟件平臺。

Q:像數據庫這樣的基礎軟件,技術上的難度是什么?

Danny:數據庫軟件,特別是一款真正企業(yè)級ready的產品,并沒有大家想象的,只是開發(fā)一款軟件那么簡單。

從技術上來說,數據庫既需要有技術基因的傳承,又需要創(chuàng)新。

數據庫技術到現在已經發(fā)展了40多年了。在技術的發(fā)展中,數據庫軟件/平臺已經成為一個功能復雜,架構龐大,安全要求很高的龐大軟件產品體系。因此,技術上既需要技術的積累,也需要新的創(chuàng)新。

同時,在應用端這邊,由于用戶都是銀行、政府等這些30年前就開始使用數據庫的老客戶,他們通常無法承擔全盤遷移的風險,因此在業(yè)務技術架構上,難免保留了各個時代的歷史遺留,比如說,北美一些銀行的核心IT系統(tǒng),直到目前仍然運行在40年前的技術平臺之上。這也要求企業(yè)級ready的數據庫基礎軟件需要有很強的兼容能力,不但可以保證舊業(yè)務的運行,還可以不斷地推陳出新。

這種創(chuàng)新是必須的,但在技術上卻又是最難的。

Q:以您近20年的數據庫行業(yè)經驗,您認為數據庫核心團隊應該是怎么樣的?

Danny:我認為數據庫核心研發(fā)團隊的基因很重要,就比如說IBM的DB2團隊,就是以多位數據庫領域的“老炮兒”為核心,搭配有技術實力的資深工程師。

就像我上面提到的技術復雜度和產品歷史跨度的問題,數據庫產品如果要在大型企業(yè)內使用,技術團隊必須要有傳統(tǒng)數據庫的開發(fā)經驗,這也就是技術老炮兒存在的作用。

簡單說,數據庫基礎軟件就是創(chuàng)新技術和技術經驗積累的融合體。

Q:海內外基礎軟件研發(fā)有什么不同?

Danny:相對來說,海外擁有技術人才的基礎,也有像IBM、Oracle這樣的體系的沿襲,培養(yǎng)出了一批批技術人才和團隊。所以現在北美很多新一代基礎軟件產品團隊其實還是圍繞了老一輩的“老司機”構建的。

而國內基礎軟件的人才積累還不夠,因此基礎軟件領域還沒有完全形成基礎軟件領域的武林門派,這也是近年來基礎軟件和AI領域國內企業(yè)瘋狂往外招人的原因。但是數據庫由于歷史原因,國內無論是互聯網還是科研團隊想要形成獨特的門派,還需要時間。

巨杉這邊我們的團隊擁有以王濤為代表的很多DB2 團隊的核心技術專家,以及來自華為的技術核心團隊成員,是技術基因和技術創(chuàng)新很好的結合。

Q:數據庫開發(fā)和其他軟件有什么不同?

Danny:因為剛才提到的這些特點,基礎軟件特別是數據庫的研發(fā),和其他應用軟件有很大的不同。其中最大的一個不同點就是開發(fā)語言和開發(fā)模式。

從計算機的發(fā)展來看,C是最面向機器語言(匯編代碼)的,原則上每一行C代碼都可以很精準地映射到一些匯編指令上,因此從對操作系統(tǒng)底層的操控來看最為精準。

而C++則是在C之上發(fā)展起來的面向對象語言。在底層編程中,C++的高級特性被使用的非常少,但是其設計模式對于模塊化開發(fā)很有幫助。因此使用C++既可以兼顧對操作系統(tǒng)底層最精準的把控,也可以將一些面向對象的理念融入代碼中,在復雜系統(tǒng)構建時起到重要作用。

而如今新的一些新型開發(fā)語言則不是面向對象,因此在設計模式上不適合大型復雜系統(tǒng)的開發(fā)。同時,這些語言語言簡化了很多C/C++里最為重要的指針概念,使其對內存的精準操作變得不可能完成。指針這個概念用好了是神器,用差了是垃圾,大部分能力不高的程序員,或者沒有非常完善測試框架的項目很難完美把握指針這類高級特性,使得大型項目開發(fā)里面內存泄露和崩潰漏洞遍地都是。

但是對于我們巨杉來說,有著DB2數據庫內核的研發(fā)經驗,從人員能力,到代碼質量管理,到測試框架的完善都能夠完美駕馭這類高級特性,最大程度挖掘出操作系統(tǒng)和數據庫底層的性能與處理能力。

Q:分布式數據庫方向是什么?

Danny:根據Gartner和我們CTO王濤的共同觀點,真正特別大使得傳統(tǒng)關系型數據庫存不下的表相對來講數量都是可控的。因此有很多workaround都可以搞定這個問題,這也是為什么傳統(tǒng)以來大家用分庫分表雖然麻煩,但也不是解決不了應用問題。

數據庫其實真正面臨的痛點是“微服務”下,數據服務的資源池化。

應用程序從傳統(tǒng)煙囪式構建,向微服務轉型的過程中,在每一個微服務上都放一個獨立的數據庫已經是不可能的事情了。這種情況下,數據服務資源池需要直接面向上層成百上千個,來自不同開發(fā)商、不同團隊的,開發(fā)能力不一、應用類型不同、SLA安全級別不同等等的各類需求。

因此,資源池必須擁有彈性擴張、資源隔離、多租戶、可配置一致性、多模式(支持各類SQL協議)、集群內可配置容災策略等一系列功能,同時每個數據庫實例的計算和存儲能力需要做到能夠無限擴張,畢竟有些微服務可能會涉及到極多的流水數據,不能限定每個數據庫實例使用的資源僅局限于一臺物理設備。

所以說,單純?yōu)榱朔植际降腛LTP只是解決了不構成剛需的問題(分庫分表早可以解決),但是在微服務應用開發(fā)的環(huán)境下,數據庫更是要從資源池化的角度對上層提供服務,同時資源池中的每個數據庫實例內部也要支持分布式交易等一系列特性,做到與傳統(tǒng)數據庫的全兼容。

Q:SequoiaDB自從發(fā)布3.0版本以來,在社區(qū)和市場得到的反饋都很好,能否透露一下產品的一些新動向?

Danny:近期,我們會發(fā)布一個新的版本,其中OLTP場景選性能會有大的提升,同時對于SQL處理能力也會有很大提升。在分布式的交易型業(yè)務下,整體性能提升將比現在版本有2~3倍的提升,對比同類產品性能將高出5~6倍以上。。

當然本周的活動我們也會做一個簡單的分享。

3月30號,本周六的上午,我們巨杉Techday的第二期活動也會在北京中關村機械騎士咖啡書店舉辦,我們也會帶來一些深度的技術分享,屆時也會有現場的視頻直播,希望大家也能多多關注和參與!未來我們也會有更多“神秘”的數據庫“老司機”給大家?guī)砑夹g、趨勢、見聞的分享~

分享到

zhupb

相關推薦