블로그 이미지
정홍주
Azure에 대한 내용뿐만 아니라 새로운 트렌드로 빅데이터, BI, SharePoint, 앱 등의 내용을 다룹니다.

calendar

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

Notice

2012.07.07 12:17 Microsft Azure/SQL Databases

 

SQL Azure Federation – 페더레이션 (5), Federation DROP

 

현재 SQL Azure 데이터베이스의 Orders 테이블은 아래와 같이 3개의 멤버 구성원을 가지고 있습니다.

LOW~2999, 3000~5999, 6000~HIGH 로 구성되어 있습니다.

 

SPLIT, 분할의 경우는 쿼리문을 통해서 할 수 도 있지만 위 그림에서처럼 SPLIT 메뉴를 클릭해서 손쉽게 분할 할 수 있습니다. 데이터가 한쪽에만 몰린다거나 했을 경우 분할 할 수 있습니다. 

현재 3000~5999의 데이터는 아래와 같이 입력되어 있습니다.

 

6000~HIGH 의 데이터는 아래와 같습니다  

멤버 데이터가 얼마 되지 않으므로 3000~5999, 6000~HIGH의 데이터를 3000~HIGH로 변경해보려고 합니다. 6000~HIGH의 데이터를 왼쪽으로 옮기려고 합니다. 3000~5999의 데이터는 삭제해보겠습니다.

Federation Drop 구문은 아래와 같습니다.

ALTER FEDERATION <FederationName>

DROP AT ([LOW|HIGH] <DistributionKeyName> = <value>) 

ALTER FEDERATION [Orders_Federation]  DROP AT(LOW [OrderID] =6000)을 실행하면 다음이 수행됩니다.

-3000~5999 사이의 모든 데이터가 DROP 됩니다.

-3000~HIGH 범위를 담당합니다. 

ALTER FEDERATION [Orders_Federation]  DROP AT(HIGH [OrderID] =6000)을 실행하면 다음이 수행됩니다.

-6000~HIGH 사이의 모든 데이터가 DROP 됩니다.

-3000~HIGH 범위를 담당합니다. 

3000이라는 KEY 값을 가지는 멤버를 삭제할 것이기 때문에 쿼리 문은 아래와 같습니다.

ALTER FEDERATION [Orders_Federation]
DROP AT (LOW  [OrderID] = 6000)
 

위 쿼리문은 멤버 데이터베이스에서 실행하면 안되고 루트에서 아래와 같이 실행했습니다.

 

삭제되는 과정은 비동기적으로 발생하게 되며 현재 작업이 완료되기 전에는 ALTER FEDERATION 구문이 실행되지 않습니다. 현재 작업에 대한 상태를 보는 구문은 아래와 같습니다.

SELECT ops.percent_complete
FROM sys.dm_federation_operations ops

 JOIN sys.federations fed on ops.federation_id = fed.federation_id

 WHERE fed.name = 'Orders_Federation'

 

Federation DROP의 결과와 데이터는 아래와 같이 구성됩니다.

 

ALTER Federation 구문에 대한 내용은 아래를 참고하십시오.

http://msdn.microsoft.com/ko-kr/library/windowsazure/hh597475.aspx 

 

Merge의 경우는 현재 구문에서는 지원되고 있지 않지만 SQL Azure Migration Wizard로 구성할 수 있습니다.

다음 글에서 알아보도록 하겠습니다.

 

 

신고

'Microsft Azure > SQL Databases' 카테고리의 다른 글

NewSQL  (1) 2012.08.13
SQL Azure Migration Wizard  (0) 2012.07.09
SQL Azure Federarion- 페더레이션 (5)  (0) 2012.07.07
SQL Azure Federarion- 페더레이션 (4)  (0) 2012.05.25
SQL Azure Federarion- 페더레이션 (3)  (0) 2012.05.18
SQL Azure 100MB 옵션  (0) 2012.05.15
posted by 정홍주
2012.05.25 17:52 Microsft Azure/SQL Databases

 

