영업: 1-800-867-1380

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

업데이트 날짜: 2014년 4월

페더레이션을 사용하여 솔루션을 개발하는 경우 Azure SQL 데이터베이스 개발 고려 사항에서 설명된 고려 사항 외에 추가로 고려할 사항이 있습니다. 페더레이션을 사용하여 개발하는 경우와 관련된 내용이 아래에 설명되어 있습니다.

Important중요
현재 페더레이션 구현은 Web 및 Business와 함께 사용이 중지될 예정입니다. 확장성, 유동성 및 성능을 최대화하려면 사용자 지정 분할 솔루션을 배포하는 것이 좋습니다. 사용자 지정 분할에 대한 자세한 내용은 Azure SQL 데이터베이스 확장을 참조하십시오.

일반적인 페더레이션은 많은 개별 페더레이션 멤버 데이터베이스로 구성되어 있으며 SQL 데이터베이스에서 물리적 데이터베이스로 구현됩니다. 물리적 데이터베이스 중 하나에 직접 연결할 수 있지만 이러한 연결 방식은 페더레이션을 인식하지 않는 도구에만 유용합니다. 대부분의 응용 프로그램의 경우 USE FEDERATION(Azure SQL 데이터베이스)을 사용하여 페더레이션에 대한 연결을 설정하는 것이 훨씬 편리합니다. USE FEDERATION 문을 사용하면 요청된 데이터가 포함된 페더레이션 멤버로 연결을 자동으로 라우팅하므로 기본적인 물리적 데이터베이스를 이해할 필요가 없습니다.

USE FEDERATION 문은 SQL 데이터베이스에서 이 값과 연결된 데이터를 포함하는 페더레이션 멤버로 연결을 라우팅하는 데 사용하는 페더레이션 키 값을 받아들입니다. 예를 들어, 데이터가 customer_id에서 페더레이션되고 페더레이션 키로 100을 지정하는 경우 customer_id=100인 페더레이션된 테이블 행이 포함된 페더레이션 멤버에 연결됩니다.

올바른 페더레이션 멤버에 연결하는 것 외에도 USE FEDERATION 문을 사용하여 지정한 페더레이션 키 값과 정확히 일치하는 레코드에 대한 연결만 필터링할 수 있습니다. 위의 예에서 FILTER=ON 절이 지정된 경우 customer_id=100과 연결된 행만 연결에서 반환됩니다. 이 작업은 쿼리 프로세서가 페더레이션된 열에 대한 조건자(federated_column=value)를 페더레이션된 테이블을 참조하는 모든 쿼리에 추가하여 수행합니다.

FILTER=OFF 절이 지정된 경우 지정된 값을 포함하는 페더레이션 멤버로 연결이 여전히 설정되지만 쿼리 작업은 페더레이션 멤버 내에 저장된 값의 전체 범위에 액세스할 수 있습니다. 예를 들어, 페더레이션 멤버가 customer_id 0-200의 범위를 담당하는 경우 USE FEDERATION 문에서 customer_id=100을 지정한 경우에도 해당 범위 내의 모든 레코드에 액세스할 수 있습니다.

필터링하지 않은 연결은 스키마 수정 또는 대량 삽입과 같은 대량 작업 등 멤버에 저장된 모든 행에 영향을 미치는 작업을 수행할 때 유용합니다.

페더레이션 내의 여러 물리적 데이터베이스에 데이터가 분포되어 있으므로 응용 프로그램 수준에서 추가 요구 사항이 발생합니다. Microsoft Azure SQL 데이터베이스에서는 여러 데이터베이스에 대한 분산 쿼리를 지원하지 않으므로 응용 프로그램 내에서 이러한 작업을 수행하는 논리를 대신 구현해야 합니다. 예를 들어, 페더레이션된 테이블에서 SELECT *를 수행하려면 다음을 수행할 수 있습니다.

  1. 페더레이션 키가 적용되는 범위의 하한 값을 사용하여 페더레이션에 연결합니다(예: USE FEDERATION customerfederation (customer_id=1) WITH RESET, FILTERING=OFF).

  2. SELECT *를 수행하여 이 페더레이션 멤버에 포함된 페더레이션된 테이블 행을 반환한 다음 결과를 메모리에 저장합니다.

  3. sys.federation_member_distributions(Azure SQL 데이터베이스)를 쿼리하여 다음 페더레이션 멤버의 range_low 값을 확인합니다.

  4. range_low 값을 사용하여 페더레이션에 연결합니다(예: USE FEDERATION customerfederation (customer_id=100) WITH RESET, FILTERING=OFF).

  5. SELECT *를 수행하여 이 페더레이션 멤버에 포함된 행을 반환한 다음 이전 쿼리의 결과와 함께 저장합니다.

  6. 페더레이션 키 값으로 사용되고 있는 현재 값보다 range_low 값이 큰 항목이 sys.federation_member_distributions에 없을 때까지 3-5단계를 반복합니다.

각 개별 멤버를 쿼리하는 프로세스는 병렬로 수행될 수 있으므로 데이터를 집계하고 응용 프로그램 사용자에게 반환하는 데 걸리는 시간을 줄일 수 있습니다.

참고 항목

이 정보가 도움이 되었습니까?
(1500자 남음)
의견을 주셔서 감사합니다.
표시:
© 2014 Microsoft