このトピックはまだ評価されていません - このトピックを評価する

Windows Azure SQL データベースでフェデレーションを作成する方法

フェデレーションが含まれる SQL データベースは、行方向のパーティション分割を使用してアプリケーションのデータベース層のスケーラビリティとパフォーマンスを向上させるための 1 つの手段です。フェデレーションが含まれるデータベース内の 1 つ以上のテーブルは行によって分割され、"フェデレーション メンバー" と呼ばれる複数のデータベース間でパーティション分割されます。フェデレーションは、フェデレーション ディストリビューション スキーム (つまり "フェデレーション スキーム") により定義されます。フェデレーション スキームは、フェデレーション内のパーティションに対するデータの分布を決める "フェデレーション ディストリビューション キー" を定義します。フェデレーションの詳細については、「Windows Azure SQL データベースでのフェデレーション (以前の SQL Azure)」を参照してください。

管理者は、"Windows Azure Platform Management Portal" または SQL Server Management Studio を使用し、フェデレーションを作成して関連する操作を実行できます。

フェデレーション ルート データベースを作成する

フェデレーション ルートとは、フェデレーション オブジェクトを格納し、スケール アウトされたデータのディストリビューションに関する中央リポジトリであるデータベースの論理名のことです。フェデレーション ルート データベースを作成するには、まず SQL データベース サーバーの master データベースに接続した後、CREATE DATABASE (Windows Azure SQL データベース) T-SQL ステートメントを実行します。

-- Create federation root database
CREATE DATABASE [database_name] 


フェデレーションおよびフェデレーション スキーマを作成する

フェデレーションは、任意のデータベースで作成できます。データベースには、多数のフェデレーションを格納できます。フェデレーション スキーマを作成するには、まずフェデレーション ルート データベースに接続した後、CREATE FEDERATION (Windows Azure SQL データベース) T-SQL ステートメントを実行します。

-- Create federation scheme
CREATE FEDERATION federation_name (distribution_name <data_type> RANGE)


フェデレーション ディストリビューション キーは、INT、BIGINT、UNIQUEIDENTIFIER、または VARBINARY (最大 900 バイト) である必要があり、範囲値を指定します。フェデレーションには、1 つのフェデレーション スキームと 1 つのフェデレーション ディストリビューション キーのみ存在できます。

フェデレーションに接続する

フェデレーションにテーブルを作成したり、読み書き操作を実行するには、まずフェデレーション メンバーに接続する必要があります。フェデレーションに接続する T-SQL ステートメントは、USE FEDERATION (Windows Azure SQL データベース) です。

フェデレーション ルートに接続するには、まずフェデレーション ルート データベースに接続した後、次のステートメントを使用します。

USE FEDERATION ROOT WITH RESET

フェデレーション メンバーに接続するには、まずフェデレーション ルート データベースに接続した後、次のステートメントも使用します。

USE FEDERATION federation_name (distribution_name = value)
    WITH FILTERING={ON|OFF}, RESET

フェデレーション テーブルを作成する

CREATE TABLE (Windows Azure SQL データベース) ステートメントの FEDERATED ON 句は、SQL データベース フェデレーション内にテーブルをフェデレーション テーブルとして作成し、フェデレーションのディストリビューション制約 (distribution_name) をテーブル内の指定されたフェデレーション列 (column_name) に適用します。

-- Route connection to federation member
USE FEDERATION federation_name(distribution_name = value) WITH RESET, FILTERING={ON|OFF}
GO
CREATE TABLE 
    [ schema_name . ] table_ame 
        ( { <column_definition> | <computed_column_definition> }
        [ < table_constraint> ] [ ,...n ] ) 
FEDERATED ON (distribution_name = column_name)
GO

フェデレーション メタデータ テーブルを表示する

フェデレーション ルート データベースに接続した後、フェデレーション ルート メタデータを取得するには、次のステートメントを使用します。

-- Route connection to federation root
USE FEDERATION ROOT WITH RESET
GO
-- View the Federation Root metadata
SELECT db_name() [db_name]
SELECT * FROM sys.federations
SELECT * FROM sys.federation_distributions
SELECT * FROM sys.federation_member_distributions ORDER BY federation_id, range_low;
GO

フェデレーション分割操作を実行する

