Azure SQL Database で複数データベースにまたがるクエリ発行
Azure SQL Database で、elastic database query でいくつかの改善が発表されました。
今回の改善により、Azure SQL Database の elastic database quey は、垂直分割も水平分割も同じコンセプトで、同一表面上で実現できるようになりました。
- データベースをまたがったクエリのサポート改善
- Elastic Query がStandardとPremiumパフォーマンス帯で提供開始
- リモートデータベースのテーブル名やスキーマ名にエイリアスを設定できるようになった
- リモートテーブル参照時に、T-SQLパラメーターを含んだクエリ性能が改善
- リモートテーブルから多くの行を参照するクエリの性能改善
- sp_execute_fanoutプロシージャーでのパラメーターサポート
複数データベースへのクエリ発行
ローカルのテーブルとリモートのテーブルを結合して参照するクエリに対応しています。
複数のデータベースを参照して、データを参照する次の図のような構成も可能になりました。
従来から、Elastic Query が対応していた水平パーティ初認具のサポートも継続しています。
リモートテーブルへのクエリ発行方法
リモートにあるテーブルを参照する方法として、外部データソースを経由して指定します。
イメージ的には、リンクテーブルと同じような感じですね。
外部データソースの作成にはDDLを使用し、一つのデータベースのみを指定します。
CREATE EXTERNAL DATA SOURCE RemoteReferenceData
WITH
(
TYPE=RDBMS,
LOCATION=’myserver.database.windows.net’,
DATABASE_NAME=’ReferenceData’,
CREDENTIAL= SqlUser
);
リモートテーブルは外部テーブルで定義します。外部テーブルの定義には、外部データソースを指定します。
CREATE EXTERNAL TABLE [dbo].[zipcode](
[zc_id] int NOT NULL,
[zc_cityname] nvarchar(256) NULL,
[zc_zipcode] nvarchar(20) NOT NULL,
[zc_country] nvarchar(5) NOT NULL
)
WITH
(
DATA_SOURCE = RemoteReferenceData
);
外部テーブルは、すべての読み取り専用のクエリを発行することができます。