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