Linux 上的 SQL Server 功能

已完成

為了向預算持有人說明進行 SQL Server 移轉的理由,了解 SQL Server 的哪些功能可為您的系統提供競爭優勢會有所幫助。

假設在探索什麼是 Linux 上的 SQL Server 之後,您想要確保目前可用的功能符合 Wide World Importers 的現有和未來資料處理需求。

在此您將了解 Linux 上的 SQL Server 的主要功能。

效能

Linux 上的 SQL Server 透過提供混合式交易分析處理 (HTAP) 解決方案,支援快速交易輸送量與回應式分析的競爭需求。 HTAP 會使用 SQL Server 的部分核心效能技術:

記憶體內部線上交易處理 (OLTP)

藉由結合經記憶體最佳化的資料表與編譯的預存程序,Wide World Importers 可在其交易資料表上看到效能大幅提升,例如撰寫和讀取電子商務網站的工作階段狀態時。

資料行存放區索引

SQL Server 同時支援資料列資料和壓縮的單欄式資料。 交易資料表也可能具有資料行存放區索引,可在撰寫分析查詢時用於取代資料列存放區。 使用資料行存放區索引可讓目前的分析套件保有交易效能,同時也可對操作資料執行即時報表查詢。

查詢存放區

您的 DBA 小組會完成每月的效能調整工作,以確保會使用正確的查詢計劃。 他們會監視查詢效能,並在執行計畫中的變更會影響效能時還原查詢計劃。 該小組也會向開發組長回報前 10 名執行時間最長的查詢,並檢查是否有任何資源鎖定。 查詢存放區支援上述所有工作,而且您可以使用 Transact-SQL 啟用:

ALTER DATABASE <database name>
SET QUERY_STORE (OPERATION_MODE = READ_WRITE);

自動調整與智慧型查詢處理

您可以在啟用查詢存放區之後,啟用自動計劃選擇更正。 啟用自動調整之後,SQL Server 便會監視查詢效能。 如果新查詢計劃的效能比舊版還差,其便可以將新的計劃取代為效能較佳的舊版計劃。 您可以在資料庫層級使用 ALTER 陳述式存取此選項:

ALTER DATABASE <database name>
SET AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = ON );

智慧型查詢處理 (IQP) 是能夠自動改善及最佳化工作負載效能的一組功能,其中有許多都是在 SQL Server 2019 中引進的新功能。 IQP 功能包括:

  • 自適性聯結:SQL Server 會根據輸入資料列的實際數目,於執行階段期間動態選取聯結類型。
  • 近似相異計數:SQL Server 會針對巨量資料案例提供相異結果的近似計數,以搭配高效能和低記憶體負載執行此類查詢。
  • 記憶體授與反饋:如果查詢有會溢出到磁碟的作業,SQL Server 可以為後續作業新增更多記憶體。 同樣地,如果查詢將為其配置超過一半的記憶體浪費掉,SQL Server 可以減少為其指派的記憶體。
  • 資料表變數延後編譯:SQL Server 會在資料表變數首次編譯時使用其實際的基數,而非固定的猜測。

IQP 不會要求您重新撰寫任何程式碼或變更您的資料庫結構以利用最佳效能。 您只需要將資料庫升級到相容性層級 150 或更新版本:

ALTER DATABASE <database name> SET COMPATIBILITY_LEVEL = 150;

安全性

Linux 上的 SQL Server 支援 Always Encrypted、資料列層級安全性與動態資料遮罩等進階安全性功能,以保護磁碟上、記憶體內部或傳輸中的資料。 所有版本 (包括標準版) 皆支援這些功能:

  • 透明資料加密 (TDE) 會在待用資料儲存在資料庫檔案中時對其進行加密。 該資料在資料庫與備份中皆會受到保護以防範惡意使用者。

  • Always Encrypted 能確保只有擁有資料的使用者可以加以檢視及處理。 管理資料的使用者 (例如資料庫管理員) 無法加以檢視。 如果您使用 Always Encrypted:

    • 您可以直接查詢已加密的資料,而無須先將其解密。
    • 資料在待用時、移動到伺服器記憶體期間,以及從伺服器移動到信任的用戶端應用程式期間都會受到保護。
    • 加密及解密會在用戶端驅動程式中進行,因此用戶端應用程式不會知道此程序的存在。
    • 只有信任的應用程式與資料擁有者才能加以存取。 應用程式開發人員與資料庫管理員無法存取資料行加密金鑰 (CEK)。
  • 稽核能追蹤發生在資料庫引擎上的事件,以及執行那些事件的人員。 稽核的事件可以儲存在事件記錄檔或稽核檔案中,而且您可以將其用來調查各種問題,如攻擊與資料外洩等。

  • 資料列層級安全性可根據執行查詢的人員,控制對資料表內特定資料列的存取權。 您可以控制能存取資料的人員,例如依群組成員資格或執行內容。

  • 動態資料遮罩會遮罩部分資料。 您可以使用四種不同的遮罩:遮罩資料行中的所有資料、遮罩電子郵件地址、數值資料的亂數遮罩,以及自訂字串遮罩。 例如,您可以使用自訂字串遮罩,遮罩社會安全號碼末四碼以外的其他數字。

  • 資料探索與分類能識別、標示及報告資料庫中的敏感性資料,例如個人資訊。 其為 SQL Server Management Studio (SSMS) 內的工具,可讓使用者更輕鬆地遵守資料隱私權法規,並強化包含最貴重資料的資料庫。 「資料探索與分類」是屬於進階資料安全性 (ADS) 套件之一部分的服務。

  • 漏洞評量能識別資料庫中的弱點。 當您明白自己的伺服器設定與資料庫設計可能會導致哪些弱點之後,您便可以加以緩解並阻止常見攻擊。 「漏洞評量」是另一個 ADS 服務。

