SQL Server 2016帶來了擴(kuò)展數(shù)據(jù)庫到Azure、Hadoop查詢、內(nèi)置的R分析、更好的安全性和更高的性能。
微軟公司將SQL Server 2016稱為SQL Server數(shù)據(jù)庫27年發(fā)展演變史上“最大的飛躍”。正如我們將看到的,盡管圍繞著SQL Server 2016數(shù)據(jù)庫存在著過度的炒作,但其也的確為廣大的企業(yè)組織機(jī)構(gòu)提供了許多相當(dāng)吸引人的新功能,包括內(nèi)置的R分析、外部的Hadoop查詢、Azure數(shù)據(jù)存儲(chǔ)以及強(qiáng)大的管理和數(shù)據(jù)安全功能。
此外,SQL Server 2016提高了內(nèi)存聯(lián)機(jī)事務(wù)處理(OLTP)引擎、內(nèi)存列存儲(chǔ)(columnstore)、以及在SQL Server 2014中所推出的Azure云集成。其還為現(xiàn)有的SQL Server安裝提供了一個(gè)合理的階梯式升級(jí)。但所有上述的這些改進(jìn),以及微軟對(duì)于目前Oracle的數(shù)據(jù)庫用戶所提供的免費(fèi)的數(shù)據(jù)庫許可證授權(quán)是否足以吸引這些用戶遷移到SQL Server,則完全是另外一個(gè)問題。
在我開始詳細(xì)介紹其新的和改進(jìn)的功能之前,我應(yīng)該介紹一下能夠讓您自己入手親歷親為的部署SQL Server 2016的一些好的方法:下載并安裝一款免費(fèi)的開發(fā)人員或評(píng)估副本,或啟動(dòng)一款預(yù)配置的Azure虛擬機(jī),并嘗試各種不同的TechNet虛擬實(shí)驗(yàn)室。
安裝和升級(jí)
在本地安裝SQL Server 2016需要進(jìn)行一些規(guī)劃,連同適當(dāng)?shù)馗耊indows 8、Windows 10或Windows Server 2012。即使是一款完全的當(dāng)前版本的Windows 10,也需要在SQL Server 2016的安裝之前進(jìn)行一個(gè)Visual Studio運(yùn)行時(shí)更新安裝,而如果您想要使用 PolyBase(在Hadoop或Azure Blob存儲(chǔ)中運(yùn)行數(shù)據(jù)查詢),您必須同時(shí)安裝Oracle的Java 7或更高版本。而一款Linux版本的SQL Server 2016已經(jīng)公布,且紅帽和Canonical公司都已經(jīng)承諾支持,Linux版本仍然還處于私下預(yù)覽。
SQL Server 2016的安裝設(shè)置與以前版本的安裝是非常類似的。其有一些額外的配置步驟和選項(xiàng)——例如,設(shè)置微軟R和PolyBase查詢服務(wù),這是新的功能特點(diǎn)。
SQL Server 2016的主要客戶將是那些已經(jīng)運(yùn)行了SQL Server 2014,并想要升級(jí)他們的生產(chǎn)數(shù)據(jù)庫,以便能夠充分利用新的功能以及改進(jìn)的性能,安全性,可擴(kuò)展性等等的企業(yè)組織機(jī)構(gòu)。如果您所在的企業(yè)組織便是這類客戶的其中之一,那么,我們建議您可以分階段的安裝SQL Server 2016,從一個(gè)大概的測(cè)試或開發(fā)初步的數(shù)據(jù)庫開始。微軟的建議是從數(shù)據(jù)庫兼容級(jí)別不變開始,然后將其兼容級(jí)別提高到130,并測(cè)試您的生產(chǎn)查詢。如果您需要修復(fù)回歸(Regression),您可以在您這樣做時(shí)暫時(shí)降低兼容級(jí)別;而當(dāng)您無需回歸,并可以在130的兼容級(jí)別運(yùn)行時(shí),您應(yīng)該可以看到改進(jìn)的查詢優(yōu)化,并行查詢計(jì)劃,更積極的自動(dòng)統(tǒng)計(jì)更新,和其他方面的性能提升。
性能的改進(jìn)
微軟公司為SQL Server 2016的性能提升進(jìn)行了重大聲明。在一個(gè)較高的水平,該公司宣稱其兩款擁有44個(gè)內(nèi)核的TPC-E(OLTP)價(jià)格/性能獲得了相當(dāng)高的評(píng)分,一款具有富士通服務(wù)器,另一款帶有聯(lián)想服務(wù)器。此外,他們聲稱其擁有30TB和1TB數(shù)據(jù)庫規(guī)模大小的TPC-H(分析)在性能和價(jià)格/性能方面獲得相當(dāng)高的評(píng)分。
而標(biāo)準(zhǔn)化的TPC基準(zhǔn)是隨著“標(biāo)桿營銷(Bench Marketing)”的一項(xiàng)改進(jìn),其在被正式推出之前,已經(jīng)被數(shù)據(jù)庫業(yè)界廣泛應(yīng)用,但仍然受到供應(yīng)商們博奕的牽制。TPC-E在其指定的“pseudo-SQL”中,而不是明確的SQL語句是相當(dāng)離奇的,并且從各種不同版本的Microsoft SQL Server獲得唯一的列出結(jié)果。
TPC-H展示了更多種類的供應(yīng)商;而從實(shí)際的TPC-H列表的觀察中,我所不理解的是微軟如何能夠聲稱其在30TB和1TB的類別所獲得的成功,當(dāng)SQL Server 2016已經(jīng)完全被群集的EXACluster OS 5.0在這兩種情況下所擾亂。也許微軟意在限制其對(duì)于非聚合(nonclustered)結(jié)果的聲稱,但卻忘了說了。
所以,讓我印象平平的是對(duì)于TPC結(jié)果的引用。微軟為SQL Server 2016較之SQL Server 2014在特定的情況下的使用做出了額外的加速聲明;這其中的一些都是很專業(yè)的,如“19倍更快的空間原生功能,”而其他的聲明則更一般,如“Tableau工具190%更快的查詢。”無論SQL Server 2016是否能夠在Tableau查詢方面超越亞馬遜Aurora,都不是微軟目前所自愿回答的問題。
對(duì)于SQL Server 2014的客戶而言,重要的性能問題是在于探索他們自己的數(shù)據(jù)庫負(fù)載是否能夠在SQL Server 2016上運(yùn)行得更快或更好的實(shí)現(xiàn)規(guī)模化。微軟的測(cè)量和基準(zhǔn)可能是富于暗示的,但他們最終與您企業(yè)自己的數(shù)據(jù)庫如何執(zhí)行則不太相關(guān)。
另一個(gè)潛在的提升性能和改進(jìn)可擴(kuò)展性的領(lǐng)域是增加內(nèi)存(12TB)及SQL Server 2016可用的運(yùn)行在Windows Server 2016上的內(nèi)核的數(shù)量。這對(duì)于內(nèi)存OLTP和內(nèi)存中的運(yùn)行分析肯定是相當(dāng)重要的,但其同時(shí)也需要更大的服務(wù)器開銷:將需要更多的內(nèi)存、更多的內(nèi)核和SQL Server 2016許可證包。
除了最大化的增加內(nèi)存,自從該公司推出其SQL Server 2014以來,內(nèi)存OLTP就已經(jīng)獲得了改進(jìn)。微軟表示,其擁有一個(gè)重寫引擎,無阻塞的并發(fā)控制(nonblocking concurrency control),為本地代碼編寫T-SQL。微軟聲稱,他們?yōu)榇疟P上的聯(lián)機(jī)事務(wù)處理帶來了高達(dá)30倍的性能提高。
在SQL Server 2014中推出的內(nèi)存OLTP,已經(jīng)通過一個(gè)新的引擎得到了加強(qiáng),并能夠?yàn)楸镜卮a編譯T-SQL。
時(shí)態(tài)表和查詢存儲(chǔ)
大多數(shù)數(shù)據(jù)庫都有兩個(gè)數(shù)據(jù)存儲(chǔ):數(shù)據(jù)庫和事務(wù)日志。使用事務(wù)日志將數(shù)據(jù)庫回溯到歷史上的某個(gè)點(diǎn)是一個(gè)考驗(yàn)?zāi)托牡膰L試。
SQL Server 2016推出了在數(shù)據(jù)庫中的暫存歷史。其能夠自動(dòng)跟蹤數(shù)據(jù)變化的歷史,并使得歷史數(shù)據(jù)狀態(tài)能夠方便地查詢?;旧希@通過為舊的數(shù)據(jù)增加了歷史表格,實(shí)現(xiàn)了一款A(yù)NSI 2011設(shè)施的部署,一個(gè)時(shí)間段的數(shù)據(jù)表格,和為系統(tǒng)時(shí)間條款選擇statement操作的語法。
查詢存儲(chǔ)保持對(duì)查詢文本的跟蹤(加上所有相關(guān)的屬性),存儲(chǔ)所有的方案選擇及性能指標(biāo),并交叉進(jìn)行重啟、升級(jí)和重新編譯。一個(gè)查詢存儲(chǔ)允許您能夠輕松地查詢性能,比較查詢計(jì)劃,并根據(jù)過去的性能來強(qiáng)制實(shí)施計(jì)劃選擇。
安全性的改進(jìn)
數(shù)據(jù)安全比以往任何時(shí)候都更為重要。我甚至無需提到HIPAA和PCI-DSS規(guī)定和相關(guān)的罰款。畢竟,去年美國人事管理辦公室的政府雇員個(gè)人數(shù)據(jù)信息泄露事件和知名的婚外情網(wǎng)站AshleyMadison被黑客攻擊并導(dǎo)致資料外泄事件已經(jīng)廣為人知了。
在SQL Server 2016中的最大的安全方面的改進(jìn)被稱為始終加密。這是相當(dāng)聰明的措施:數(shù)據(jù)庫中的敏感數(shù)據(jù)在列級(jí)加密,而未加密的數(shù)據(jù)在信任邊界之外是永遠(yuǎn)看不到的。
上圖勾勒出了由SQL Server 2016為“始終處于加密狀態(tài)”的數(shù)據(jù)提供安全保障的一種方式。請(qǐng)注意,個(gè)人身份SSN從不發(fā)送到信任邊界之外。
SQL Server 2016有兩種加密實(shí)現(xiàn)方式:隨機(jī)的和確定的。隨機(jī)形 式更為安全,但確定形式的加密允許在位置、區(qū)別和群組條款和聯(lián)接進(jìn)行同等比較。隨機(jī)和確定這兩種加密方式都允許透明檢索。
SQL Server 2016的另一大重要的安全功能是動(dòng)態(tài)數(shù)據(jù)屏蔽。這在查詢時(shí)通過將他們與非特權(quán)用戶進(jìn)行混淆,來保護(hù)敏感列。假設(shè),員工的社會(huì)安全號(hào)碼表格已經(jīng)被屏蔽:
ALTER TABLE [Employee] ALTER COLUMN [SocialSecurityNumber]ADD MASKED WITH (FUNCTION = ‘SSN()’)
那么,任何沒有被授予訪問特權(quán)的用戶都將只能從查詢返回的社會(huì)安全號(hào)碼中看到一部分,例如:123-45-6789將以XXX-XX-XX89返回。
動(dòng)態(tài)數(shù)據(jù)屏蔽適用于列。而在某些情況下,對(duì)于行級(jí)安全(RLS)又有一個(gè)額外的需要,例如對(duì)于醫(yī)務(wù)人員如何對(duì)患者進(jìn)行治療數(shù)據(jù)的限制,或者在一個(gè)多租戶數(shù)據(jù)庫,當(dāng)前租客對(duì)于屬于自己的記錄的行的可視化的限制。RLS是通過使用過濾斷定,調(diào)用內(nèi)聯(lián)表值函數(shù)部署實(shí)現(xiàn)的。內(nèi)聯(lián)函數(shù)被進(jìn)行了優(yōu)化,使他們有與之相媲美的性能。
運(yùn)營分析
傳統(tǒng)上,OLTP數(shù)據(jù)庫服務(wù)器和分析數(shù)據(jù)庫服務(wù)器是單獨(dú)分開的,而一款ETL進(jìn)程則周期性的從OLTP服務(wù)器提取新數(shù)據(jù)以便在分析服務(wù)器上更新OLAP cubes。這是相當(dāng)昂貴的;其也推出了數(shù)據(jù)延遲,有太多的移動(dòng)部件以帶來高可靠性。
在SQL Server 2016中的新的實(shí)時(shí)運(yùn)營分析模式使用現(xiàn)場(chǎng)非聚集列存儲(chǔ)索引,直接從OLTP數(shù)據(jù)庫更新。最近的“尾”巴行進(jìn)入到一個(gè)內(nèi)存OLTP表,以便他們可以無需開銷任何列存儲(chǔ)索引費(fèi)用而被查詢。一個(gè)后臺(tái)進(jìn)程任務(wù)從尾部在100萬行塊遷移行到列存儲(chǔ)。微軟建議將列存儲(chǔ)分析與群組可用性相結(jié)合,以實(shí)現(xiàn)最好的性能分析和規(guī)模化縮放。
內(nèi)置R服務(wù)
R編程語言連同Python是數(shù)據(jù)科學(xué)家們的最愛。當(dāng)運(yùn)行R程序時(shí)所遇到的一個(gè)主要問題是,大型數(shù)據(jù)集的回歸需要把數(shù)據(jù)帶給R服務(wù)器或工作站。通常情況下,數(shù)據(jù)科學(xué)家們會(huì)通過將一個(gè)小的隨機(jī)樣本數(shù)據(jù)拉到R服務(wù)器以進(jìn)行開發(fā)和測(cè)試,來繞過這個(gè)問題,而他們只運(yùn)行了R腳本,而不是運(yùn)行完整的數(shù)據(jù)作為最后一步。
在SQL Server 2016中,高性能并行R服務(wù)內(nèi)置到數(shù)據(jù)庫中,可以與T-SQL結(jié)構(gòu)相互作用,基本上是把分析帶給數(shù)據(jù),而不是將數(shù)據(jù)帶給分析。這不僅快得多,而且也更具可擴(kuò)展性和更少的內(nèi)存密集型。其有足夠的快,使得數(shù)據(jù)科學(xué)家們可以在數(shù)據(jù)庫中開發(fā)和測(cè)試他們的R腳本。微軟還提供了一個(gè)獨(dú)立的R服務(wù)器。
混合云與大數(shù)據(jù)
微軟喜歡談?wù)?ldquo;超大規(guī)模”的功能特點(diǎn)在Azure云中與SQL Server 2016的結(jié)合。這些功能特點(diǎn)中最棒的是數(shù)據(jù)庫的擴(kuò)展?;旧?,您企業(yè)可以在內(nèi)部部署的數(shù)據(jù)庫實(shí)例和一款A(yù)zure SQL數(shù)據(jù)庫之間通過開啟“遠(yuǎn)程數(shù)據(jù)存檔”功能以創(chuàng)建一個(gè)鏈接,在SQL Server為您提供Azure管理員憑據(jù),并且改變您想要的遠(yuǎn)程數(shù)據(jù)歸檔的數(shù)據(jù)庫的名字。
然后,為了控制遷移,您可以選擇定義一款功能或一組功能來定義數(shù)據(jù)中的哪一部分將被擴(kuò)展(例如,在一個(gè)訂單表中完成的訂單)。最后,您可以為想要擴(kuò)展的表打開遠(yuǎn)程數(shù)據(jù)歸檔遷移狀態(tài)。
其他超大規(guī)模的功能包括高可用性,數(shù)據(jù)庫副本,以及增強(qiáng)備份到Azure上。您也可以將企業(yè)內(nèi)部部署的SQL Server實(shí)例完全自動(dòng)的遷移到SQL Azure上。
PolyBase是微軟在在SQL Server 2016中對(duì)于一款統(tǒng)一視圖的關(guān)系數(shù)據(jù)和HDFS (Hadoop)中的半結(jié)構(gòu)化的數(shù)據(jù)或Azure的Blob存儲(chǔ)的術(shù)語。PolyBase集群通過頭節(jié)點(diǎn)和多個(gè)計(jì)算節(jié)點(diǎn)以大致相同的方式向外擴(kuò)展,Hadoop集群通過一個(gè)名稱節(jié)點(diǎn)和多個(gè)數(shù)據(jù)節(jié)點(diǎn)向外擴(kuò)展。 PolyBase目前支持的Cloudera、Hortonworks數(shù)據(jù)平臺(tái)和HDInsight。
如果您企業(yè)需要龐大的規(guī)模,您可以在云中或企業(yè)內(nèi)部部署環(huán)境配置一款A(yù)zure SQL數(shù)據(jù)倉庫或Azure數(shù)據(jù)湖,在企業(yè)內(nèi)部部署環(huán)境安裝一款微軟分析平臺(tái)系統(tǒng)設(shè)備。事實(shí)上,您可以把所有的這一切變成一個(gè)混合的解決方案。微軟聲稱,該系統(tǒng)將能夠擴(kuò)展到多個(gè)數(shù)據(jù)字節(jié),所您所在的公司是否需要任何的SQL Server 2016的新功能呢?如果您的企業(yè)正在運(yùn)行SQL Server的舊版本,也很容易通過建立一個(gè)測(cè)試實(shí)例來測(cè)試兼容性和其所能帶來的實(shí)實(shí)在在的好處,無論是在本地還是在Azure云中,通過您企業(yè)的數(shù)據(jù)庫加載,并測(cè)試您的應(yīng)用程序。在已經(jīng)經(jīng)歷過這一切后,您要么知道不值得升級(jí),要么知道您企業(yè)有一個(gè)很好的理由進(jìn)行升級(jí)了。
與此同時(shí),如果您企業(yè)正在運(yùn)行Oracle的數(shù)據(jù)庫,微軟公司也愿意給您企業(yè)SQL Server 2016的許可證,以方便您企業(yè)的遷移,并為您提供對(duì)于該公司遷移工具的訪問權(quán)限。在我最后一次查看該進(jìn)程過程時(shí),微軟已經(jīng)實(shí)現(xiàn)了大約90%的Oracle到SQL Server遷移的自動(dòng)化,還提供了很好的手動(dòng)步驟文檔介紹。然而,這仍然是一項(xiàng)艱巨的任務(wù),尤其是如果您企業(yè)的應(yīng)用程序大量使用了甲骨文的特定功能的話。然而,如果Oracle到SQL Server的遷移已經(jīng)是您企業(yè)的路線發(fā)展規(guī)劃的一部分,那么這將可能是一個(gè)來進(jìn)行過渡的很好的時(shí)間。
關(guān)于作者
本文作者馬丁·海勒是InfoWorld網(wǎng)站的特約編輯和審稿人。此前曾是一名Web和Windows程序設(shè)計(jì)顧問,他于1986年到2010年,曾經(jīng)在位于馬薩諸塞州安杜佛的辦公室負(fù)責(zé)開發(fā)過數(shù)據(jù)庫,軟件和網(wǎng)站。最近,他曾擔(dān)任過Alpha Software公司的技術(shù)和教育的副總裁,以及Tubifi的董事長兼CEO。