書籍転載:Windows Azure Platform開発入門

SQL Azure Federation入門
―― 第4章 SQL Azure 4.15 ――

WINGS プロジェクト 大和屋 貴仁(監修:山田 祥寛)
2012/02/27

本コーナーは、日経BP社発行の書籍『Windows Azure Platform開発入門』の中から、特にInsider.NET読者に有用だと考えられる章や個所をInsider.NET編集部が選び、同社の許可を得て転載したものです。基本的に元の文章をそのまま転載していますが、レイアウト上の理由などで文章の記述を変更している部分(例:「上の図」など)や、図の位置などを本サイトのデザインに合わせている部分が若干ありますので、ご了承ください。『Windows Azure Platform開発入門』の詳細は「目次情報ページ」や日経BP社のサイトをご覧ください。

ご注意:本記事は、書籍の内容を改変することなく、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。

4.15 SQL Azure Federation

 SQL Azure Federation(フェデレーション)は、データベースのオブジェクトでスケールアウトによる無制限のスケーラビリティとコストパフォーマンスに優れた機能です。2011年12月に正式サービスとして提供が始まりました。

 SQL Azure Federationでは、以下のようにしてスケールアウトを実現しています。FederationとFederationを構成するFederation member、Federation memberを構成するAtomic unitがあります。

図4.63 SQL Azure Federationの概要図

 Federationは、テーブルやビューなどのオブジェクトと同じようにユーザーデータベース内に作成します。1つのデータベース内にスケールアウトする必要性に応じて複数のFederationを作成することができます。

 Federationは、スケールアウトするのにSQL Azureデータベースを使用します。データベースには、Federation Memberと呼ばれるFederationデータの一部を格納します。Federation Memberは、動的にデータをパーティションに分割するのに使用します。

 Atomic Unitには、すべてのFederationテーブルのすべての行が格納されます。

4.15.1 SQL Azure Federationの使用手順

 データベースにFederationを作成し、Federationの中にテーブルを作成します。作成したFederationを、複数のFederation Memberに分割します。分割したFederation Memberを1つにまとめるまでの手順を説明します。執筆時点では、GUI操作画面は提供されていないため、T-SQLを発行します。

1 データベースとFederationを作成する

 Saleデータベースを作成し、Saleデータベースに2つのFederationを作成します。データベースとFederationを作成するために、リスト4.11のT-SQLを実行します。

CREATE DATABASE Sale
GO

CREATE FEDERATION CustomerFederation(cid INT RANGE)
GO

CREATE FEDERATION ProductFederation(pid INT RANGE)
GO
リスト4.11 データベースとFederationを作成するT-SQL

 スクリプトを実行すると、SaleデータベースにCustomerFederationとProductFederationの2つのFederationが作成され、図4.64のようになります。

図4.64 データベースと Federationを作成した状態

2 Federationを使用するテーブルを作成する

 CustomerFederationに2つのFederaionを使用するテーブルと1つの普通のテーブルを作成します。

USE FEDERATION CustomerFederationeration(cid = 0) WITH
  FILTERING=OFF, RESET
GO

CREATE TABLE [Customer](
  [ID] [int] NOT NULL,
  [Title] [nvarchar](8) NULL,
  …
  CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED ([ID])
) FEDERATED ON (cid = ID)
GO

CREATE TABLE [CustomerAddress](
  [ID] [int] NOT NULL,
  [CustomerID] [int] NOT NULL
  CONSTRAINT [PK_CustomerAddress] PRIMARY KEY CLUSTERED (
    [CustomerID],[ID])
) FEDERATED ON (cid = CustomerID)
GO

CREATE TABLE [dbo].[PostalCode](
  [ID] [int] NOT NULL,
  [PostalCode] [nvarchar](15) NOT NULL,
  CONSTRAINT [PK_PostalCode] PRIMARY KEY CLUSTERED ([ID])
)
GO
リスト4.12 CustomerFederationにテーブルを作成するT-SQL

 USE FEDERATION句で、CustomerFederationを指定します。指定したFederationにテーブルを作成します。テーブル作成時に、FEDERATED ON句を使用することで、Federationを使用することと、データの分割列を指定します。

 スクリプトを実行すると図4.65のようになります。

図4.65 CustomerFederationにテーブルを作成した状態

3 Federation Memberを分割する

 Federation Memberをcid100で2つに分割します。CustomerFederationには、1つのFederation Memberが含まれています。cid100で分割し、2つのFederation Memberにします。

ALTER FEDERATION CustomerFederation SPLIT AT(cid = 100)
GO
リスト4.13 CustomerFederationを2つのFederation Memberに分割するT-SQL

 スクリプトを実行すると図4.66のようになります。CustomerとCustomerAddressは、cidに指定した列に基づいて2つのFederation Memberに分割されます。PostalCodeはFederationを使用していないので、同じテーブルが2つのFederation Memberにコピーされます。

図4.66 CustomerFederationを 2つの Federation Memberに分割した状態

4 分割したFederation Memberを結合する

 CustomerFederationを1つのFederation Memberに結合します。前の手順で、2つに分割したFederation Memberを1つに統合します。

ALTER FEDERATION CustomerFederation MERGE AT(cid = 100)
GO
リスト4.14 CustomerFederationを1つのFederation Memberに結合するT-SQL

 以上で、Federationの作成、Federation Memberの分割、結合の方法について説明しました。Federation Memberの分割、結合は非同期に処理されるため、オンライン状態のまま実施することができます。格納するデータ量に応じてFederation Memberを随時調整することができます。

 『Windows Azure Platform開発入門』の転載は、今回が最終回です。end of article

インデックス・ページヘ 「Windows Azure Platform開発入門」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間