エクスポート (0) 印刷
すべて展開

データベース フェデレーションの開発に関する注意事項 (Azure SQL データベース)

更新日: 2015年1月

フェデレーションを使用したソリューションの開発には Azure SQL データベース開発に関する考慮事項 で説明されている事項のほかに、追加の注意事項があります。フェデレーションを使用した開発に固有の情報を下記に示します。

Important重要
フェデレーションの現在の実装は、Web およびビジネス サービス層で廃止される予定です。Azure SQL Database でシャーディングされたスケールアウト ソリューションを構築するには、Elastic Scale for Azure SQL Database の使用を検討してください。この機能を試すには、「Azure SQL Database Elastic Scale Preview の概要」を参照してください。

一般的なフェデレーションは、SQL データベースの物理データベースとして実装される、多くの個々のフェデレーション メンバー データベースで構成されます。こうした物理データベースのいずれかに直接接続することもできますが、この接続方法は、主にフェデレーションに対応していないツールでのみ使用することをお勧めします。ほとんどのアプリケーションで、USE FEDERATION (SQL Database) を使用してフェデレーションへの接続を確立した方がはるかに便利です。USE FEDERATION ステートメントを使用すると、基礎となる物理データベースに関する理解が必要ないうえ、要求されたデータを含むフェデレーション メンバーに接続が自動的にルーティングされます。

USE FEDERATION ステートメントはフェデレーション キーの値を受け取ります。この値は、値に関連付けられたデータを含むフェデレーション メンバーに接続をルーティングするために SQL データベースによって使用されます。たとえば、データが customer_id でフェデレーションされ、100 のフェデレーション キーを指定した場合、customer_id=100 のフェデレーション テーブル行を含むフェデレーション メンバーに接続されます。

正しいフェデレーション メンバーに単に接続するだけでなく、USE FEDERATION ステートメントを使用すると、指定したフェデレーション キーの値に完全に一致するレコードのみへの接続をフィルターで選択することができます。前の例では、FILTER=ON 句が指定されると、customer_id=100 に関連付けられた行のみが接続によって返されます。これは、フェデレーション テーブルを参照するすべてのクエリのフェデレーションされた列上の述語 (federated_column=value) を追加するクエリ プロセッサによって行われます。

FILTER=OFF 句を指定した場合も、接続は指定された値を含むフェデレーション メンバーに対して確立されますが、クエリ操作で、フェデレーション メンバー内に格納された全範囲の値にアクセスできるようになります。たとえば、フェデレーション メンバーが customer_id の 0 ~ 200 の範囲を扱う場合、USE FEDERATION ステートメントで customer_id=100 を指定しても、その範囲内のすべてのレコードにアクセスできます。

接続の非フィルター選択は、メンバーに保存されたすべての行に影響を及ぼす操作 (スキーマの変更など) や、一括挿入などの一括操作を行う場合に便利です。

フェデレーション内の複数の物理データベース間でのデータの分布は、アプリケーション レベルで追加の要件を導入します。Microsoft Azure SQL データベースは、複数のデータベース間での分散クエリをサポートしないため、アプリケーション内にこれらの操作を実行するためのロジックを実装する必要があります。たとえば、フェデレーション テーブルから * の選択を実行するには、次の手順に従います。

  1. フェデレーション キーが扱う範囲の下限の値を使用してフェデレーションに接続します。例: USE FEDERATION customerfederation (customer_id=1) WITH RESET, FILTERING=OFF

  2. * を選択してこのフェデレーション メンバーに含まれるフェデレーション テーブル行を取得し、メモリ内に結果を保存します。

  3. sys.federation_member_distributions (SQL Database) にクエリを実行して、次のフェデレーション メンバーの範囲の下限の値を決定します。

  4. 範囲の下限の値を使用してフェデレーションに接続します。例: USE FEDERATION customerfederation (customer_id=100) WITH RESET, FILTERING=OFF

  5. * を選択してこのフェデレーション メンバーに含まれる行を取得し、上のクエリの結果と共に保存します。

  6. フェデレーション キーの値として使用されている現在の値より高い範囲の下限の値を持つ sys.federation_member_distributions にエントリがなくなるまで、手順 3. から 手順 5. を繰り返します。

個々のメンバーにクエリを実行するプロセスは並行して実行できます。これにより、データを集計して、それをアプリケーション ユーザーに返すために必要な時間を削減できます。

関連項目

表示:
© 2015 Microsoft