先日リリースされたSQL Server 2016では,HadoopとAzureのBlobストレージにSQLクエリを使用できるようになる。PolyBaseとして知られるこの技術は以前,SQL Server Parallel Data Warehouseで利用可能だったものだ。
リンクされたサーバと同じように,PolyBaseは可能な限り,ソースデータベース上で処理を行なうようにオフロードしようとする。これによってHadoopあるいはAzure Blobストレージに対してクエリを実行する時に,適切なマップ/リデュース操作を生成することができる。これは“プッシュダウン”と呼ばれる方法だが,開発者の注意が必要な,次のような制限がある。
SQL Serverではプッシュダウン句の操作として,次のような基本的な式と演算が使用可能です。
- 数値,日付,および時刻値のバイナリ比較演算子 (<、>、=、!=、<>、> =、<=) 。
- 算術演算子 (、 - 、*、/、%) 。
- 論理演算子 (AND、OR) 。
- 単項演算子 (NOT,IS NULL,IS NOT NULL)。
ドキュメントには次のような説明がある。
演算子BETWEEN,NOT,IN,LIKEはプッシュダウンされる可能性があります。実際にプッシュダウンされるかどうかは,オプティマイザがこれらを,基本的な関係演算子による一連のステートメントとして,どのように書き換えるかによります。
OPTION (FORCE EXTERNALPUSHDOWN)とOPTION (DISABLE EXTERNALPUSHDOWN)を使用すれば,プッシュダウンを明示的に行なうか,あるいは無効にすることも可能だ。
リレーショナルデータと非リレーショナルデータの組み合わせ
PolyBaseは標準T-SQLに基づいているため,JOINなど通常のオペレーションを使用することもできる。これにより,Hadoopクラスタにマップレデュース操作を実行した結果をSQL Serverデータベースのテーブルに結合する操作を,単一のクエリで実行することが可能になる。
インポート/エクスポート
SQL Server,Hadoop,Azure Blobストレージ間でのデータ移動に,外部のETL(Extract/Transform/Load)プロセスやツールはもはや必要ない。任意の2つの通常テーブル間で,共通のINSERT INTO/SELECT FROM構文が使用できるのだ。開発者の観点からは,HadoopとAzure Blobストレージという,データベースのプロビジョニング時に選択するテーブルタイプが2つ増えたことになる。(ただし運用の立場からは,セキュリティとバックアップを別途管理する必要がある点は変わらない。)
この記事を評価
- 編集者評
- 編集長アクション