データベースがそのサイズ制限に達した場合や、パフォーマンスを向上させる場合、ALTER FEDERATION (Windows Azure SQL データベース) ステートメントを使用してフェデレーションを分割できます。

--Perform the federation SPLIT operation
USE FEDERATION ROOT WITH RESET
GO
ALTER FEDERATION federation_name SPLIT AT (boundery_value)
GO

次のコード例では、フェデレーションが含まれるデータベースを作成する手順を示します。

まず、マスター データベースに接続した後、次の T-SQL を使用してフェデレーション ルート データベースを作成します。


-- Create Federation Root
CREATE DATABASE [AdventureWorks] 
GO


次に、フェデレーション ルート データベースに接続した後、次の T-SQL ステートメントを使用してフェデレーション スキームを作成し、テスト データをいくらか挿入します。

-- Create Federation scheme
CREATE FEDERATION CustomerFederation(cid BIGINT RANGE)
GO

-- Route connection to the one Federation Member
USE FEDERATION CustomerFederation(cid=100) WITH RESET, FILTERING=OFF
GO
-- Table [dbo].[Customer]
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Customer](
[CustomerID] [bigint] NOT NULL,
[Title] [nvarchar](8) NULL,
[FirstName] [nvarchar](50) NOT NULL,
[MiddleName] [nvarchar](50) NULL,
[LastName] [nvarchar](50) NOT NULL,
[Suffix] [nvarchar](10) NULL,
[CompanyName] [nvarchar](128) NULL,
[SalesPerson] [nvarchar](256) NULL,
[EmailAddress] [nvarchar](50) NULL,
[Phone] [nvarchar](25) NULL,
 CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED 
(
[CustomerID] ASC
) 
)FEDERATED ON (cid=CustomerID)
GO

-- Route connection to the Federation Member
USE FEDERATION CustomerFederation(cid=100) WITH RESET, FILTERING=OFF
GO
-- Insert data
INSERT INTO [dbo].[Customer]
           ([CustomerID]
           ,[Title]
           ,[FirstName]
           ,[MiddleName]
           ,[LastName]
           ,[Suffix]
           ,[CompanyName]
           ,[SalesPerson]
           ,[EmailAddress]
           ,[Phone])
     VALUES