SQL Server Agent

SQL Server Agent 會執行維護作業和已排程、自動化的工作。 SQL Server Agent 支援下列三個工作負載:

  • Transact-SQL 工作
  • DB 郵件
  • 記錄傳送

SQL Server Agent 預設是停用的,但其已安裝並可使用命令列 mssql-conf 公用程式來啟用。

sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
sudo systemctl restart mssql-server

高可用性

SQL Server 提供許多方式來指定可接受的容錯層級。 Linux 上的 SQL Server 支援 Always On 可用性群組和 Always On 容錯移轉叢集執行個體。 這兩個選項都需要在每部伺服器上安裝 mssql-server-ha 套件。 Linux 支援透過 Pacemaker 進行叢集,其相當於 Windows Server 容錯移轉叢集 (WSCF),但其與主機作業系統的整合相對沒有那麼密切。

如果對可接受的停機時間具有較多彈性,透過 SQL Agent 進行記錄傳送可以提供暖待命,讓您用來復原伺服器的遺失內容。

Linux 上 SQL Server 的另一個解決方案,是其能夠在使用如 Kube 的工具進行協調的容器中執行的能力。 協調流程工具能確保一律會有執行 SQL Server 的節點。 如果該節點失敗,系統會自動啟動另一個執行個體。 需要更健全的可用性時,您可以在容器中執行 Always On 可用性群組。

其他值得注意的功能

PolyBase

許多組織都會有位於不同系統中的資料。 那可能是因為不同的小組在選取系統時具有不同的需求、因為您與另一家公司合併,或是因為其他歷史性的因素。 橫跨這些系統界限以整合資料,來為使用者的問題提供解答,一直以來都是件困難的事。

假設您在 SQL Server 中有資料可記錄您產品目錄的銷售量,但記錄產品成本的資料位於 SAP HANA 資料庫中。 您想要建立能分析淨利率的報表。 您需要來自上述兩個資料庫的資訊。 在過去,您可以:

  • 使用擷取、轉換和載入 (ETL) 套件來將資料從某個資料庫系統移轉到另一個資料庫系統。
  • 同時查詢這兩個資料庫,然後撰寫一些自訂程式碼來將結果聯結及整合為單一報表。

這兩個方法都相當複雜,且可能需要花費相當長的開發時間才能正確完成。

透過使用 PolyBase,您可以在 SQL Server 中建立外部資料表。 外部資料表是與外部系統及其所裝載的資料集之間的連線。 建立之後,用戶端可以透過和使用內部資料表完全相同的方式,向外部資料表提交查詢。 JOIN 查詢可以將來自外部資料表的資料與內部資料表整合。 如您所見,PolyBase 可以移除不同系統為資料帶來的界限,並使您可以輕鬆地對商務資料進行所需的分析,無論該資料的位置為何。

注意

在 Linux 作業系統上,SQL Server 2019 或更新版本皆支援 PolyBase。 若要加以使用,除了 SQL Server 2019 之外,您也必須安裝 mssql-server-polybase 套件。

機器學習服務

在機器學習中,會使用大型資料集來針對某些複雜系統的行為建立模型。 當模型已開發成能夠準確預測系統所觀察到的行為時,便會將其用來預測系統未來可能的行為。 人們已開發出複雜的程式碼程式庫 (通常為開放原始碼) 以協助準備您的資料集、為其新增功能、將模型定型、評估已定型模型的準確度,以及部署那些模型以供其他用戶端呼叫。 這些程式庫是以 R 與 Python 程式設計語言撰寫的。

SQL Server 機器學習服務可讓您針對自己 SQL Server 資料庫中的資料,執行這些 R 與 Python 指令碼。 您可以新增熱門的機器學習與資料科學架構,包括 PyTorch、TensorFlow、SciKit-Learn 等等。

注意

在 Linux 作業系統上,SQL Server 2019 或更新版本皆支援 SQL Server 機器學習。 若要使用,您必須新增額外的套件。 例如,如果您想要針對所有機器學習程式碼使用 Python,請安裝 mssql-mlservices-mlm-py-9.4.7 套件。 R 的對等套件為 install mssql-mlservices-mlm-r-9.4.7

圖表支援

SQL Server 具有儲存及查詢圖表資料的原生支援。 SQL Server 會將資料儲存為一系列實體 (節點) 及之間的關聯性 (邊緣)。

全文檢索搜尋可讓使用者針對遵守語言學規則的文字資料執行查詢。 例如,當您搜尋 "run" 這個字時,全文檢索搜尋會傳回包含 "run" 一字各種時態的結果,例如 "ran" 和 "running"。

預設不會安裝此功能。 在 Linux 上,您可以透過安裝 mssql-server-fts 套件來加以啟用。

ETL 工作負載

SQL Server Integration Services (SSIS) 套件可以在 Linux 上的 SQL Server 執行。 但不限於僅針對 Linux 上的 SQL Server 執行。 這些套件也可以連線到在 Windows 內部部署或雲端中執行的 Microsoft SQL Server,或是在容器中執行的 SQL Server。

您必須在執行 SQL Server Data Tools 的 Windows 電腦上撰寫和維護 SSIS 套件。

檢定您的知識

1.

Linux 上的 SQL Server 提供哪些功能支援商務持續性?

2.

如果資料使用 Always Encrypted 加密,何時會解密資料?