
譯者注:你是否平時(shí)的工作是用的是Linux操作系統(tǒng),但公司的重要項(xiàng)目使用的是SQL Server,你曾經(jīng)是否因此而鯤熬過(guò)?現(xiàn)在告訴你個(gè)好消息,微軟已經(jīng)在2017版本中,將SQL Server數(shù)據(jù)庫(kù)引入到了Linux等開(kāi)源系統(tǒng)中去了,作者在本文詳細(xì)介紹了這其中的過(guò)程。以下為譯文:
早在2016年,當(dāng)微軟宣布SQL Server將很快在Linux上運(yùn)行時(shí),這一消息對(duì)用戶(hù)和權(quán)威人士來(lái)說(shuō)都是一個(gè)巨大的驚喜。在過(guò)去的一年中,微軟對(duì)Linux(總之就是開(kāi)源的操作系統(tǒng))的支持已經(jīng)十分重視,公司的使命似乎已經(jīng)變成了只要哪里有用戶(hù),哪里就必須得有SQL Server工具。
微軟今天發(fā)布了SQL Server 2017的第一個(gè)候選版本,這將是第一個(gè)在Windows、Linux和Docker容器上運(yùn)行的版本。僅Docker容器就已經(jīng)吸引了超過(guò)100萬(wàn)的申請(qǐng),因此毫無(wú)疑問(wèn),會(huì)有很多人對(duì)這款新版本非常感興趣。盡管新版本有很多需要改進(jìn)的地方,但SQL Server 2017支持Linux仍然是這個(gè)版本最重要的突破。
在今天發(fā)表聲明之前,我與微軟的數(shù)據(jù)庫(kù)系統(tǒng)組的總經(jīng)理羅漢·庫(kù)馬爾進(jìn)行了交談,了解了這個(gè)項(xiàng)目的歷史,以及他的團(tuán)隊(duì)如何成功地將SQL Server這么復(fù)雜的軟件給引入到Linux中去的。在微軟工作了18年的庫(kù)馬爾指出,他的團(tuán)隊(duì)注意到許多企業(yè)開(kāi)始使用SQL Server作為z重要任務(wù)的工作負(fù)載。但與此同時(shí),這些企業(yè)的工作環(huán)境也是組合的,包括Windows Server和Linux。對(duì)于許多這樣的企業(yè)來(lái)說(shuō),無(wú)法在Linux上運(yùn)行他們的數(shù)據(jù)庫(kù)成為了一個(gè)瓶頸。
“經(jīng)過(guò)企業(yè)的談話(huà),很明顯,我們覺(jué)得這么做是必要的,”庫(kù)馬爾說(shuō),“我們正在強(qiáng)制客戶(hù)使用Windows作為他們選擇的平臺(tái)。”在微軟的另一個(gè)化身中,這可能會(huì)被視為積極的東西,但該公司今天的戰(zhàn)略卻大不相同。
庫(kù)馬爾還指出,許多企業(yè)都在尋找Oracle數(shù)據(jù)庫(kù)產(chǎn)品的替代品。畢竟如果想要運(yùn)行Linux,并使用具有完全企業(yè)支持的專(zhuān)有關(guān)系型數(shù)據(jù)庫(kù),那么你可能就不得不選擇Oracle了。
正如庫(kù)馬爾告訴我的,這并不是他的團(tuán)隊(duì)第一次希望可以支持Linux。他告訴我:“過(guò)去我們?cè)M(jìn)行過(guò)幾次討論,但沒(méi)有得到批準(zhǔn)。”他說(shuō):“對(duì)于企業(yè)來(lái)說(shuō),這并不是一種戰(zhàn)略”。但這已經(jīng)是三年前的觀點(diǎn)了-現(xiàn)在隨著薩提亞·納德拉成為了微軟的掌舵人,這個(gè)團(tuán)隊(duì)決定再次提出這個(gè)想法。“我們反反復(fù)復(fù)的查看反饋消息,”他說(shuō):“看到這些決定的速度有多快,真讓人感到驚訝。”
位于雷德蒙德一家越南餐館的照片前,團(tuán)隊(duì)最后決定繼續(xù)推進(jìn)這個(gè)項(xiàng)目。但是,在做出這個(gè)決定之后,這個(gè)團(tuán)隊(duì)現(xiàn)在面臨著一項(xiàng)艱巨的任務(wù):如何將數(shù)千萬(wàn)條SQL Server代碼移植到Linux上?庫(kù)馬爾也不想在功能上做出任何妥協(xié),因此要么必須是SQL Server的全部核心,要么就是什么都不做(目前,這排除了公司在Windows上提供的圖形用戶(hù)界面和工具)。

