티스토리 뷰

SQL Azure Sharding 소개

 

SQL Azure의 경우 데이터베이스는 비즈니스 형태가 50GB 를 지원하고 있습니다. 이 용량을 넘어가는 경우 접근할 수 있는 방법에 대한 내용을 알아보도록 하겠습니다. SQL Azure Sharding SQL Azure Federation 으로 대용량 데이터에 대한 부분을 접근할 수 있습니다. SQL Azure Federation은 차후 CTP 를 통해 다루어 보고 이번 글에서는 SQL Azure Sharding에 대한 내용을 알아봅니다.

 

Sharding은 여러 데이터 베이스를 통해 수평으로 파티션된 응용 프로그램 패턴이며 응용 프로그램을 위한 데이터의 수평적인 확장성을 제공해줍니다. Windows Azure Training Kit 의 데모에 SQL Azure Sharding에 대한 내용이 있어 적용해서 테스트해보겠습니다.


참조: http://social.technet.microsoft.com/wiki/contents/articles/how-to-shard-with-sql-azure.aspx

 

데이터에 대한 Partion을 생성 할 때 아래 관련 코드 중 PartionField 를 이용하여 여러 데이터베이스에 데이터를 파티션 시킵니다.

 

실제 응용 프로그램에서 파티션한 결과는 아래와 같습니다. 국가별로 SalesOrderHeader 테이블이 파티션되어 있습니다.


실제 데이터를 한번 살펴보도록 하겠습니다.
위 내용을 통해 응용 프로그램에서 ADO.NET을 이용하여 Sharding Library를 통해 처리된 것을 확인 가능합니다. SSMS를 이용하여 해당 데이터베이스에서 SalesOrderHeader SELECT 해보겠습니다. 데이터베이스 별로 Country별로 구분되어 있습니다.

 

 파티션된 결과에 대해서 Select 하는 코드을 접근해보도록 하겠습니다. 아래 코드를 이용하여 Sharding 에 대한 데이터베이스를 병렬로 액세스해서 결과를 병합해주고 있습니다.


SELECT의 웹 페이지 결과는 다음과 같습니다.

 

Sharding에 대한 INSERT 에 대한 내용도 한번 알아보도록 하겠습니다. 아래 코드를 통해 해당 파티션에 INSERT를 수행하게 됩니다.

 

위에서 SQL Azure Sharding에 대해서 알아보았는데 SQL Server Partitioned 뷰와 유사하며 ADO.NET을 통해 Sharding 에 대한 생성, 조회, 추가를 처리할 수 있다는 것을 알 수 있습니다.

이를 통해 대용량 데이터에 대해 확장성 있게 SQL Azure를 구성할 수 있습니다.


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

SQL Azure Data Sync (2) – Sync Group  (0) 2011.09.14
SQL Azure Data Sync (1) – 소개와 Agents 구성  (0) 2011.09.07
SQL Azure Reporting (3)  (0) 2011.08.24
SQL Azure Reporting(2)  (1) 2011.08.17
SQL Azure Reporting (1)  (0) 2011.08.10
댓글