SQL Server on Linux の機能

完了

予算所有者に SQL Server 移行を正当化するには、ご利用のシステムに競争上の優位性を提供することができる SQL Server の機能を理解することが役立ちます。

SQL Server on Linux について調査した後に、現在利用可能な機能が、既存および将来のデータ処理に対する Wide World Importers の要件を満たすことを確認したいとします。

ここでは、SQL Server on Linux の主な機能について学習します。

パフォーマンス

SQL Server on Linux では、Hybrid Transactional Analytical Processing (HTAP) ソリューションを提供することで、高速トランザクション スループットの競合するニーズと応答性の高い分析をサポートします。 HTAP では、次のような SQL Server の主要なパフォーマンス テクノロジがいくつか使われています。

インメモリ オンライン トランザクション処理 (OLTP)

メモリ最適化テーブルとコンパイルされたストアド プロシージャを組み合わせることで、Wide World Importers はトランザクション テーブルのパフォーマンス (たとえば、eコマース Web サイトのセッション状態の書き込みと読み取り) を大幅に向上できる可能性があります。

列ストア インデックス

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;

セキュリティ

SQL Server on Linux では、ディスク上、メモリ内、または転送中のデータを保護するため、Always Encrypted、行レベルのセキュリティ、動的データ マスクなどの高度なセキュリティ機能がサポートされています。 これらの機能はすべて、Standard Edition を含むすべてのエディションでサポートされています。

  • Transparent Data Encryption (TDE) により、保存データがデータベース ファイルに格納されるときに暗号化されます。 データは、データベース内とバックアップの両方で悪意のあるユーザーから保護されます。

  • Always Encrypted により、データを所有しているユーザーのみがデータを表示および処理できるようになります。 データベース管理者のように、データを管理するユーザーはデータを表示できません。 Always Encrypted を使用する場合:

    • 暗号化されたデータに対して、最初に復号化することなくクエリを実行できます。
    • データは、保存時、サーバー メモリに移動するとき、およびサーバーから信頼されたクライアント アプリに移動するときに保護されます。
    • 暗号化と暗号化の解除はクライアント ドライバーで行われるため、そのプロセスはクライアント アプリケーションに対して透過的になります。
    • アクセスできるのは信頼されたアプリケーションとデータの所有者のみです。 アプリケーション開発者とデータベース管理者は、列暗号化キー (CEK) にアクセスできません。
  • 監査により、データベース エンジンで発生するイベントと、それらのイベントを実行したユーザーが追跡されます。 監査されたイベントは、イベント ログまたは監査ファイルに格納でき、それらを使用して、攻撃やデータ侵害などの問題を調査できます。

  • 行レベルのセキュリティでは、クエリを実行しているユーザーに基づいて、テーブル内の特定の行へのアクセスを制御します。 たとえば、グループのメンバーシップや実行コンテキストなどによって、だれがデータにアクセスできるのかを制御します。

  • 動的データ マスクでは、データの一部がマスクされます。 4 種類のマスク (列内のすべてのデータのマスク、メール アドレスのマスク、数値データの乱数マスク、カスタム文字列マスク) を使用できます。 たとえば、カスタム文字列マスクを使用して、社会保障番号の最後の 4 桁を除くすべての数字をマスクすることができます。

  • データ検出と分類により、個人データなど、データベース内の機密データが識別、ラベル付け、報告されます。 これは、データのプライバシーに関する法規制を遵守して、最も重要なデータを含むデータベースを強化することを容易にする、SQL Server Management Studio (SSMS) 内のツールです。 データ検出と分類は、Advanced Data Security (ADS) パッケージの一部になっているサービスです。

  • 脆弱性評価により、データベースの脆弱性が識別されます。 使用しているサーバーの構成とデータベースの設計で発生する可能性がある弱点を認識すれば、それらを軽減し、一般的な攻撃を防ぐことができます。 脆弱性評価は、別の ADS サービスです。

SQL Server エージェント

SQL Server エージェントでは、メンテナンス ジョブと、スケジュールされ、自動化されたタスクが実行されます。 SQL Server エージェントでは、次の 3 つのワークロードがサポートされます。

  • Transact-SQL ジョブ
  • DB メール
  • ログ配布

既定では SQL Server エージェントは無効になっていますが、インストールされており、コマンド ライン mssql-conf ユーティリティを使用して有効にすることができます。

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

高可用性

SQL Server では、許容できるフォールト トレランスのレベルをさまざまな方法で指定できます。 SQL Server on Linux では、Always On 可用性グループと、Always On フェールオーバー クラスター インスタンスがサポートされています。 どちらのオプションでも、各サーバーに mssql-server-ha パッケージがインストールされている必要があります。 Linux では Pacemaker 経由のクラスタリングがサポートされています。これは、Windows Server フェールオーバー クラスタリング (WSCF) に相当しますが、ホスト オペレーティング システムに密接に統合されているとは限りません。

