티스토리 뷰

SQL Azure Federation(페더레이션) (2)

 

이제 SQL Azure Federation을 생성해보도록 하겠습니다. CREATE FEDERATION CREATE TABLE 구문을 통해 생성하게 됩니다. 페더레이션 분할은 ALTER FEDERATION을 통해서 실행됩니다. 구문을 실행하는 방법은 SQL Server Management Studio SQL Azure 데이터베이스 포탈에서 실행할 수 있습니다. 여기서는 SQL Server Management Studio 를 통해서 먼저 살펴보도록 하겠습니다.

페더레이션을 생성하는 단계는 다음과 같습니다.

l  CREATE FEDERATION – 페더레이션 배포 키 생성

l  USE FEDERATION,  CREATE TABLE FEDERATION ON – 페더레이션된 테이블 생성

l  INSERT – 데이터 추가

l  ALTER FEDERATION – SPLIT/MERGE, 페더레이션 멤버 생성

l  USE FEDERATION – 쿼리, 필터링

 

자 아래와 같이 CREATE FEDERATION 구문을 실행해보겠습니다.

CREATE FEDERATION Orders_Federation

 (OrderId INT RANGE)

GO

 

페더레이션 이름은 Orders_Federation 이며 배포 이름은 OrderId 입니다. 지원되는 데이터 타입은 INT, BIGINT, UNIQUEIDENTIFIER 또는 VARBINARY(최대 900바이트) 입니다. RANGE 분할만 현재 지원됩니다.

 

자 생성된 결과는 아래와 같습니다.  카탈로그뷰를 통해서도 액세스 가능합니다.

 

 

페더레이션을 생성하면 전체 범위를 담당하는 첫번째 페더레이션 멤버가 만들어집니다. Master 데이터베이스에서 sys.databases를 통해 확인 가능하며 멤버 데이터베이스 이름은 동적으로 생성됩니다.

 

페더레이션을 생성하고 난 후 페더레이션된 테이블을 생성해보겠습니다. 해당 페더레이션 멤버로 이동하여야 하며 USE FEDERATION 구문을 통해 실행합니다.

 

USE FEDERATION Orders_Federation (OrderID = 1) WITH RESET, FILTERING = OFF

GO

 

CREATE TABLE Orders(

  [PurchaseOrderID] INT NOT NULL ,

  [EmployeeID] INT NOT NULL,

  [VendorID] INT NOT NULL,

  [ShipMethodID] INT,

  [SubTotal] MONEY,

  [ShipDate] DATETIME,

  [OrderDate] DATETIME,

  PRIMARY KEY (PurchaseOrderID) )

FEDERATED ON (OrderID = PurchaseOrderID)

GO

 

CREATE TABLE 문장을 보시면 맨 마지막에 FEDERATED ON 구문을 볼 수 있습니다.

데이터를 INSERT 해보겠습니다.

 

INSERT Orders VALUES ( 1    ,258  ,1580 ,3   ,201.04 ,'20050517' ,'20050526')

INSERT Orders VALUES ( 2    ,254  ,1496 ,5   ,272.10 ,'20050517' ,'20050526')

INSERT Orders VALUES ( 3    ,257  ,1494 ,2   ,8847.30 ,'20050517' ,'20050526')

INSERT Orders VALUES ( 4    ,261  ,1650 ,5   ,171.08 ,'20050517' ,'20050526')

....,

 

현재는 페더레이션 멤버가 하나이기 때문에 추가로 분할을 시켜보도록 하겠습니다. 페더레이션 분할은 ALTER FEDERATION 구문으로 처리하게 됩니다. 분할은 루트에서 실행하게 되므로 아래와 같이 처리합니다.

USE FEDERATION ROOT WITH RESET

GO

 

ALTER FEDERATION Orders_Federation SPLIT AT (OrderID = 3000)

 

처리된 결과는 쿼리 문에서는 아래를 통해 확인이 가능합니다. 3000 번 행은 새로운 페더레이션 멤버에 속하게 됩니다.

 

-- 페더레이션

SELECT * FROM Sys.Federations

GO

 

-- 페더레이션 멤버

SELECT * FROM sys.federation_member_distributions

WHERE federation_id=65537

GO

 

마지막으로 데이터 SELECT 쿼리 문을 통해 확인해보도록 하겠습니다.

 

USE FEDERATION Orders_Federation

 (OrderID = 1) WITH RESET, FILTERING = OFF

GO

 

SELECT * FROM Orders

GO

-- 페더레이션 멤버 결과값으로 1~2999까지의 행이 나타납니다.

 

 

USE FEDERATION Orders_Federation

 (OrderID = 3001) WITH RESET, FILTERING = OFF

GO

 

SELECT * FROM Orders

GO

-- 페더레이션 멤버 결과값으로 3000~4012까지의 행이 나타납니다.

 

 

USE FEDERATION Orders_Federation

 (OrderID = 3001) WITH RESET, FILTERING = ON

GO

 

SELECT * FROM Orders

GO

-- 페더레이션 멤버 결과값으로 3001 행이 나타납니다.

 

 

위에서 살펴보다시피 페더레이션에 대한 내용은 SELECT 쿼리 문도 다르고 또한 CREATE TABLE 구문도 상이합니다. 또한 페더레이션 멤버는 각기 다른 스키마가 있는 개체를 가지고 있을 수 있습니다.

 

간략히 SQL Server Management Studio에서 SQL AzureFEDERATION 생성에 대한 내용을 다루어보았습니다. 다음은 SQL Azure 데이터베이스 포탈에서 확인해보도록 하겠습니다.

 

댓글