PolyBase によるデータ仮想化の概要

適用対象: SQL Server サポートなし Azure SQL Database 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

Note

PolyBase 機能を使用したデータ仮想化は、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 互換オブジェクト ストレージが追加されます。 と EXTERNAL TABLES の両方OPENROWSETを使用して、S3 互換オブジェクト ストレージ内のデータ ファイルに対してクエリを実行できます。
PolyBase サービスとは別の一部のコネクタ S3 互換オブジェクト ストレージ コネクタ、ADSL Gen2、Azure Blob Storage は、PolyBase サービスに依存しなくなりました。 Oracle、Teradata、MongoDB、汎用 ODBC との接続をサポートするには、PolyBase サービスを引き続き実行する必要があります。 PolyBase 機能は、引き続き SQL Server インスタンスにインストールする必要があります。
Parquet ファイル形式 PolyBase では、S3 互換オブジェクト ストレージに格納されている Parquet ファイルのデータに対してクエリを実行できるようになりました。 詳細については、PolyBase を使用した S3 互換オブジェクト ストレージ内の Parquet ファイルの仮想化に関するページを参照してください。
Delta テーブルの形式 PolyBase は、S3 互換オブジェクト ストレージ、Azure Storage アカウント V2、およびAzure Data Lake Storage Gen2に格納されている Delta Table 形式のデータに対してクエリ (読み取り専用) できるようになりました。 詳細については、「Delta Table 形式を仮想化する」を参照してください。
Select として外部テーブルを作成する (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 を使用して Azure Storage で CSV ファイルを仮想化する例については、「PolyBase を使用して CSV ファイルを仮想化する」を参照してください。

PolyBase コネクタ

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

外部データ ソース PolyBase を使用した SQL Server 2016 から 2019 SQL Server 2022 (16.x) と PolyBase 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 互換ストレージ コネクタが導入されました。

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

* 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 プラットフォームのビッグ データ オプション」を参照してください。

PolyBase を使用するには SQL Server のインスタンスで次のようにします。

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

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

パフォーマンス

  • Hadoop に計算をプッシュする。 (SQL Server 2016 (13.x)、SQL Server 2017 (14.x)、SQL Server 2019 (15.x) にのみ適用されます)。 PolyBase により、クエリ全体を最適化するために計算の一部が外部ソースにプッシュされます。 クエリ オプティマイザーでは、クエリのパフォーマンスが向上する場合は Hadoop への計算のプッシュを行うためのコスト ベースの決定が行われます。 クエリ オプティマイザーでは、コスト ベースの決定に外部テーブルの統計が使用されます。 計算のプッシュでは、MapReduce ジョブが作成され、Hadoop の分散コンピューティング リソースが活用されます。 詳細については、「PolyBase でのプッシュダウン計算」を参照してください。

  • コンピューティング リソースをスケーリングする。 (SQL Server 2016 (13.x)、SQL Server 2017 (14.x)、SQL Server 2019 (15.x) にのみ適用されます)。 クエリのパフォーマンスを向上させるために、SQL Server PolyBase スケールアウト グループを使用できます。 これにより、SQL Server インスタンスと Hadoop ノードの間の並列データ転送が可能になります。また、外部データに対する操作のためのコンピューティング リソースが追加されます。

重要

Microsoft SQL Server PolyBase スケールアウト グループは廃止されます。 スケールアウト グループ機能は、SQL Server 2022 (16.x) の製品から削除されます。 PolyBase データ仮想化は、SQL Server のスケールアップ機能として引き続き完全にサポートされます。 詳細については、「Microsoft SQL Server プラットフォームのビッグ データ オプション」を参照してください。

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

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

Azure Storage コネクタは、次の参照表に基づいて変更する必要があります。

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

次のステップ

PolyBase を使用する前に、Windows に PolyBase をインストールするか、Linux に PolyBase をインストールし、必要に応じて sp_configure で PolyBase を有効にする必要があります。 さまざまなデータ ソースへの外部データ ソースと外部テーブルの作成に関するその他のチュートリアルについては、「 PolyBase Transact-SQL リファレンス」を参照してください。

さまざまなデータ ソースの外部データ ソースと外部テーブルの例を含む PolyBase Transact-SQL リファレンス を確認します。 その他のチュートリアルについては、次の記事を参照してください。