許容可能なダウンタイムの柔軟性が高い場合は、SQL Agent を使用したログ配布で、サーバーの損失から復旧するために使用するウォーム スタンバイを提供できます。

SQL Server on Linux のもう 1 つのソリューションは、Kubernetes などのツールで調整されたコンテナー内で実行できることです。 オーケストレーション ツールによって、SQL Server を実行しているノードが常にあることが確実になります。 そのノードで障害が発生すると、別のインスタンスが自動的にブートストラップされます。 より堅牢な可用性が必要な場合は、Always On 可用性グループをコンテナーで実行できます。

その他の注目すべき機能

PolyBase

多くの組織は、さまざまなシステムにデータを保持しています。 その理由として、システムを選択するときにチームごとに要件が異なるため、別の会社と合併したため、または他の何らかの歴史的な理由が考えられます。 従来は、これらのシステム境界を越えてデータを統合し、ユーザーの質問に答えることは困難でした。

製品カタログの売上を記録するデータは SQL Server にあるが、製品を作るためのコストを記録するデータは SAP HANA データベースにあるとします。 利益率を分析するレポートを作成したいとします。 両方のデータベースからの情報が必要になります。 以前は、次のことができました。

  • 抽出、変換、読み込み (ETL) パッケージを使用して、データベース システム間でデータを移行します。
  • 両方のデータベースに対してクエリを実行し、その結果を結合して 1 つのレポートに統合するためのカスタム コードを記述します。

どちらの方法も複雑であり、正しく行うには、かなりの開発時間を必要とする場合があります。

PolyBase を使用すると、SQL Server で外部テーブルを作成できます。 外部テーブルは、外部システムとそこでホストされているデータ セットへの接続です。 作成後、クライアントから外部テーブルに、内部テーブルとまったく同じ方法でクエリを送信できます。 JOIN クエリでは、外部テーブルのデータを内部テーブルと統合できます。 このように、PolyBase を使用すると、さまざまなシステムがデータに対して適用する境界を削除し、場所に関係なくビジネス データに対して必要な分析を簡単に行うことができます。

Note

Linux オペレーティング システムでは、PolyBase は SQL Server 2019 以降でサポートされています。 これを使用するには、SQL Server 2019 に加えて、mssql-server-polybase パッケージをインストールする必要があります。

Machine Learning Services

機械学習では、大規模なデータセットを使用して複雑なシステムの動作をモデル化します。 システムの観察された動作を正確に予測するモデルを開発し終えたら、そのモデルを使用して、そのシステムが将来どのように動作するかを予測します。 データセットを準備して機能を追加することや、モデルをトレーニングし、トレーニングしたモデルの精度を評価して、他のクライアントが呼び出すためのモデルを配置することができる、洗練されたコード ライブラリ (多くの場合オープン ソース) が開発されています。 これらのライブラリは、R 言語と Python 言語で記述されています。

SQL Server Machine Learning Services を使用すると、SQL Server データベース内のデータに対して、これらの R および Python スクリプトを実行できます。 PyTorch、TensorFlow、Scikit-Learn などの一般的な機械学習とデータ サイエンス フレームワークを追加できます。

Note

Linux オペレーティング システムでは、SQL Server Machine Learning は SQL Server 2019 以降でサポートされています。 使用するには、別のパッケージを追加する必要があります。 たとえば、すべての機械学習コードに Python を使用する場合は、mssql-mlservices-mlm-py-9.4.7 パッケージをインストールします。 R 用の相当するパッケージは install mssql-mlservices-mlm-r-9.4.7 です。

グラフのサポート

SQL Server では、グラフベースのデータの格納とクエリがネイティブでサポートされます。 SQL Server では、データが一連のエンティティ (ノード) とその間のリレーションシップ (エッジ) として格納されます。

フルテキスト検索を使用すると、ユーザーはテキスト データに対して言語学の規則に則ったクエリを実行できます。 たとえば、"run" という語を検索すると、フルテキスト検索では、"ran" や "running" といった、"run" の語形を含む結果が返されます。

既定では、この機能はインストールされません。 Linux では、mssql-server-fts パッケージをインストールして有効にします。

ETL ワークロード

SQL Server Integration Services (SSIS) パッケージは SQL Server on Linux で実行できます。 これらは SQL Server on Linux に対しての実行に限定されていません。 これらのパッケージは、オンプレミスまたはクラウドの Windows 上で実行されている Microsoft SQL Server、またはコンテナー内で実行されている SQL Server にも接続できます。

SSIS パッケージは、SQL Server Data Tools を実行している Windows マシンで作成して管理する必要があります。

自分の知識をチェックする

1.

ビジネス継続性をサポートするため、SQL Server on Linux ではどのような機能が提供されていますか?

2.

Always Encrypted を使用してデータが暗号化される場合、データが復号化されるのはいつですか?