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