看完SQL Server 2014 Q/A答疑集錦:想不升級都難!
轉載自:http://mp.weixin.qq.com/s/5rZCgnMKmJqeC7hbe4CZ_g
本期嘉賓為微軟技術中心技術架構師韓凱(社區ID:Chris_Han0015),主要負責大數據和云計算領域。在美國取得系統工程碩士學位后,服務于華爾街主要銀行與金融機構。從事流程再造與創新與商務智能方案設計實施。
IT名人堂欄目對微軟技術中心技術架構師韓凱進行了獨家訪談,揭秘了SQL Server 2014不可不知的那些事兒。訪談期間,網友們針對自己的困擾積極提問,專家坐鎮解答,給予了精辟實用的指導,沒準您也遇到過這些困惑哦!
Q1:現在還有用2008,沒有用過2012和2014,相對于2008來說,2014的優勢是什么,僅僅是增加了內在數據庫支持嗎?能直接兼容NoSQL嗎?
A:從SQL 2008到SQL 2014,中間還跨越了SQL Server 2008 R2,SQL Server 2012兩個版本,這中間的改變自然遠不止內存數據庫這一項功能,其實還有很多,比如說從大的方面,包括支持快速查詢和高壓縮比的列存儲索引技術,支持高可用性并實現讀寫分離的AlwaysOn技術,提供數據清理功能的數據質量服務,提供企業信息管理功能的主數據管理服務。最大的變化還包括SQL Server 2014極大的增強了對云的支持,幫助用戶輕松實現混合云方式的數據備份、災難恢復以及應用擴展。此外,SQL 2014相比于SQL 2008,在安全性、管理性、T-SQL增強、SSIS集成服務,SSAS分析服務以及SSRS報表服務方面均有很大的增強。你可以通過下載SQL 2014的評估版本(具備完整的SQL 2014功能)進行180天的免費試用,親自去感受SQL 2014的新功能吧!SQL 2014評估版本下載地址:http://www.microsoft.com/en-us/evalcenter/evaluate-sql-server-2014 。
NoSQL的概念主要是根據CAP定理定義的。從這一角度看,我個人認為SQL Server 2014作為定位于“關鍵任務”場景的數據平臺,是不會以犧牲全時一致性來提供互聯網應用級的可用性的。對于適合NoSQL的“有損服務”應用場景,微軟有如下PaaS服務可供選擇:
DocumentDB在國內尚未落地,現在可以通過IaaS級的服務使用MongoDB。另外對于Key-Value緩存微軟也開始在國外的Azure提供Redis服務。但那里的數據只在內存中,不具有持久性。我就不將它歸于“數據庫”范疇了。
Q2:印象中SQL Server一般是中小企業的數據庫,SQL Server 2014是否支持百TB、PB的OLAP數據庫?
A:SQL Server 2014 數據庫目前對OLAP的數據庫支持到TB級別,對于PB級別的需求,可采用微軟基于SQL Server的軟硬件一體機產品APS,可橫向擴展到6PB。SQL Server 經過15年的發展,到今天的SQL Server 2014版本,在性能、安全性、高可用性,可擴展性等多個方面的表現,還是已經完全能夠支撐大型企業的關鍵業務應用。
Q3:大數據的來臨,SQL SERVER 2014對于非結構化的數據類型,有沒有做哪些方面的查詢優化?
A:SQL Server 2014產品本身只提供對結構化數據的存儲,分析和處理。對于非結構化數據而言,微軟提供一個叫HDInsight的產品--微軟與Hortonworks合作的Hadoop。可以部署在一體機APS中或者使用在Azure公有云上提供的PaaS層服務。兩者都提供Hadoop中的建庫與查詢工具例如HBase和Hvie。對于熟悉SQL的開發者,APS中提供一項特別的技術叫做“Polybase”,它能夠實現通過統一的SQL語言實現對結構化數據和非結構化數據的聯合查詢。
Q4:SQL Server 2014支持的操作系統有哪些?是否只是基于microsoft實施?
A:目前只支持Windows的操作系統,安裝SQL Server 2014支持的軟硬件配置及版本可參考:
https://msdn.microsoft.com/zh-cn/library/ms143506.aspx
Q5:SQL Server老版本升級到新版本2014上,要注意哪些地方,升級后,與其他系統集成的外圍系統數據交互和接口的程序修改量大嗎?
A: 升級自然不是安裝一套SQL 2014版本的數據庫就算完事兒,成功的數據庫升級不僅要有技術層面的考慮,還要有方法論層面的考慮,所謂方法論,就是除了技術本身之外需要考慮的因素,包括升級的范圍設定,對業務影響的評估,升級前的評估和必要測試,升級時可能發生的宕機時間, 升級的方式是采用在新的軟硬件環境下構建一套新的系統,然后遷移數據庫(推薦方式),還是在原有版本上做版本升級,不移動數據庫。從技術層面,SQL Server 2014內置的升級向導以及一系列免費的系統評測工具幫助用戶完成升級。具體可參考:https://msdn.microsoft.com/zh-cn/library/dn236457.aspx ;
關于程序的修改量問題,取決于程序設計時與數據庫的耦合程度,需要具體問題具體分析。
Q6:在SQL SERVER 2014中,對性能優化方面有哪些新的功能?比如新增了哪些語法特性?
A:SQL Server 2014對性能優化最重要的新功能就是In-memory OLTP, 或者內存數據庫。SQL Server 2014的內存數據庫可以在表級操作。也就說說你可以在建/改表的時候,指定那些比較“熱”的表建在內存了,而將偶爾訪問的表留在存儲上以節約駐留內存。反映在DDL語法上,最主要的就是在CREATE TABLE語句中增加的兩個可選變量:
[MEMORY_OPTIMIZED = {ON | OFF}]
[DURABILITY = {SCHEMA_ONLY | SCHEMA_AND_DATA}]
前者指定這張新建表的數據是否在內存中操作;后者則指定如果該表為內存表,那其中的數據是否最終要固化到存儲中。有些場景,比如計算中間結果,只需要保留表結構以便重用即可,其中的數據每次計算完成就沒有保留價值了。
對于性能促進的另一重要特性是所謂原生編譯的存儲過程(Natively Compiled Stored Procedure)。與傳統的存儲過程相比,原生編譯的存儲過程在建立時就編譯成機器代碼了,而不是在第一次運行時。語法上和之前版本的CREATE PROC語句的主要區別就是增加一個WITH NATIVE_COMPILATION選項以及DELAYED_DURABILITY = { OFF | ON }選項。前者不言自明,后者由你決定是否以可能的數據丟失換取更快的寫操作速度。基本原理是后臺進程緩存transaction log,每集齊60KB才寫入存儲。SQL Server 2014 在性能提升方面還有許多重新設計的系統級功能。比如Clustered Columnstore Indexes、Lock Priorities、Buffer Pool Extensions、Resource Governor等。有興趣的讀者可以關注MSDN的相關文章。
Q7:SQL Server 2014的云端備份,想法很好,但是實際備份的時候,是否得考慮帶寬?內外網環境? 備份時是否影響生產? 增量備份還是全量備份?
如果是全量備份,是否需要停掉業務進行備份? 我考慮的比較現實,還請見諒。
A:我們談“數據庫備份”這個概念,通常講的是對于已經寫到數據庫不再發生變化的數據庫進行復制,相比于另外一個概念“數據庫同步”對帶寬和實時性沒有那么高的要求,對生產系統也不會產生任何影響。如果是采用“數據庫同步”的方式將本地數據庫復制副本到云端,則需要對帶寬、內外網環境進行詳細的評估,并且數據庫同步對生產系統的性能會有影響。
云端備份可執行全量或增量備份。SQL 2014全量和增量備份都支持。全量備份時,被備份的數據庫是要暫停服務的,所以最佳實踐是建立AlwaysOn同步,從復制節點上做備份。
Q8:關于異地云備份,微軟是如何保證數據的安全性,如何讓企業用戶放心的把數據交個云端,數據加密的方式是用戶可選,可控嗎?
A:你所說的數據安全看來主要是指防止意外訪問。微軟對數據安全的考量,還包括避免意外丟失。后者是通過冗余存儲實現的。具體說,是為客戶在數據在每個數據中心本地存三份。選擇異地災備服務的客戶可以再存三份,達到一共6份冗余。而前者,防止意外訪問,是需要一整套管理流程配合技術實現的。從管理策略上說,首要規則就是建立防御縱深、并且實施職能分離。SQL Server自2008就可以通過透明數據加密 (TDE)加密整個數據庫包括日志。但這種全面加密方式會相應增加CPU負擔,并且影響備份文件的壓縮率。SQL 2014增加了專用的備份加密功能。加密都是需要密鑰的。為了配合實現管理策略,微軟將實例級的服務主鑰(SMK)與庫級的數據庫主鑰 (DMK) 分開生成、并建議客戶授予不同級別的管理員。這些主鑰是通過AES 256 算法產生的。然后數據庫管理員可以用DMK和私鑰生成證書文件。有了這個證書,備份管理員就可以選擇以下任意一種加密算法生成加密的備份文件了:AES 128, AES 192, AES 256 或 Triple DES.
Q9:內存數據庫在企業中的適用場景?一般處理哪些業務比較合適?對此比較感興趣,能否舉例說明?
A:基本上高吞吐率的OLTP的場景都是合適的。在線數字化娛樂公司 bwin.party 提供的在線游戲與其他服務用戶數超過兩百萬。原本的游戲系統每秒只能處理大約 15,000 個請求,使用SQL 2014后每秒可以處理250,000 個請求,在硬件成本方面節約十萬美元,并實現了增收。詳情請參見Case Study: http://download.microsoft.com/download/A/B/8/AB8266E6-ABA9-461D-B29B-5079B066E6B8/SQL%20Server%202014%20Case%20Study-BWIN.pdf
Q10:對于新版本中的內存數據庫改善部分,能不能詳細介紹一下。
A:SQL Server 2014最大的一個功能上的飛躍就是內存數據庫,通俗的說就是把數據庫放在內存中而非磁盤里。傳統基于磁盤的表通常會遇到內存頁面置換、死鎖、造成了吞吐量有限、事務延遲較長等問題,內存數據庫的內存優化表由于常駐內存,適用于低延遲、高并發、快速數據傳輸和加載等場景,其帶來的性能提升也是可想而知的。
接下來我從操作的層面詳細介紹一下SQL Server 2014內存數據庫的特點,
(1)提供簡單的向導幫助用戶選擇最頻繁被訪問的數據庫表遷移到內存;
(2)用戶可以靈活的選擇同一個數據庫中的哪些表放在內存,哪些表放在硬盤。
(3)用戶還可以通過T-SQL語句輕松創建內存編譯存儲過程,從而進一步提高訪問數據的速度和執行查詢的效率。
Q11:Hekaton什么時候能支持中文的排序規則呢?
A:我估計您指的是CTP1時的In-Memory表不支持Code page – 936的問題?這個在CTP2時就已經解決了。正式產品放心用。具體使用排序規則請參見關于COLLATE的文檔,中文排序規則支持拼音和筆畫兩種:https://msdn.microsoft.com/zh-cn/library/ms184391.aspx
Q12:可否提供一個日期類型格式化的函數,就像c#中的DateTime.Now.ToString("yyyy-MM-dd") 現在只能通用CLR處理,若數據庫能處理就好了。
A:SQL轉換函數可以的:
SELECT CONVERT(VARCHAR(10), GETDATE(), 20) AS '[YYYY-MM-DD]'
更多細節請參閱MSDN:https://msdn.microsoft.com/zh-cn/sqlserver/ms187928
Q13:基于元數據這塊,對于數據各個層之間關聯,您那怎么處理的?
A:SQL Server 從2008 R2版提供開箱即用的主數據管理服務(MDS)。SQL Server MDS 既支持根據數據關系屬性自動生成層級關系(derived hierarchy)也支持手動創建參差型層級(Ragged Hierarchy)。 在有些場景,你甚至可以混合這兩種方式(“derived hierarchy with an explicit cap”),在最高層采用參差型層級,之下使用自動生成層級。深度知識建議閱讀這些資料:
Master Data Services 功能和任務
https://technet.microsoft.com/zh-cn/library/hh231022.aspx
Master Data Services Training Guide: Managing Hierarchies
http://download.microsoft.com/download/5/9/F/59F1639E-EF57-4915-8848-EF1DC2157EBB/04%20Managing%20Hierarchies.pdf
Tutorial: Enterprise Information Management using SSIS, MDS, and DQS Together
http://www.microsoft.com/en-us/download/details.aspx?id=35462
Q14:在下一代數據庫版本中可否將權限更加細化,現行很多服務器的很多功能如函數kill spid,sp_spaceused tablename等服務器調優方面函數及其他功能,再如job作業創建等權限只有管理員才有,能否將這些功能的粒度再細化,可由管理員進行分配。
A:微軟對安全管理的層級是非常清晰、直觀和靈活的。清晰、直觀主要通過服務器級別角色(Server Role)和數據庫級別角色(Database Role)來管理權限。靈活體現在不直接授權到具體用戶而是到角色。因為用戶(人)可以變動,但授權相對固定。人離職了可以統一在AD中去掉這個用戶賬號,而不必改動SQL Server角色授權。這就是微軟在安全策略上平臺化設計的優勢。環環相扣、分工協作。這樣非常契合企業實際管理的組織架構、最大程度分權治理、同時減少管理功能重復與多余的工作量。當然數據庫管理員的盡職驗證流程也要有。這個暫不展開。SQL Server 有一長串內置角色,對于更細化的管理,SQL系統管理員可以通過CREATE SERVER ROLE 和CREATE ROLE建立新的服務器級別和數據庫級別的定制角色。然后通過GRANT/ DENY權限的方式控制這個角色的權限,從而達到細度控制。
具體請參閱MSDN文章:
https://msdn.microsoft.com/zh-cn/library/ee677610.aspx
https://msdn.microsoft.com/zh-cn/library/ms186717.aspx
https://msdn.microsoft.com/zh-cn/library/ms182763.aspx
負載均衡的支持,之前的版本中雖然號稱對負載均衡有支持,但是效果都不是很理想,不知道在這個版本中有沒有改進。
“負載均衡的支持”存在于多個領域。我不知道您具體對那一部分的效果不滿意。Azure的更新確實是非常快的。例如對于網絡負載均衡,Azure上現在既有同一數據中心內的負載均衡服務,也有跨地理分布/數據中心的Traffic Manager服務保證您的客戶就近接入。例如對于數據庫負載均衡,過去確實存在限制比如SQL Server AlwaysOn 的入口必須是公網 IP。而現在也支持通過虛擬內網IP了的內部均衡了。這樣對混合云部署的LOB應用來說,網絡架構也更簡約、安全、高效了。架構拓撲見下圖。
Q15:備份到Azure,我知道存儲收費,但備份網絡流量收費不?
A:關于價格,我和您一樣會查看Azure運營商——世紀互聯的官網:http://www.windowsazure.cn/pricing/details/backup/。如您所愿,流量是不另收費的:“我們將基于在備份服務中存儲的數據量對備份收費。將不會對帶寬、存儲、存儲事務、計算或與提供備份服務相關聯的其他資源額外向您計費。”
Q16:公司的SQL SERVER2005若要升級到sql server 2008 R2 或者 sql server 2012.費用如何計算的,是只付升級費用,還是重新買SQL SERVER 2008 R2 或SQL SEVER2012?
A:升級費用的計算取決于你在購買SQL Server2005時是否購買了微軟的SA(軟件保障)以及SA是否在生效期內,如果是,則可以免費升級至微軟最新版本。如果不是,則需要重新購買。另外,SQL Server的最新版本是SQL Server 2014, 建議你直接升級數據庫到最新的版本,使用更多最新功能。具體SQL Server 2014的介紹可參見:http://www.microsoft.com/zh-cn/server-cloud/products/sql-server/default.aspx 。當然,如果你不想采用SQL Server 2014,也可以購買安裝低版本的SQL Server。
Q17:您好,我有個問題想請教一下,數據治理,可以作為一個大數據方面的體系,它與數據質量監管,元數據之間存在哪些關系,能否結合您實際應用場景,介紹一下數據治理的典型應用,多謝!
A:數據治理相對來說還是一個非常寬泛的概念,包括技術治理和人的治理兩個范疇。我就從技術實現的角度,介紹SQL Server 2014內置的在數據治理方面的兩個工具,一個叫做主數據服務(MDS),對數據建立和維護數據進行監管,從而確保分布在多個系統中的數據的完整性和一致性。另外一個叫SQL Server 數據質量服務(DQS),它針對清除和復制數據提供了一項基于知識的解決方案,以此來確保用戶數據集成的準確性,從而檢測并避免出現重復或不規范的數據。SQL Server 2014在提供的數據質量服務(DQS)和主數據服務(MDS)為企業端對端的數據治理提供了基礎。幫助用戶通過更先進的數據清洗算法確保數據的可靠、一致,提高數據質量,使后續的大數據分析的可信度得到增強。相關案例及應用場景可參考:http://www.microsoft.com/china/casestudies/details.aspx?CompanyProfileID=149 。
Q18:問個職業生涯的問題,你以前做過前端、后端、項目管理、數據庫,很全才,但想做到每個點都精通,很難,那么如何選擇做哪個作為自己的奮斗目標?是按興趣走,還是跟著公司的發展需求走?你是如何轉到微軟做數據架構師的?
A:我會跟著興趣走。但興趣點在不同職業階段和環境是會變的。我個人的干貨體驗是,興趣變化基本規律和馬斯洛的需要層次理論吻合的。沒本事的時候公司的興趣就是你的興趣。有本事的時候你的興趣會影響公司的方向。架構設計就是一個取舍的過程,這一法則同樣適用職業生涯。如果我還沒到能影響公司方向的時候,那么上策是找一個公司,需求和我興趣一致;中策是自己培養和公司一致目標的興趣;下策是自然是格格不入,那就要考慮換崗了。流程圖自己腦補吧。不過多跟朋友、長輩溝通,開闊眼界是避免太過自己的前提。公司、乃至行業的發展趨勢是什么,很大程度決定你的方向。俗套說法叫找風口。但沒有一定的積累,飛起來的姿勢也會很難看的。所以職業生涯沒有捷徑,尤其是做技術的。我在加入微軟之前就很認同微軟的工程師文化。前端、后端開發也有大量時間用的微軟技術平臺。我后來慢慢專注于后臺、尤其是數據架構是因為我工作的關系。在華爾街上,”知識就是金錢“ 這句話你基本可以照字面意思理解。而知識來自于數據。不同于國內,微軟數據平臺在”花街“各大銀行中的應用是非常流行的。因為銀行對資產利用率和投資回報率都是非常看重的,技術決策更多的是市場化的。我個人的體驗是,微軟在工程實踐方面的積累是非常深厚的。前期平臺架構設計很謹慎、周期很長。但平臺的優勢就是你一旦完成,后面的應用就可以非常快速推進。必要的非功能性需求比如安全就可以在應用層很少考慮了。從系統工程專業學者的角度,我對微軟文化心有戚戚焉。我加入黑石,是因為彼時對以技術戰勝對手獲得金錢回報有很大興趣;我加入微軟,是因為我看到微軟正重拾創客精神,而且云平臺的布局也以處于領先地位。領導下一次技術革命,無論是風口還是姿勢,都是我的興趣所在。
文章列表