作者丨何愷鐸 策劃丨張曉楠 21 世紀(jì)以來,數(shù)據(jù)平臺(tái)的戰(zhàn)場(chǎng)上烽火連天、精彩紛呈。所謂江山代有才人出,以 MongoDB、Redis、Neo4j 等為代表的 NoSQL 數(shù)據(jù)庫和 Hive、Impala、Presto 等 Hadoop 體系大數(shù)據(jù)解決方案風(fēng)頭一時(shí)無兩。在這些年輕后輩們的沖擊之下,關(guān)系數(shù)據(jù)庫作為數(shù)據(jù)架構(gòu)的中堅(jiān)力量,不但沒有節(jié)節(jié)敗退,近年反倒有王者歸來、愈戰(zhàn)愈勇之勢(shì)。在如今各類關(guān)鍵系統(tǒng)的設(shè)計(jì)和架構(gòu)中,關(guān)系型數(shù)據(jù)庫仍然以穩(wěn)定的表現(xiàn)和豐富的特性占據(jù)著核心地位。 SQL Server 是關(guān)系數(shù)據(jù)庫中的杰出代表,是與 Oracle、DB2 齊名的企業(yè)級(jí)商用數(shù)據(jù)庫“三巨頭”之一。長(zhǎng)達(dá)數(shù)十年的發(fā)展和磨礪,已讓它非常成熟穩(wěn)定;而跟隨時(shí)代發(fā)展不斷地融合技術(shù)新趨勢(shì),又使它非常全面。尤其上一個(gè)版本 SQL Server 2017 更是將此款傳奇數(shù)據(jù)庫帶入了廣闊的 Linux 世界,進(jìn)一步拓展了它的潛在客戶群體和使用場(chǎng)景。 我們大可先簡(jiǎn)單回顧 SQL Server 琳瑯滿目的豐富特性。在兩年前的文章中我們提到,SQL Server 已經(jīng)集傳統(tǒng)行存儲(chǔ)、可更新的列存儲(chǔ)、內(nèi)存表、圖數(shù)據(jù)庫、機(jī)器學(xué)習(xí)等十八般武藝于一身。這其中許多先進(jìn)的特性,有些是開源數(shù)據(jù)庫仍在苦苦追趕的領(lǐng)域,或是無法在同一個(gè)數(shù)據(jù)庫中進(jìn)行完美的集成。這正是商業(yè)數(shù)據(jù)庫的價(jià)值所在:以高穩(wěn)定性、高性能與高集成度贏得青睞,在幫助客戶支撐解決關(guān)鍵業(yè)務(wù)問題的同時(shí),亦能簡(jiǎn)化技術(shù)架構(gòu)、減輕維護(hù)負(fù)擔(dān)。 僅僅兩年的時(shí)間,微軟就在上一代的基礎(chǔ)上發(fā)展構(gòu)建出了全新的 SQL Server 2019,這樣的迭代速度對(duì)于高度復(fù)雜的數(shù)據(jù)庫系統(tǒng)而言頗為驚人??旃?jié)奏發(fā)布固然和如今業(yè)界普遍激進(jìn)的版本策略有關(guān),但大家也一定好奇,一個(gè)已經(jīng)高度成熟的商業(yè)數(shù)據(jù)庫系統(tǒng),在這樣短的時(shí)間里究竟能取得怎樣的進(jìn)步?又在哪些方面針對(duì)變幻莫測(cè)的市場(chǎng)作出了自己的回應(yīng)呢?本文將與大家一同探索。 結(jié)合 SQL Server 2019 的新特性,我們接下來分別從核心引擎增強(qiáng)、數(shù)據(jù)虛擬化以及此版本最大亮點(diǎn) SQL Server 大數(shù)據(jù)集群三個(gè)方面來進(jìn)行分析和探討。 我們首先從核心引擎部分說起。HTAP (Hybrid transaction/analytical processing) 混合負(fù)載能力是當(dāng)今數(shù)據(jù)庫世界的趨勢(shì),SQL Server 在這方面是行業(yè)引領(lǐng)者之一,之前版本已通過在單一引擎中完美集成行存儲(chǔ)和列存儲(chǔ)實(shí)現(xiàn)了對(duì) OLTP 和 OLAP 工作負(fù)載的同時(shí)支撐。用戶不但可以同時(shí)查詢和連接行存和列存表,甚至可以為一個(gè)行存儲(chǔ)表添加非聚集的列存儲(chǔ)索引,使得單表能夠同時(shí)較好地支持 OLTP 和 OLAP 兩種工作模式和查詢場(chǎng)景。 SQL Server 2019 中繼續(xù)強(qiáng)化了對(duì)于混合負(fù)載能力的支持,通過潤(rùn)物細(xì)無聲式的改進(jìn)讓相關(guān)引擎進(jìn)一步成熟,也使得日常使用更為便捷。例如在列存儲(chǔ)索引方面,現(xiàn)已允許在線地創(chuàng)建或重新構(gòu)建 (REBUILD) 聚集列存儲(chǔ)索引——這將大大方便生產(chǎn)環(huán)境中大型列存儲(chǔ)表的維護(hù)和使用,既能節(jié)省存儲(chǔ)空間,又能提高后續(xù)查詢性能。在筆者接觸的生產(chǎn)環(huán)境中就常有列存儲(chǔ)表由于部分行的更新導(dǎo)致碎片問題,但為了保障線上業(yè)務(wù)的連續(xù)性,一直只能使用相對(duì)輕量的 REORGANIZE 命令進(jìn)行簡(jiǎn)單的維護(hù)。該問題有望在數(shù)據(jù)庫升級(jí)后徹底解決。 上一代 SQL Server 2017 中引入的圖數(shù)據(jù)引擎在 SQL Server 2019 中也得到了相當(dāng)幅度的增強(qiáng)。其改進(jìn)既包括在存儲(chǔ)層面支持圖數(shù)據(jù)表和索引使用多 filegroup 進(jìn)行分區(qū),還新增了極為重要的任意長(zhǎng)度模式 (Arbitrary Length Pattern) 支持,用戶終于可以表達(dá)節(jié)點(diǎn)間任意次數(shù)的跳躍連通關(guān)系了。我們來看一個(gè)針對(duì)人物關(guān)系圖的官方查詢樣例: SELECT PersonName, Friends FROM ( SELECT Person1.name AS PersonName, STRING_AGG(Person2.name, '->') WITHIN GROUP (GRAPH PATH) AS Friends, LAST_VALUE(Person2.name) WITHIN GROUP (GRAPH PATH) AS LastNode FROM Person AS Person1, friendOf FOR PATH AS fo, Person FOR PATH AS Person2 WHERE MATCH(SHORTEST_PATH(Person1(-(fo)->Person2)+)) AND Person1.name = 'Jacob' ) AS JacobReach WHERE JacobReach.LastNode = 'Alice' 容易理解的是,該查詢將能夠幫助判斷 Jacob 與 Alice 兩人是否連通,并給出他們之間的最短關(guān)系路徑,而這條路徑的長(zhǎng)度是不確定的。T-SQL 語法上的關(guān)鍵點(diǎn)在于 MATCH 子句:其中使用了一個(gè) SHORTEST_PATH 方法來尋找計(jì)算圖中兩個(gè)給定節(jié)點(diǎn)間的最短距離。需注意該方法的輸入?yún)?shù)支持類似正則表達(dá)式語法的不定長(zhǎng)模式,通過一個(gè) + 號(hào)巧妙地表達(dá)了通過 friendOf 關(guān)系多次連續(xù)尋路,被加號(hào)括起的 -(fo)->Person2 即為可多次重復(fù)的部分。 上述特性是圖數(shù)據(jù)庫應(yīng)用最常見的高級(jí)查詢場(chǎng)景之一,數(shù)學(xué)上被稱為傳遞閉包 (transitive closure)。該特性的加入意味著 SQL Server 2019 在圖查詢能力方面終于登堂入室,開始逐漸具備與專用圖數(shù)據(jù)庫競(jìng)爭(zhēng)的實(shí)力。 商用數(shù)據(jù)庫一向?qū)τ谟布I(lǐng)域發(fā)展較為關(guān)注,不斷通過最新的硬件最大化性能潛力。持久性內(nèi)存 (Persistent Memory, ??s寫為 PMEM) 以其遠(yuǎn)優(yōu)于 SSD 硬盤的 IO 能力,成為了當(dāng)下服務(wù)器端硬件的熱點(diǎn)之一,英特爾等廠商紛紛大力規(guī)劃發(fā)展如 Optane DC 這樣的企業(yè)級(jí)持久性內(nèi)存硬件產(chǎn)品。為此,SQL Server 2019 不失時(shí)機(jī)地推出了混合緩沖池 (Hybrid Buffer Pool) 特性,可讓持久性內(nèi)存作為間于 DRAM 內(nèi)存和 SSD 硬盤的存儲(chǔ)層,在性能攸關(guān)的頁面緩沖池上發(fā)揮顯著的加速作用。用戶選擇開啟此特性后,頁面緩沖池可擴(kuò)展到 PMEM 設(shè)備上的存儲(chǔ)空間,SQL Server 則直接通過內(nèi)存映射 IO 訪問位于 PMEM 設(shè)備上的數(shù)據(jù)頁。在許多情況下這樣可避免數(shù)據(jù)頁頻繁地從傳統(tǒng)磁盤拷貝到 DRAM,進(jìn)行頁訪問時(shí)也能夠繞過操作系統(tǒng)的存儲(chǔ)協(xié)議棧開銷,從而取得巨大的性能提升。 持久性內(nèi)存與內(nèi)存映射訪問(來自微軟官方文檔) 值得一提的是,甲骨文將于明年發(fā)布的全新一代 Oracle 20c,同樣會(huì)提供對(duì)于持久性內(nèi)存的支持——在這一點(diǎn)上,可謂與 SQL Server 英雄所見略同。 我們?cè)賮砜淳幊陶Z言集成方面。以往擴(kuò)展 SQL Server 功能是 C#/.NET 的專利,例如用戶可以通過 SQL Server 的 CLR 集成調(diào)用.NET 編寫的 UDF。隨著微軟近年來的開放策略持續(xù)推進(jìn),更多語言進(jìn)入了 SQL Server 的體系。兩年前我們?cè)榻B SQL Server 2017 中集成了 Python/R 的環(huán)境以方便進(jìn)行機(jī)器學(xué)習(xí)方面工作,而在 SQL Server 2019 中此次 Java 則成為了主要的集成和支持對(duì)象。通過全新的語言擴(kuò)展體系 (SQL Server Language Extensions) 可使得 Java 類與方法直接在 SQL Server 服務(wù)器上本地執(zhí)行。用戶只需要實(shí)現(xiàn)微軟 Java 擴(kuò)展 SDK (Microsoft Extensibility SDK for Java) 中的抽象類 AbstractSqlServerExtensionExecutor 即可讓自己封裝的 Java 代碼通過 sp_execute_external_script 存儲(chǔ)過程在數(shù)據(jù)庫 T-SQL 上下文中調(diào)用運(yùn)行。 一個(gè)與 Java 支持相關(guān)的話題是,由于 Oracle 對(duì)于 Java 的版權(quán)控制和使用條款不斷收緊,為避免 SQL Server 中內(nèi)嵌 Oracle Java 環(huán)境帶來不必要的限制和風(fēng)險(xiǎn),微軟近期與 Java 開源貢獻(xiàn)者和發(fā)行商 Azul Systems 達(dá)成了一系列合作,使用 Azul Zulu JRE/JDK(基于 OpenJDK)作為 Azure 云和 SQL Server 上 Java 的默認(rèn)選項(xiàng)。這樣 Azure 和 SQL Server 的用戶就可獲得和使用一款免費(fèi)且受支持的 Java 運(yùn)行環(huán)境,該環(huán)境能夠提供安全更新和 Bug 修復(fù),免除了后顧之憂。我們預(yù)計(jì)類似的做法會(huì)逐步成為各大廠的必然選擇。這個(gè)來自 Azul Systems 的 Java 環(huán)境不但有助于上述 SQL Server 的 Java 擴(kuò)展功能,更會(huì)為接下來將介紹的 PolyBase 功能和 SQL Server 大數(shù)據(jù)集群起到至關(guān)重要的支撐作用。 上面涉及的各個(gè)新功能,只是 SQL Server 2019 引擎新能力的一部分。事實(shí)上新版本還有許多可圈可點(diǎn)的改進(jìn),如 APPROX_COUNT_DISTINCT 近似聚合函數(shù)、TempDB 元數(shù)據(jù)的內(nèi)存化 (Memory-Optimized TempDB Metadata)、UTF-8 字符編碼支持、針對(duì)行存儲(chǔ)的批處理模式 (batch mode on rowstore) 支持以及行模式下的內(nèi)存分配反饋 (row mode memory grant feedback) 等。這些特性分布于存儲(chǔ)執(zhí)行引擎的各個(gè)環(huán)節(jié),進(jìn)一步提升了 SQL Server 的能力和深度。 前面提到,支持多模型多范式已經(jīng)成為商業(yè)數(shù)據(jù)庫追求的重要目標(biāo)之一,以求確立和維護(hù)在企業(yè)整體數(shù)據(jù)架構(gòu)中的核心地位。但在實(shí)際情況下,異構(gòu)數(shù)據(jù)源總會(huì)客觀存在,所以從另一個(gè)思路上來說,如何加強(qiáng)并便利與異構(gòu)數(shù)據(jù)源之間的互聯(lián)互通,也逐漸成為了現(xiàn)代數(shù)據(jù)庫產(chǎn)品中的重要考量和評(píng)定標(biāo)準(zhǔn)。 數(shù)據(jù)互聯(lián)互通,最容易想到的就是使用類似 SSIS 和 Azure Data Factory 這樣的 ETL 工具來進(jìn)行定時(shí)的數(shù)據(jù)傳輸。這固然是行之有效的方法,但存在數(shù)據(jù)時(shí)效性和數(shù)據(jù)重復(fù)等局限。如今相較建立 ETL 通道更為先進(jìn)的一種理念,就是數(shù)據(jù)虛擬化。所謂數(shù)據(jù)虛擬化,顧名思義就是不論數(shù)據(jù)以具體何種格式存放何處,都能以統(tǒng)一的抽象進(jìn)行管理和訪問。技術(shù)上來說,以數(shù)據(jù)庫為核心的數(shù)據(jù)虛擬化體系主要以聲明式的外部表來指向和定義底層數(shù)據(jù)。 在 SQL Server 2019 版本中,微軟將數(shù)據(jù)虛擬化作為產(chǎn)品核心概念和主要建設(shè)目標(biāo)提出,并在功能層面通過內(nèi)置的 PolyBase 技術(shù)進(jìn)行了關(guān)鍵支撐和加強(qiáng)。PolyBase 其實(shí)并非一個(gè)新面孔,它最早出現(xiàn)于 SQL Server 2012 Parallel Data Warehouse 中,服務(wù)于這個(gè)軟硬一體化的分布式 MPP 數(shù)據(jù)庫版本。PolyBase 組件在功能上賦予了數(shù)據(jù)庫層面定義指向 Hadoop/HDFS 數(shù)據(jù)的外部表的能力,成為幫助打通關(guān)系數(shù)據(jù)庫與 Hadoop 大數(shù)據(jù)生態(tài)系統(tǒng)的重要橋梁。在 SQL Server 2016 中 PolyBase 則真正變得成熟并且廣為人知,正式出現(xiàn)在了標(biāo)準(zhǔn) SQL Server 中,大大地拓展了受眾。 Polybase 的外聯(lián)能力在 SQL Server 2019 版本中進(jìn)一步得到了強(qiáng)化,除原先支持的 Hadoop 和 Azure Blob Storage 外,新版本額外添加了 SQL Server、Oracle、Teradata、MongoDB 和 ODBC 的支持。如果說 PolyBase 之前只是不起眼的附屬功能,在強(qiáng)調(diào)數(shù)據(jù)虛擬化的 SQL Server 2019 中已是位居聚光燈下的核心能力。 數(shù)據(jù)虛擬化能力(來自微軟官方文檔) 不妨來看一個(gè)在 SQL Server 2019 中使用 PolyBase 配置遠(yuǎn)端 MongoDB 數(shù)據(jù)源的簡(jiǎn)單例子,以此來理解數(shù)據(jù)虛擬化的落地形態(tài)。
可以看到,通過 T-SQL 對(duì)憑證 (credential)、數(shù)據(jù)源 (data source)、外部表 (external table) 這三個(gè)核心配置進(jìn)行定義,就可以輕松地將 MongoDB 中的集合與字段映射到 SQL Server 中來,后續(xù)即可對(duì)虛擬的外部表進(jìn)行查詢。PolyBase 甚至還支持 MongoDB 中的對(duì)象、數(shù)組等嵌套結(jié)構(gòu),允許在外部表定義時(shí)將復(fù)雜字段打平。另外,雖然此處所舉的例子是針對(duì) MongoDB,若需連接其他類型數(shù)據(jù)源,配置的步驟也大致類似,只是相關(guān)參數(shù)的含義和形式有所不同。 值得注意的是,PolyBase 加持下的外部表使用起來與一般數(shù)據(jù)表無異,能夠與其他表進(jìn)行 join 等操作,這大大方便了異構(gòu)數(shù)據(jù)源之間的集成,許多情況下能夠免除數(shù)據(jù)搬運(yùn)的麻煩。當(dāng)然,對(duì)于一些出于性能原因不便直接查詢的場(chǎng)景,也可用簡(jiǎn)單的 SQL 語句將外部表數(shù)據(jù)方便地同步到 SQL Server 內(nèi)部。 在技術(shù)實(shí)現(xiàn)層面,PolyBase 由于脫胎于 MPP 架構(gòu)場(chǎng)景,所以其實(shí)具備很好的并行擴(kuò)展能力——當(dāng)遠(yuǎn)端數(shù)據(jù)體量巨大時(shí)這一特性殊為重要,能夠極大地加速查詢的執(zhí)行。用戶可以設(shè)立多個(gè) SQL Server 實(shí)例(分為頭節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn))并編組為 PolyBase Scale-out Group 來協(xié)同工作,對(duì)外部大數(shù)據(jù)進(jìn)行并行讀取和處理。從這個(gè)層面來看,PolyBase 模塊已使 SQL Server 具備了分布式分析型數(shù)據(jù)庫的一些典型特征。 PolyBase Scale-out Group 架構(gòu)(來自微軟官方文檔) PolyBase 的另一個(gè)特點(diǎn),是具備一定的查詢下推 (pushdown) 能力,在遠(yuǎn)端能夠支持的情況下,查詢處理器會(huì)將符合條件的謂詞發(fā)送到數(shù)據(jù)源端進(jìn)行就近處理,既提高查詢性能同時(shí)也減輕網(wǎng)絡(luò) IO 的負(fù)擔(dān)。例如,在面向 Hadoop 的讀取場(chǎng)景下,有時(shí) PolyBase 會(huì)根據(jù)統(tǒng)計(jì)信息選擇使用 MapReduce 來讀取過濾原始文件,最終只需傳回部分結(jié)果數(shù)據(jù)而非全量數(shù)據(jù)。 綜上所述,數(shù)據(jù)虛擬化的理念和 PolyBase 技術(shù)的增強(qiáng),有望幫助新一代 SQL Server 成為數(shù)據(jù)架構(gòu)的中心。通過捏合和集成多種異構(gòu)數(shù)據(jù)源,SQL Server 2019 可有效降低企業(yè)架構(gòu)復(fù)雜性,還能在數(shù)據(jù)冷熱分層、統(tǒng)一數(shù)據(jù)湖構(gòu)建等應(yīng)用場(chǎng)景中大顯身手。 SQL Server 2019 最值得一提的重磅特性,恐怕就要數(shù) SQL Server 大數(shù)據(jù)集群了(SQL Serve Big Data Cluster)。憑借創(chuàng)造性地將 Hadoop 和 Spark 等開源大數(shù)據(jù)技術(shù)組件直接納入 SQL Server 并在 Kubernetes 體系下無縫集成的大膽設(shè)計(jì),SQL Server 大數(shù)據(jù)集群在去年一經(jīng)宣布并開始有限預(yù)覽后,即引起了廣泛關(guān)注。因?yàn)榇蠹叶挤浅:闷妫捍髷?shù)據(jù)、Hadoop、Spark、容器化、云原生這些炙手可熱的技術(shù)熱詞將如何與一個(gè)傳統(tǒng)商業(yè)數(shù)據(jù)庫發(fā)生化學(xué)反應(yīng)呢? SQL Server 大數(shù)據(jù)集群本質(zhì)上既是 SQL Server 2019 的一個(gè)新特性,也是一種新的產(chǎn)品形態(tài)和部署方式。它具有以下幾個(gè)重要特點(diǎn):(1) 將 SQL Server 以多實(shí)例形態(tài)進(jìn)行部署和聯(lián)動(dòng),實(shí)現(xiàn)數(shù)據(jù)的分布式存儲(chǔ)、處理和計(jì)算 (2) 將 SQL Server 完全容器化并以 Kubernetes 為基礎(chǔ)架構(gòu)實(shí)現(xiàn)底層計(jì)算資源的編排和管理 (3) 在自有分布式存儲(chǔ)基礎(chǔ)上額外內(nèi)置提供了標(biāo)準(zhǔn) HDFS 分布式文件系統(tǒng) (4) 在計(jì)算層面額外提供了標(biāo)準(zhǔn) Spark 作為分布式計(jì)算引擎。其架構(gòu)概覽圖如下所示: SQL Server 大數(shù)據(jù)集群架構(gòu)(來自微軟官方文檔) 可以看到,SQL Server 大數(shù)據(jù)集群代表了微軟數(shù)據(jù)平臺(tái)最新的架構(gòu)思想,從單純的與外部互聯(lián)互通,走向了與開源平臺(tái)技術(shù)的全面融合;從技術(shù)對(duì)接與兼容,走向了你中有我、我中有你。這不能不說是一個(gè)大膽的嘗試,也是一個(gè)令人拍案叫絕的產(chǎn)品思路。它的好處顯而易見:從企業(yè)客戶角度來說 all-in-one 的設(shè)計(jì)大幅簡(jiǎn)化了架構(gòu),用戶可基于此建設(shè)自己的一站式大數(shù)據(jù)平臺(tái),開源與商業(yè)技術(shù)兩者兼得;從微軟角度而言,確保了開源工作負(fù)載在 SQL Server 集群和體系內(nèi)順利運(yùn)行,類似一個(gè)商業(yè) Hadoop 發(fā)行版本,無疑有利于其在開源時(shí)代繼續(xù)獲得商業(yè)上的成功。 如果想體驗(yàn) SQL Server 2019,最簡(jiǎn)便的方法是先建立一個(gè) Azure Kubernetes Service(AKS) 集群(當(dāng)然也支持其他云或本地 K8s 集群),然后借助 azdata 命令行工具即可一鍵將 SQL Server 大數(shù)據(jù)集群部署至 Kubernetes。筆者進(jìn)行了相關(guān)的動(dòng)手實(shí)驗(yàn)和架構(gòu)觀察,發(fā)現(xiàn) SQL Server 大數(shù)據(jù)集群在技術(shù)實(shí)現(xiàn)上可謂頗具看點(diǎn),列舉部分如下:
限于篇幅,更多內(nèi)容此處不再展開。若大家對(duì)其中一些關(guān)鍵細(xì)節(jié)和動(dòng)手實(shí)操感興趣,可關(guān)注筆者微信公眾號(hào)“云間拾遺”的后續(xù)文章了解更多信息。 在定價(jià)方面,雖然 SQL Server 大數(shù)據(jù)集群仍屬商用數(shù)據(jù)庫范疇,且占用 CPU 核心數(shù)較多,但用戶不必過于擔(dān)心在授權(quán)費(fèi)用方面的高額支出。SQL Server 團(tuán)隊(duì)貼心地設(shè)計(jì)了成本友好的定價(jià)策略,主要體現(xiàn)為除 master 實(shí)例需要 Enterprise 或 Standard 版本授權(quán)外,其他占大多數(shù)的 computer/data/storage 節(jié)點(diǎn)只需要按照專門設(shè)計(jì)且便宜許多的“Big Data Node”的方式進(jìn)行計(jì)費(fèi),這會(huì)大大減輕用戶在選用 SQL Server 大數(shù)據(jù)集群后的成本負(fù)擔(dān)。 回過頭來看,SQL Server 大數(shù)據(jù)集群雖然是全新的能力,但也許微軟其實(shí)早早就開始了相關(guān)布局。因?yàn)槿菀装l(fā)現(xiàn) SQL Server 之前版本的一些成果,恰恰是此次大數(shù)據(jù)集群得以橫空出世的技術(shù)前提。比如前面提到的歷經(jīng)多年積累的 PolyBase 技術(shù),正是 SQL Server 得以和大數(shù)據(jù)技術(shù)棧無縫交互的關(guān)鍵;又如 SQL Server 2017 開始引入的 Linux 版本,則是容器化封裝得以順利達(dá)成的重要基礎(chǔ)條件。 微軟近年來全面擁抱開源之后,正在逐漸獲得回報(bào)。擁抱開源既能夠拉近與社區(qū)和用戶的距離,也為最新的技術(shù)產(chǎn)品發(fā)展贏得了更大的設(shè)計(jì)靈活度。此次徹底容器化、使用 Kubernetes 進(jìn)行編排并集成 Spark、HDFS 等開源組件的 SQL Server 大數(shù)據(jù)集群,無疑也是這種“改革開放”和“拿來主義”策略的成功典范。 當(dāng)然,任何事物都有其兩面性。對(duì)于 SQL Server 大數(shù)據(jù)集群這樣的一體化架構(gòu)模式,也有個(gè)別業(yè)界人士持有不同觀點(diǎn),認(rèn)為過度整合封裝未必是云時(shí)代的架構(gòu)演化方向,他們更傾向于計(jì)算存儲(chǔ)分離的架構(gòu),讓每個(gè)數(shù)據(jù)組件專注做好一件事情。這就是一個(gè)仁者見仁智者見智的問題了。也許 SQL Server 大數(shù)據(jù)集群的設(shè)計(jì)初衷更側(cè)重基于本地部署的大型客戶,同時(shí)吸引對(duì)可遷移性和跨云適配十分敏感的企業(yè)解決方案提供商——對(duì)這些場(chǎng)景而言,SQL Server 大數(shù)據(jù)集群不失為極具競(jìng)爭(zhēng)力的選擇。相信市場(chǎng)會(huì)給予我們最終的答案。 世界即將跨入新的十年。在 2019 年末發(fā)布的 SQL Server 2019,展現(xiàn)了微軟在新時(shí)代對(duì)下一個(gè)十年的展望和雄心。尤其是 SQL Server 大數(shù)據(jù)集群的推出,相信將促成一批全新大數(shù)據(jù)平臺(tái)的落地,也會(huì)啟發(fā)業(yè)界思考未來大數(shù)據(jù)的架構(gòu)模式,以及商業(yè)技術(shù)與開源世界和諧并存之道。 值得一提的是,SQL Server 2019 與 SQL Server 2017 一樣,擁有面向 Linux 的版本,并與 Linux 廠商一起提供官方的支持服務(wù)。事實(shí)上 SQL Server 對(duì) Linux 的特性覆蓋也一直在默默地持續(xù)改進(jìn),2019 版本為 Linux 帶來了數(shù)據(jù)復(fù)制、Active Directory 集成、PolyBase on Linux 等重要特性。如果大家對(duì)于兩年前的首個(gè) Linux 版本還持觀望態(tài)度的話,SQL Server 2019 對(duì)于 Linux 的兼容性和功能集合已經(jīng)完善了許多,是一個(gè)更好的 SQL Server for Linux,或許是時(shí)候可以“上車”了。 以云為先的微軟,除了云原生化 SQL Server 2019 本身外,也必然會(huì)考慮將新一代版本的新能力逐漸同步到 Azure 云的 PaaS 服務(wù)上。其實(shí) Azure SQL Database 已經(jīng)開始支持 SQL Server 2019 中如 APPROX_COUNT_DISTINCT 等部分新特性了,只需手動(dòng)設(shè)置數(shù)據(jù)庫的兼容性等級(jí) (compatibility level) 為對(duì)應(yīng) 2019 版本的 150 即可。再者如 PolyBase,之前在 Azure 上僅有 SQL Data Warehouse 提供了支持(主要用于訪問 Blob Storage),后續(xù)該特性很可能會(huì)在云端得到相應(yīng)的更新增強(qiáng),也期待它拓展到 SQL Databases 或 SQL Managed Instance 等更多數(shù)據(jù)服務(wù)中。 最后,我們簡(jiǎn)要地總結(jié) SQL Server 2019 的發(fā)展策略如下:首先繼續(xù)夯實(shí)了原生支持多種數(shù)據(jù)架構(gòu)范式的多模內(nèi)核,其次是不斷改進(jìn)數(shù)據(jù)虛擬化技術(shù) PolyBase 以強(qiáng)化外部聯(lián)接,最后通過擁抱和納入開源大數(shù)據(jù)技術(shù)體系實(shí)現(xiàn)整體融合。這是一個(gè)穩(wěn)步發(fā)展、層層遞進(jìn)的產(chǎn)品進(jìn)化思路。不知作為用戶的你,是否已經(jīng)心動(dòng)?讓我們祝 SQL Server 2019 好運(yùn)。 何愷鐸,國(guó)雙科技 (Nasdaq:GSUM) 技術(shù)總經(jīng)理,QCon 講師,公眾號(hào)“云間拾遺” (ID:cloudpicker) 作者。畢業(yè)于清華大學(xué),曾供職于摩根士丹利基礎(chǔ)架構(gòu)部門,2011 年加入國(guó)雙科技工作至今。多年來參與架構(gòu)和設(shè)計(jì)了國(guó)雙數(shù)個(gè)面向數(shù)字營(yíng)銷和社交聆聽的大數(shù)據(jù)解決方案。個(gè)人關(guān)注的技術(shù)領(lǐng)域包括云計(jì)算、Hadoop 生態(tài)系統(tǒng)、數(shù)據(jù)庫技術(shù)等。 點(diǎn)個(gè)在看少個(gè) bug ?? |
|