該團(tuán)隊(duì)在一個(gè)已經(jīng)存在于微軟的項(xiàng)目中找到了答案:Drawbridge。Drawbridge是一個(gè)在2011年啟動(dòng)的研究項(xiàng)目,它提供了一個(gè)容器,它提供了一個(gè)小的API表面和一個(gè)基礎(chǔ)版本的Windows,可以有效地在容器中運(yùn)行應(yīng)用程序。這里的想法基本上是建立更好更安全的虛擬機(jī)。然后,庫(kù)操作系統(tǒng)執(zhí)行應(yīng)用程序,處理內(nèi)存管理和其他重要功能,并與底層操作系統(tǒng)集成。
大約兩年前,SQL Server團(tuán)隊(duì)決定將其作為L(zhǎng)inux工作的核心。“領(lǐng)導(dǎo)層表現(xiàn)出了適量的關(guān)心,”庫(kù)馬爾評(píng)論道,“我的猜測(cè)是,鑒于Drawbridge是一個(gè)實(shí)驗(yàn)性的項(xiàng)目,人們確實(shí)對(duì)此感到擔(dān)憂(yōu)。”但是SQL Server團(tuán)隊(duì)接管了Drawbridge代碼庫(kù),并將其添加到SQL操作系統(tǒng)層中。
在許多方面,這個(gè)操作系統(tǒng)層是使這個(gè)項(xiàng)目成為可能的原因。由于SQL Server的需求總是超出了Windows和Windows服務(wù)器所能提供的,尤其是在內(nèi)存管理方面,團(tuán)隊(duì)已經(jīng)將許多標(biāo)準(zhǔn)OS特性構(gòu)建到SQL Server的OS層中。因此,在Drawbridge中,SQL Server也可以管理自己的內(nèi)存。這方面的工作非常成功,團(tuán)隊(duì)不僅在Linux上構(gòu)建了SQL Server,還將SQL操作系統(tǒng)和它在Drawbridge上所做的工作合并到新的SQL平臺(tái)抽象層上,這一層現(xiàn)在在Windows和Linux上運(yùn)行。
因此,SQL Server團(tuán)隊(duì)可以從一個(gè)單獨(dú)的代碼庫(kù)工作,并且不必?fù)?dān)心代碼的運(yùn)行位置(這包括Microsoft的Azure平臺(tái))。
Linux的SQL Server應(yīng)該在今年晚些時(shí)候就可以正式運(yùn)行了。即使在今天,一些公司已經(jīng)在生產(chǎn)環(huán)境中使用了它,而Linux版本的運(yùn)行速度和Windows版本一樣快(假設(shè)硬件一樣)。
除了最終將版本發(fā)布出來(lái)外,庫(kù)馬爾指出,團(tuán)隊(duì)將密切關(guān)注下一步該做什么。盡管數(shù)據(jù)庫(kù)領(lǐng)域的創(chuàng)新仍在繼續(xù)加速,但并不是所有的微軟客戶(hù)都希望他們的任數(shù)據(jù)庫(kù)版本可以做到每年(甚至更快)更新一次。不過(guò),鑒于我們最近看到SQL Server 2016和2017年發(fā)布的SQL Server版本,我對(duì)SQL Server 2018預(yù)覽版的發(fā)布將充滿(mǎn)信息。
以上就是腳本之家分享給大家關(guān)于Windows是如何把SQL Server遷移到Linux上的全部?jī)?nèi)容,希望對(duì)大家有所幫助。