SQL Server の PolyBase によるデータ仮想化

適用対象: SQL Server サポートされていません。 Azure SQL データベース Azure Synapse Analytics Analytics Platform System (PDW)

PolyBase は、SQL Server 用のデータ仮想化機能です。

PolyBase とは

PolyBase を使用すると、SQL Server インスタンスにより、クライアント接続ソフトウェアを別途インストールしなくても、SQL Server、Oracle、Teradata、MongoDB、Hadoop クラスター、Cosmos DB、S3 互換オブジェクト ストレージから T-SQL を使用してデータを直接照会できます。 また、汎用 ODBC コネクタを使用して、サードパーティの ODBC ドライバーを使用して追加のプロバイダーに接続することもできます。 PolyBase を使用すると、T-SQL クエリで、外部ソースからのデータを SQL Server のインスタンス内のリレーショナル テーブルに結合できるようになります。

PolyBase 機能を使用したデータの仮想化の主な用途は、データを元の場所と形式で維持されるようにすることです。 SQL Server インスタンスを介して外部データを仮想化し、SQL Server 内の他のテーブルと同じようにクエリを行うことができます。 このプロセスにより、データ移動に必要な ETL プロセスを最小化できます。 このデータ仮想化シナリオは、PolyBase コネクタを使用することによって実現します。

サポートされる SQL 製品とサービス

PolyBase では、次の Microsoft の SQL 製品にこれらと同じ機能を提供します。

  • SQL Server 2016 (13.x) 以降のバージョン (Windows)
  • SQL Server 2019 (15.x) 以降のバージョン (Windows と Linux)
  • SQL Server Analytics Platform System (PDW)
  • Azure Synapse Analytics (専用 SQL プール用)

Note

データ仮想化は、Azure SQL Managed Instance でも利用できます。これは、Azure Data Lake Storage (ADLS) Gen2 と Azure Blob Storage 内のファイルに格納されている外部データへのクエリが対象となります。 詳細については、Azure SQL Managed Instance によるデータ仮想化に関するページを参照してください。

SQL Server 2022 PolyBase の機能強化

SQL Server 2022 (16.x) の新機能 詳細
S3 互換オブジェクト ストレージ SQL Server 2022 (16.x) では、S3 REST API を使用して、新しいコネクタ、S3 互換オブジェクト ストレージが追加されます。 OPENROWSETCREATE EXTERNAL TABLE の両方を使用して、S3 互換オブジェクト ストレージ内のデータ ファイルに対してクエリを実行できます。
PolyBase サービスとは別の一部のコネクタ S3 互換オブジェクト ストレージ コネクタ、ADSL Gen2、Azure Blob Storage は、PolyBase サービスに依存しなくなりました。 Oracle、Teradata、MongoDB、汎用 ODBC との接続をサポートするには、PolyBase サービスを引き続き実行する必要があります。 PolyBase 機能は、引き続き SQL Server インスタンスにインストールする必要があります。
Parquet ファイル形式 PolyBase では、S3 互換オブジェクト ストレージに格納されている Parquet ファイルのデータに対してクエリを実行できるようになりました。 詳細については、PolyBase を使用した S3 互換オブジェクト ストレージ内の Parquet ファイルの仮想化に関するページを参照してください。
デルタ テーブル形式 PolyBase では、S3 互換のオブジェクト ストレージ、Azure Storage Account V2、および Azure Data Lake Storage Gen2 に格納されているデルタ テーブル形式のデータをクエリ (読み取り専用) できるようになりました。 詳細については、「デルタ テーブルを仮想化する」を参照してください。
選択として外部テーブルを作成する (CETAS) PolyBase では、CETAS を使用して外部テーブルを作成し、Transact-SQL SELECT ステートメントの結果を Azure Data Lake Storage Gen2、Azure Storage Account V2、および S3 互換オブジェクト ストレージに並列エクスポートできるようになりました。 詳細については、「CREATE EXTERNAL TABLE AS SELECT (Transact-SQL)」を参照してください。

SQL Server 2022 (16.x) の新機能については、「SQL Server 2022 の新機能」を参照してください

ヒント

SQL Server 2022 (16.x) の PolyBase の機能のチュートリアルについては、「SQL Server 2022 での PolyBase の概要」を参照してください。

PolyBase コネクタ

PolyBase 機能は、次の外部データ ソースへの接続を提供します。

外部データ ソース PolyBase を使用した SQL Server 2016 から 2019 PolyBase を使用した SQL Server 2022 (16.x) APS PDW Azure Synapse Analytics
Oracle、MongoDB、Teradata Read Read いいえ いいえ
汎用 ODBC 読み取り (Windows のみ) 読み取り (Windows のみ) いいえ いいえ
Azure Storage 読み取り/書き込み 読み取り/書き込み 読み取り/書き込み 読み取り/書き込み
Hadoop 読み取り/書き込み いいえ 読み取り/書き込み いいえ
SQL Server Read Read いいえ いいえ
S3 互換オブジェクト ストレージ いいえ 読み取り/書き込み いいえ いいえ
  • SQL Server 2022 (16.x) は Hadoop をサポートしていません。
  • SQL Server 2016 (13.x) では、Hadoop および Azure Blob Storage への接続をサポートする PolyBase が導入されました。
  • SQL Server 2019 (15.x) では、SQL Server、Oracle、Teradata、MongoDB などの追加のコネクタが導入されました。
  • SQL Server 2022 (16.x) では、S3 互換ストレージ コネクタが導入されました。
  • SQL Server 2019 (15.x) の累積的な更新プログラム 19 では、Oracle TNS のサポートが導入されました。
  • SQL Server 2022 (16.x) の累積的な更新プログラム 2 では、Oracle TNS のサポートが導入されました。