(56, 'Mr.', 'Brian', '', 'Groth', '', 'Latest Accessories Sales', 'adventure-works\david8', 'brian5@adventure-works.com', '461-555-0118'),
(57, 'Ms.', 'Judy', 'R.', 'Lundahl', '', 'Leading Sales & Repair', 'adventure-works\jillian0', 'judy1@adventure-works.com', '260-555-0130'),
(58, 'Mr.', 'Peter', '', 'Kurniawan', '', 'Largest Bike Store', 'adventure-works\jillian0', 'peter4@adventure-works.com', '436-555-0160'),
(59, 'Mr.', 'Douglas', '', 'Groncki', '', 'Locks Company', 'adventure-works\shu0', 'douglas2@adventure-works.com', '385-555-0140'),
(60, 'Mr.', 'Sean', 'J.', 'Lunt', '', 'Main Bicycle Services', 'adventure-works\linda3', 'sean4@adventure-works.com', '183-555-0111'),
(61, 'Mr.', 'Jeffrey', '', 'Kurtz', '', 'Many Bikes Store', 'adventure-works\shu0', 'jeffrey3@adventure-works.com', '452-555-0179'),
(64, 'Mr.', 'Vamsi', '', 'Kuppa', '', 'Metal Clearing House', 'adventure-works\jos‚1', 'vamsi1@adventure-works.com', '290-555-0196'),
(65, 'Ms.', 'Jane', 'P.', 'Greer', '', 'Metro Manufacturing', 'adventure-works\jos‚1', 'jane2@adventure-works.com', '737-555-0163'),
(66, 'Mr.', 'Alexander', 'J.', 'Deborde', '', 'Neighborhood Store', 'adventure-works\garrett1', 'alexander1@adventure-works.com', '394-555-0176'),
(70, 'Mr.', 'Deepak', '', 'Kumar', '', 'Outdoor Aerobic Systems Company', 'adventure-works\jae0', 'deepak0@adventure-works.com', '1 (11) 500 555-0122'),
(73, 'Ms.', 'Margaret', 'T.', 'Krupka', '', 'Outdoor Sports Supply', 'adventure-works\pamela0', 'margaret1@adventure-works.com', '107-555-0132'),
(74, 'Mr.', 'Christopher', 'M.', 'Bright', '', 'Parcel Express Delivery Service', 'adventure-works\david8', 'christopher2@adventure-works.com', '162-555-0166'),
(75, 'Ms.', 'Aidan', '', 'Delaney', '', 'Paint Supply', 'adventure-works\jillian0', 'aidan0@adventure-works.com', '358-555-0188'),
(76, 'Mr.', 'James', 'J.', 'Krow', '', 'Out-of-the-Way Hotels', 'adventure-works\jillian0', 'james11@adventure-works.com', '265-555-0190'),
(77, 'Mr.', 'Michael', '', 'Brundage', '', 'Mechanical Products Ltd.', 'adventure-works\shu0', 'michael13@adventure-works.com', '128-555-0148'),
(78, 'Mr.', 'Stefan', '', 'Delmarco', '', 'Preferred Bikes', 'adventure-works\linda3', 'stefan0@adventure-works.com', '819-555-0186'),
(79, 'Mr.', 'Mitch', '', 'Kennedy', '', 'Reasonable Bicycle Sales', 'adventure-works\shu0', 'mitch0@adventure-works.com', '996-555-0192'),
(82, 'Mr.', 'James', 'D.', 'Kramer', '', 'Refined Department Stores', 'adventure-works\jos‚1', 'james10@adventure-works.com', '814-555-0130'),
(83, 'Mr.', 'Eric', 'J.', 'Brumfield', '', 'Requisite Part Supply', 'adventure-works\jos‚1', 'eric3@adventure-works.com', '644-555-0114'),
(84, 'Ms.', 'Della', 'F.', 'Demott Jr', '', 'Rewarding Activities Company', 'adventure-works\garrett1', 'della0@adventure-works.com', '752-555-0185'),
(88, 'Ms.', 'Pamala', 'M.', 'Kotc', '', 'Closest Bicycle Store', 'adventure-works\jae0', 'pamala0@adventure-works.com', '1 (11) 500 555-0173'),
(91, 'Ms.', 'Joy', 'R.', 'Koski', '', 'Scooters and Bikes Store', 'adventure-works\pamela0', 'joy0@adventure-works.com', '810-555-0198'),
(92, 'Ms.', 'Jovita', 'A.', 'Carmody', '', 'Sports Commodities', 'adventure-works\david8', 'jovita0@adventure-works.com', '646-555-0137'),
(93, 'Mr.', 'Prashanth', '', 'Desai', '', 'Stationary Bikes and Stands', 'adventure-works\jillian0', 'prashanth0@adventure-works.com', '138-555-0156'),
(94, 'Mr.', 'Scott', '', 'Konersmann', '', 'Specialty Sports Store', 'adventure-works\jillian0', 'scott6@adventure-works.com', '556-555-0192'),
(96, 'Ms.', 'Jane', 'N.', 'Carmichael', '', 'Rural Department Store', 'adventure-works\shu0', 'jane0@adventure-works.com', '716-555-0167'),
(97, 'Ms.', 'Bonnie', 'B.', 'Lepro', '', 'More Bikes!', 'adventure-works\linda3', 'bonnie2@adventure-works.com', '354-555-0130'),
(99, 'Mr.', 'Eugene', '', 'Kogan', '', 'Mountain Bike Center', 'adventure-works\shu0', 'eugene2@adventure-works.com', '136-555-0134'),
(100, 'Mr.', 'Kirk', 'T', 'King', '', 'Up-To-Date Sports', 'adventure-works\jos‚1', 'kirk2@adventure-works.com', '979-555-0163');

GO


次の T-SQL ステートメントを使用して分割操作を実行します。


--Perform Federations SPLIT operation
USE FEDERATION ROOT WITH RESET
GO
ALTER FEDERATION CustomerFederation SPLIT AT (cid=80)
GO

参照

この情報は役に立ちましたか。
(残り 1500 文字)

コミュニティの追加

追加
© 2013 Microsoft. All rights reserved.
facebook page visit twitter rss feed newsletter