확장성 향상
중간 계층 응용 프로그램에서는 종종 단일 데이터베이스를 사용하여 데이터를 저장하지만 이렇게 하면 데이터베이스에 대한 로드가 증가할 경우 확장성이 제한될 수 있습니다. 응용 프로그램이 웹 기반 카탈로그에서와 같이 쓰기 작업보다 읽기 작업을 더 많이 수행하는 경우 읽기 전용 데이터를 여러 데이터베이스에서 캐시한 다음 전체 데이터베이스에 클라이언트를 균등하게 연결시켜 로드를 분산하면 작업의 읽기 부분만 수평으로 확장(Scale-out)할 수 있습니다.
다음 다이어그램에서는 응용 프로그램과 웹 서버가 3개의 캐싱 서버에 있는 임의 데이터를 사용하는 구성을 보여 줍니다.
응용 프로그램을 통해 가용성을 향상시키거나 지정된 사용자에 대한 읽기 및 업데이트 내용을 특정 응용 프로그램 서버로 이동한 다음 특정 캐싱 서버로 이동해야 하는 경우 가용성 및 확장성 향상의 예를 참조하십시오.
Adventure Works Cycles 예
Adventure Works Cycles는 데이터베이스 개념 및 시나리오를 설명하는 데 사용되는 가상 제조 회사입니다. 자세한 내용은 예제 및 예제 데이터베이스를 참조하십시오.
Adventure Works Cycles 에서는 최근 웹 사이트를 업그레이드하여 다음과 같은 새 기능을 포함시켰습니다.
- 고객을 위한 온라인 제품 주문
- 온라인 주문 상태 확인
- 제품 안내서에 대한 향상된 검색 기능
웹 사이트에서 제품 온라인 주문 서비스를 시작하면서 Microsoft SQL Server 전용으로 사용되는 회사 단일 컴퓨터의 활동이 상당히 증가되었습니다. Adventure Works 관리자는 이 컴퓨터를 복제된 데이터의 원본으로 사용하기로 결정했습니다. 모든 읽기 작업이 원본 컴퓨터의 데이터를 캐시하는 3대의 추가 컴퓨터(SQL Server 실행)로 수평으로 확장(Scale-out)되었고 이제 캐싱 컴퓨터는 사용자의 제품 카탈로그 검색 및 주문 상태 확인 작업을 비롯한 모든 읽기 작업을 처리합니다. 모든 쓰기 작업은 원본 데이터베이스로 전송됩니다.
이 시나리오의 일반적인 요구 사항
확장성을 위해 복제를 사용하는 응용 프로그램에는 일반적으로 올바른 복제 솔루션이 해결해야 하는 다음과 같은 요구 사항이 있습니다.
- 시스템에서는 트랜잭션 일관성을 유지해야 합니다.
- 시스템의 대기 시간이 짧아야 합니다. 즉, 원본에서의 업데이트 내용이 캐시에 빠르게 도달해야 합니다.
- 시스템의 처리량이 많아야 합니다. 즉, 많은 수의 트랜잭션에 대한 복제를 처리해야 합니다.
- 복제 처리를 위해서는 원본의 오버헤드가 최소로 유지되어야 합니다.
- 캐시에 필요한 데이터는 원본에서 사용할 수 있는 데이터의 하위 집합일 수 있습니다.
이 시나리오에 사용할 복제 유형
SQL Server 에서는 복제 시스템의 구성 요소를 기술하는 데 게시 관련 산업의 메타포를 사용합니다. 구성 요소에는 게시자, 구독자, 게시 및 아티클과 구독이 포함됩니다. 시스템 구성 요소에 대한 자세한 내용은 복제 게시 모델 개요를 참조하십시오.
위의 다이어그램에서 원본은 게시자입니다. 원본에 있는 데이터 일부나 전체는 게시에 포함되며 데이터의 각 테이블은 아티클입니다. 아티클은 저장 프로시저와 같은 다른 데이터베이스 개체일 수도 있습니다. 각 캐시는 게시에 대한 구독자이며 스키마와 데이터를 구독으로 받습니다.
SQL Server 는 다양한 응용 프로그램 요구 사항을 위해 스냅숏 복제, 트랜잭션 복제 및 병합 복제와 같은 여러 복제 유형을 제공합니다. 이 시나리오는 이전 섹션에서 설명한 요구 사항을 해결하기에 가장 적합한 트랜잭션 복제를 통해 최적으로 구현됩니다. 트랜잭션 복제에 대한 자세한 내용은 트랜잭션 복제 개요 및 트랜잭션 복제 작동 방법을 참조하십시오.
기본적으로 트랜잭션 복제는 다음과 같은 이 시나리오의 주요 요구 사항을 처리합니다.
- 트랜잭션 일관성
- 짧은 대기 시간
- 높은 처리량
- 최소 오버헤드
이 시나리오에서 고려해야 할 기본 옵션은 필터링입니다. 트랜잭션 복제를 사용하면 구독자의 테이블에 응용 프로그램에 필요한 데이터만 포함되도록 열 및 행을 필터링할 수 있습니다. 자세한 내용은 게시된 데이터 필터링을 참조하십시오.
이 시나리오 구현을 위한 단계
이 시나리오를 구현하려면 우선 게시와 구독을 생성한 다음 각 구독을 초기화해야 합니다. 각 단계에 대한 자세한 내용을 보려면 아래 링크를 클릭하십시오.
구독이 초기화되고 게시자와 구독자 간 데이터 흐름이 시작된 후 일반적인 관리 및 모니터링 작업에 대한 정보를 보려면 다음 항목을 참조하십시오.