SQL Azure Federation (4)

 

SQL Azure Database Portal 에서 Federationhttp://redju.tistory.com/166 에서와 같은 내용으로 생성해보도록 하겠습니다.

 

1.     Federation을 생성합니다.

2.     테이블 생성 쿼리에 Federation을 추가하여 쿼리를 실행합니다.

3.     데이터를 적절한 Federation 멤버에 인서트 합니다.

4.     Federation 결과를 확인하고 모니터링하면서 필요에 따라 SPLITMERGE 를 실행합니다.

 

아래 그림의 경우처럼 해당 데이터베이스를 클릭하고 Summary를 통해 상단의 New Federation 메뉴를 클릭합니다.
 

New Federation 메뉴에서는 Name, Distribution Name을 입력합니다. Data Type bigint 로 선택합니다
 

생성된 것을 확인할 수 있습니다.

 

위 그림의 Orders_Federation의 오른쪽 화살표 아이콘을 클릭하여 Federation Member로 이동합니다. 현재는 Member가 하나이며 클릭시 Query 메뉴에서 Create Federated Table 메뉴를 볼 수 있습니다.
 

Create Federated Table 메뉴를 클릭하여 페더레이션 테이블을 생성합니다.

 

실제 테이블 생성 구문은 아래처럼 입력합니다. 맨 마지막에 FEDERATED ON 구문이 들어갑니다.
 

나중에 SPLIT을 하기 위해 데이터를 입력하는 쿼리를 실행합니다.
 

왼쪽의 AdventureWorks2012_Fed 메뉴를 클릭하여 다시 4 번째 그림으로 이동합니다. LOW 를 클릭하여 Split Federation Member 를 클릭하여 분할 값을 지정합니다. 여기서는 3000으로 지정합니다
 

또는 Split 메뉴를 통해서 분할 값을 입력해도 됩니다.

분할이 진행 중이며 왼쪽의 AdventureWorks2012_Fed 메뉴를 클릭하면 아래와 같은 그림을 살펴볼 수 있습니다.
 

위 그림에서 2 개의 Federation Member 를 확인 가능하며 데이터베이스가 2 개므로 요금이 과금됩니다. 분할된 내용은 LOW~3000, 3000~HIGH 로 구분됩니다. 필요하다면 더 분할 가능합니다. 분할된 내용이 필요없을 경우 병합도 가능합니다만 DROP를 시킬수 있고 데이터의 병합은 쿼리 문으로는 지원되고 있지는 않고 다른 방법으로만 가능합니다.

3000..HIGH 에 대한 내용의 Query 메뉴를 통해 Orders 테이블을 SELECT 하면 현재 값이 없다는 것을 확인이 가능합니다.

해당 Federation Member 에 대한 쿼리를 하려면 위 그림처럼 USE FEDERATION 구문을 통해 처리합니다.

 USE FEDERATION [Orders_Federation] ([OrderID] = 3000) WITH FILTERING = OFF, RESET

GO

 

위 멤버에서 3000 이라고 하는데 2999, 3000, 3001을 입력하면 어떻게 될까요? 2999는 실패하게 됩니다.

 

여기에서는 SQL Azure Database Portal 을 통해 SQL Azure Federation 을 통해 Federation을 생성하고 Federated 테이블을 생성하고 INSERT, SELECT 를 실행하고 SPLIT 을 통해 멤버로 분할되는 것을 알아보았습니다.

분할된 내용을 병합하는 것은 별도로 다루어보도록 하겠습니다.

신고
posted by 정홍주
2012.05.18 07:41 Microsft Azure/SQL Databases

 

SQL Azure Federation -페더레이션 (3)

 