外部コネクタの例を次に示します。

* PolyBase は、SQL Server 2019 を通じて、Hortonworks Data Platform (HDP) と Cloudera Distributed Hadoop (CDH) という 2 つの Hadoop プロバイダーをサポートしています。 SQL Server における HDFS Cloudera (CDP) と Hortonworks (HDP) の外部データ ソースのサポートは廃止され、SQL Server 2022 (16.x) には含まれません。 詳細については、「Microsoft SQL Server プラットフォームのビッグ データ オプション」を参照してください。

SQL Server のインスタンスで PolyBase を使用するには:

  1. Windows に PolyBase をインストールするか、Linux に PolyBase をインストールします。
  2. SQL Server 2019 (15.x) 以降では、必要に応じて、sp_configure で PolyBase を有効にします
  3. 外部データ ソースを作成します。
  4. 外部テーブルを作成します。

Azure との統合

下層 の PolyBase のサポートにより、T-SQL クエリでは Azure Blob Storage のデータをインポートおよびエクスポートすることもできます。 さらに、PolyBase によって、Azure Synapse Analytics で Azure Data Lake Store および Azure Blob Storage のデータをインポートおよびエクスポートできるようになります。

PolyBase を使用する理由

PolyBase を使用すると、SQL Server インスタンスのデータを外部データと結合できます。 PolyBase によってデータが外部データ ソースに結合される前に、次のいずれかを実行できます。

  • すべてのデータが 1 つの場所に配置されるように、データの半分を転送します。
  • 両方のデータのソースに対してクエリを実行した後、クライアント レベルでデータを結合および統合するためにカスタムのクエリ ロジックを記述する。

PolyBase を使用すると、Transact-SQL を使用してデータを結合するだけで済みます。

PolyBase を使用するうえで Hadoop 環境に追加のソフトウェアをインストールする必要はありません。 外部データを照会するには、データベース テーブルの照会に使用したのと同じ T-SQL 構文を使用します。 PolyBase が実装する補助的なアクションは、すべて透過的に実行されます。 クエリの作成者には、外部ソースに関する知識が必要ありません。

PolyBase の使用

PolyBase を使用すると、SQL Server で次のシナリオに対応できます。

  • Azure Blob Storage に格納されたデータのクエリを実行する。 Azure Blob Storage は、Azure サービスによって使用されるデータを格納するのに便利な場所です。 PolyBase を使用すると、T-SQL で簡単にデータにアクセスできます。

  • SQL Server インスタンスまたは PDW から Hadoop に格納されているデータのクエリを実行します。 ユーザーは、たとえば Hadoop など、コスト効果の高いスケーラブルな分散システムにデータを格納しています。 PolyBase を使用すると、T-SQL で簡単にデータを照会できます。

  • Hadoop、Azure Blob Storage、Azure Data Lake Store からデータをインポートする。 Hadoop、Azure Blob Storage、または Azure Data Lake Store からリレーショナル テーブルにデータをインポートすることで、Microsoft SQL の高速な列ストア テクノロジおよび分析機能を活用できます。 ETL ツールやインポート ツールを個別に用意する必要はありません。

  • Hadoop、Azure BLOB ストレージ、Azure Data Lake Store にデータをエクスポートする。 データを Hadoop、Azure BLOB ストレージ、Azure Data Lake Store にアーカイブすることで、コスト効果の高いストレージを実現し、アクセスしやすいようにそのストレージをオンライン状態にしておくことができます。

  • BI ツールと統合する。 PolyBase を Microsoft のビジネス インテリジェンスや分析スタックと一緒に使用します。または、SQL Server と互換性のあるサード パーティ ツールを使用します。

パフォーマンス

クエリできるファイル数やデータ量に厳密な制限はありません。 クエリのパフォーマンスは、データ量、データ形式、データの編成方法、およびクエリと結合の複雑さによって異なります。

PolyBase のパフォーマンス ガイダンスと推奨事項の詳細については、「PolyBase for SQL Server のパフォーマンスに関する考慮事項」を参照してください。

SQL Server 2022 へのアップグレード

SQL Server 2022 (16.x) 以降では、Hortonworks Data Platform (HDP) と Cloudera Distributed Hadoop (CDH) はサポートされなくなりました。 これらの変更により、SQL Server 2022 (16.x) に移行する前に、以前のバージョンの SQL Server に作成された TYPE = HADOOP または Azure Storage を使用する PolyBase 外部データ ソースを手動で削除する必要があります。 外部データ ソースを削除するには、データベース スコープの資格情報や外部テーブルなどの関連付けられているデータベース オブジェクトも削除する必要があります。

Azure Storage コネクタは、以下の参照テーブルに基づいて変更する必要があります。

外部データ ソース ソース 終了
Azure Blob Storage wasb[s] abs
ADLS Gen 2 abfs[s] adls

作業の開始

PolyBase を使用する前に、Windows に PolyBase をインストールするか、Linux に PolyBase をインストールし、必要に応じて sp_configure で PolyBase を有効にする必要があります。

PolyBase の機能のチュートリアルについては、「SQL Server 2022 での PolyBase の概要」を参照してください。

さまざまな外部データ ソースに関するチュートリアルについては、以下を参照してください。

他のプラットフォームでのデータ仮想化

データ仮想化機能は、他のプラットフォームでも使用できます。