適用対象: SQL Server 2016 (13.x) 以降のバージョン
PolyBase 対 リンク サーバー
次の表に、PolyBase とリンク サーバーの機能の違いを示します。
| PolyBase | リンク サーバー |
|---|---|
| データベース スコープ オブジェクト | インスタンススコープのオブジェクト |
| ODBC ドライバーを使用します | OLE DBプロバイダーを使用しています |
| すべてのデータ ソースに対する読み取り専用操作と、一部の外部データ ソースへの書き込みをサポートします | 読み取りと書き込み両方の操作をサポートします |
| 単一の接続からのリモート データ ソースに対するクエリをスケールアウトできます | 単一の接続からリモートデータソースへのクエリはスケールアウトできません |
| 述語のプッシュダウンがサポートされています | 述語のプッシュダウンがサポートされています |
| 可用性グループについて個別に構成する必要はありません | 可用性グループの各インスタンスについて個別に構成する必要があります |
| 基本認証のみ | 基本認証および統合認証 |
| 多くの行を処理する分析クエリに適しています | 1 つまたは少数の行を返す OLTP クエリに適しています |
| 外部テーブルを使ったクエリは分散トランザクションに参加できません | 分散クエリが分散トランザクションに参加できます |
SQL Server 2022 の PolyBase の新機能
SQL Server 2022 (16.x) は、Azure Storage アカウント v2、Azure Data Lake Storage Gen2、または S3 REST API を使用する任意の S3 互換オブジェクト ストレージにオンプレミスまたはクラウドで保存された CSV、Parquet、Delta ファイルをサポートしています。
SQL Server 2022(16.x)はCREATE EXTERNAL TABLE AS SELECT(CETAS)をサポートし、OPENROWSET、CREATE EXTERNAL TABLE(CET)、T-SQLの強化機能も含まれます。
SQL Server 2022(16.x)はHadoopの外部データソースをサポートしていません。
SQL Server 2022(16.x)累積アップデート2では、Oracle TNSファイルのサポートが導入されました。 詳細とサンプルについては、 CREATE EXTERNAL DATA SOURCE CONNECTION_OPTIONSを参照してください。
詳細については、「SQL Server 2022のPolyBaseによるデータ仮想化」およびSQL Server 2022のPolyBase拡張機能のレビューをご覧ください。
SQL Server 2019 の PolyBase の新機能
SQL Server 2019(15.x)のPolyBaseは複数のソースからデータを読み取ることができます。 これらの外部データソースからデータをSQL Serverインスタンスの外部テーブルとして保存することができます。 PolyBase により、ODBC ジェネリック型を除くこれらの外部データ ソースへのプッシュ ダウン計算もサポートされます。
互換性のあるデータソース
- SQL Server
- Oracle
- Teradata
- MongoDB
- 互換性のある ODBC ジェネリック型
SQL Server 2019(15.x)累積アップデート19では、Oracle TNSファイルのサポートが導入されました。 詳細とサンプルについては、 CREATE EXTERNAL DATA SOURCE CONNECTION_OPTIONSを参照してください。
Note
PolyBaseはサードパーティのODBCドライバーを使用して外部データソースに接続できます。 PolyBaseにはこれらのドライバーが含まれておらず、意図したように動作しないかもしれません。 詳細については、「ODBC ジェネリック型の外部データにアクセスするための PolyBase の構成」を参照してください。
サード パーティのデータ ソースへの接続にはどのような CONNECTION_OPTIONS を指定できますか?
SQL Server、Oracle、Teradata、Cosmos DBのMongoDB API、汎用ODBCデータプロバイダーのサポートデータプロバイダー接続オプションについて、CREATE EXTERNAL DATA SOURCE CONNECTION_OPTIONSを確認してください。
PolyBase プッシュダウン計算のリモート クエリ実行プランを表示するにはどうすればよいですか?
SQL Serverのバージョンに応じて異なる方法でリモートクエリ実行計画を見ることができます。 詳細については、「 PolyBaseトラブルシューティング - PolyBaseクエリプランを見るため」をご覧ください。
PolyBase プッシュダウン計算が行われているかどうかを確認するにはどうすればよいですか?
詳細については、「外部プッシュダウンが発生した場合の確認方法」を参照してください。
PolyBase は Azure SQL Database でサポートされていますか?
いいえ、OPENROWSET関数を使ってAzure Blob Storageのファイルのデータをクエリしたり、Synapse AnalyticsのサーバーレスSQLプールからCREATE EXTERNAL TABLEを読み取ったりできます。 詳細については、「Synapse SQL 外部テーブルを使用して Azure SQL で Azure Data Lake Storage ファイルの読み取りができます」を参照してください。
Azure SQL Managed Instance で PolyBase はサポートされていますか?
Azure SQL Managed Instance には、データ ソースとして Azure Data Lake Storage (ADLS) と Azure Blob Storage 用の独自のデータ仮想化機能があります。 詳細については、「Azure SQL Managed Instance によるデータ仮想化」を参照してください。
PolyBase のファイアウォールを通過するには、どのポートを許可する必要がありますか?
PolyBase自体は、PolyBaseのスケールアウトグループを使う場合を除き、追加のポートを開く必要はありません。 スケールアウトグループがなければ、PolyBaseサービスにはファイアウォールルールは必要ありません。
Windowsサーバーでは、PolyBaseはSQL Server 構成マネージャーのTCP/IP設定のIPAllセクションでSQL Serverインスタンスが使用するポートを使用します。 詳細については、 TCP/IPプロパティ(IPアドレスタブ)をご覧ください。 Linuxサーバーでは、PolyBaseは network.tcpport 設定を使用しています。 詳しくは、TCP ポート を参照してください。
複数の Windows サーバー上の PolyBase スケールアウト グループについては、次の質問のポート情報を参照してください。
ただし、PolyBaseが使用するさまざまな外部データソースへの通信には、他のポートを許可する必要があります。 ODBC 構成、Azure リソース構成、または特定のデータ ソースのドキュメントを参照してください。 例えば次が挙げられます。
| ソース プラットフォーム | Reference |
|---|---|
| Microsoft SQL Server | SQL Server で使用されるポート |
| ホートンワークスHDP | HDFS の管理 |
| Cloudera CDH | CDH コンポーネントで使用されるポート |
PolyBase スケールアウト グループに使用されるのはどのポートですか?
デフォルトでは、PolyBaseのデータ移動サービスは、TCP 16450-16460(通常は16450-1645)およびポート17001までの幅広いポートを通じてスケールアウトグループのヘッドノードに接続されます。 PolyBaseはこれらのポートをスケールアウトグループの設定時のみ使用するため、サーバーファイアウォール経由で許可しています。 SQL Server Setupは、機能をインストールすると自動的にこれらのポートを許可するローカルファイアウォールルールを作成します。 詳細については、「Windows で PolyBase スケールアウト グループを構成する」を参照してください。
Note
SQL Server PolyBaseのスケールアウトグループはSQL Server 2022(16.x)で削除されました。