앞에서 SSMS에서 쿼리문을 통한 SQL Federation(http://redju.tistory.com/166)을 살펴보았는데 이번에는 SQL Database Manage Portal 를 통해서 SQL Federation 에 대한 내용을 알아보겠습니다. 다음에서 설정하는 부분에 대한 접근을 해보도록 하겠습니다.

 

SQL Database Manage Portal 에 로그인을 합니다.

 

이미 SQL Federation이 만들어져 있을 경우 SQL Database Manage Portal 에 로그인을 하면 아래와 같이 나타납니다.

 

Databases with Federations 라는 곳을 통해 Federation Root를 살펴볼 수 있습니다.

FederationSQL Database Manage Portal 를 통해 생성할 경우는 해당 데이터베이스 위에 마우스를 가져가면 Summary 링크를 볼 수 있습니다. 링크를 클릭합니다.

 

그러면 아래 그림처럼 오른쪽 상단에서 Federation 메뉴가 활성화 되는 것을 확인할 수 있습니다.

 

New Federation 메뉴를 클릭하면 아래와 같은 화면을 볼 수 있습니다.

 

위 그림과 같은 쿼리는 아래와 같습니다.

CREATE FEDERATION Orders_Federation

(OrderId INT RANGE)

GO

 

위와 같은 쿼리로 진행되는 것은 다음 글에서 다루어보도록 하겠습니다.

 

Federation 이 생성된 경우의 데이터베이스의 Summary 페이지 경우는 아래와 같이 나타납니다.

 

위 그림에 보는 데이터는 Federation Root 이며 오른쪽 Federation -> 아이콘을 클릭해봅니다.

Orders_Federation 같은 경우는 Federation Member 2개라는 것을 확인할 수 있으며 Federation Member SQL Azure Database 이며 요금에 과금이 되는 내용입니다. LOW 3000까지의 값을 가지고 있는 Member를 클릭하고 있습니다.

 

검정색 테두리를 클릭하면 아래와 같은 메뉴를 확인할 수 있습니다.

Query 메뉴를 통해서 바로 쿼리해도 되고 Split 메뉴를 통해서 다시 Member 를 분할 할 수 도 있습니다. 병합은 쿼리문을 통해서 진행 가능합니다. Resize 메뉴를 통해서 데이터베이스 사이즈를 변경할 수 도 있습니다.

 

 

View Summary 메뉴를 통해서 더 구체적인 정보를 확인할 수 있습니다. Root의 경우는 2월에 생성한 데이터베이스이며 Member의 경우는 5월에 생성한 데이터베이스라는 것을 확인할 수 있습니다.

 

 

쿼리 문을 통해 위와 같이 구성하는 것을 다음 글에서 알아보도록 하겠습니다.

 

신고
posted by 정홍주
2012.05.11 12:00 Microsft Azure/SQL Databases

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 데이터베이스 포탈에서 확인해보도록 하겠습니다.

 

신고
posted by 정홍주
2012.05.04 07:05 Microsft Azure/SQL Databases

 

SQL Azure Federation(페더레이션)

SQL Azure의 경우 150GB Business Edition을 제공하고 있습니다. 하지만 150GB 이상 데이터를 처리하려면 어떻게 해야 할까라는 의문이 생깁니다. 150GB 데이터베이스를 여러 개 작성해서 이를 응용 프로그램에서 핸들링하기에는 사실 너무 무리가 많습니다.

On-Premise 에서는 분할 테이블이나 분할 뷰를 통해 여러 서버에 데이터를 분산하여 확장성과 성능을 도모하곤 했었습니다.

클라우딩 환경에서는 SQL Azure Federation(페더레이션)을 통해 행 분할을 통해 응용 프로그램의 데이터베이스 계층에서 확장성과 성능을 높이는 방법을 제공하고 있습니다. Federation(페더레이션)을 통해 확장성, 성능 및 추가 용량을 제공할 수 있으며 가동 중지 시간 없이 동적으로 쿼리 문이나 데이터베이스 포탈에서 작업을 수행 할 수 있습니다. 클라이언트 응용 프로그램은 서비스의 중단 없이 분할 작업 중에 데이터에 액세스할 수 있습니다.

테이블을 생성하기 전에 Federation(페더레이션) 키를 정의하고 범위 값을 지정합니다. Federation(페더레이션)은 페더레이션 루트 데이터베이스와 페더레이션 멤버들로 구성됩니다. 페더레이션에 접근할 때는 페더레이션 루트를 통해서 접근하게 됩니다. ADO.NET을 통해서 접근하게 되며 쿼리 문이 기존과 상이하며 Fan Out 쿼리를 처리하게 됩니다. 아래 논리적, 물리적 다이어그램 그림을 통해 페더레이션 구성을 보다 더 쉽게 이해가 가능합니다. 

그림출처- http://msdn.microsoft.com/ko-kr/library/windowsazure/hh597452.aspx

왼쪽의 사용자 데이터가 페더레이션 루트가 되며 Orders 테이블을 페더레이션 키로 분할했을 경우 오른쪽 화면처럼 페더레이션 멤버들이 구성되게 됩니다. 아래 그림은 페더레이션 멤버에 대한 물리적 다이어그램입니다. 페더레이션 멤버 2SQL Azure 데이터베이스입니다.

 

그림출처- http://msdn.microsoft.com/ko-kr/library/windowsazure/hh597452.aspx

위 그림에서 보는 것처럼 페더레이션 키를 이용해서 분할 하면 물리적으로 페더레이션 멤버 데이터베이스가 생성되어 확장성, 성능, 추가 용량을 제공해주는 클라우드 환경의 SQL Azure의 기능 중의 하나가 SQL Azure Federation(페더레이션)입니다.

아래는 SQL Azure Federation(페더레이션) 관련 참조 링크입니다.

l SQL Azure의 페더레이션(SQL Azure 데이터베이스)

http://msdn.microsoft.com/ko-kr/library/windowsazure/hh597452.aspx

l 데이터베이스 페더레이션 관리(SQL Azure 데이터베이스)

http://msdn.microsoft.com/ko-kr/library/windowsazure/hh597455.aspx

l CREATE FEDERATION(SQL Azure 데이터베이스)

http://msdn.microsoft.com/ko-kr/library/windowsazure/hh597470

l ALTER FEDERATION(SQL Azure 데이터베이스)

http://msdn.microsoft.com/ko-kr/library/windowsazure/hh597475

l 페더레이션 지침 및 제한 사항

http://msdn.microsoft.com/ko-kr/library/windowsazure/hh597469.aspx

l 데이터베이스 페더레이션에 대한 개발 고려 사항(SQL Azure 데이터베이스)

http://msdn.microsoft.com/ko-kr/library/windowsazure/hh597458.aspx

쿼리 문과 데이터베이스 포탈을 통한 SQL Azure Federation(페더레이션)에 대한 내용은 이어서 다루도록 하겠습니다.

신고
posted by 정홍주
2011.12.09 10:40 Microsft Azure/SQL Databases

SQL Azure Update

 

저번주까지만 해도 업데이트가 되지 않았는데 어제 보니 업데이트가 되어 있어
SQL Azure
업데이트 사항에 대해서 나열해보도록 하겠습니다.

1.     SQL Azure Management Portal 에 대한 내용이 많이 변경되었습니다.

변경된 화면 UI는 아래와 같습니다.


2.     변경된 Portal을 위해 Silverlight 5가 설치됩니다. 먼저 설치 창이 나오면서 브라우저를 닫고 다시 시작해야 합니다(버전 5.0.61025.0)


3.     데이터베이스 사이즈는 Business에디션이 150GB까지 늘어났습니다.


4.     데이터베이스 Collation을 사용자가 설정할 수 있습니다. (Korean_Wansung_CI_AI)

 

5.     SQL Federation 메뉴가 생겨서 바로 구성이 가능합니다.


-저번 데모에서 구성이 안되어 힘들었는데 SQL Azure Management Portal에서 지원됩니다.

6.     Query Performance 화면이 제공됩니다.

 

7.     추가로 SSMS 도구에서도 SQL Azure에 대한 지원이 강화되었습니다. (2012 SSMS)


신고
posted by 정홍주
prev 1 next