여러 사이트(클라이언트)의 데이터 통합
많은 회사들은 중앙 위치로 보내야 하는 데이터를 수집 및 처리하는 지사 또는 사업체를 보유하고 있습니다. 예를 들면 다음과 같습니다.
재고 데이터는 로컬 웨어하우스의 여러 서버에서 본사에 있는 중앙 서버로 통합될 수 있습니다.
회사 내 자율 영업 부서의 정보는 중앙 서버로 전송될 수 있습니다.
여러 위치의 주문 처리 정보를 통합할 수 있습니다.
중앙 사이트에서 원격 사이트로 데이터를 전송하는 경우도 있습니다. 이 데이터는 일반적으로 중앙 사이트에서만 업데이트되는 제품 재고표와 같이 원격 사이트에서는 읽기 전용 데이터로만 사용됩니다.
다음 다이어그램에서는 중앙 사이트와 원격 위치 간 양방향 데이터 흐름이 있는 일반적인 시나리오를 보여 줍니다.
이 다이어그램에서 데이터는 먼저 허브로 이동된 다음 이 허브에서 제공하는 지사로 이동됩니다. 조직에 중간 계층이 없는 경우에는 중앙 사이트와 지사 간에 데이터를 직접 이동할 수도 있습니다.
Adventure Works Cycles 예
Adventure Works Cycles는 데이터베이스 개념 및 시나리오를 설명하는 데 사용되는 가상 제조 회사입니다. 자세한 내용은 AdventureWorks 예제 데이터베이스를 참조하십시오.
Adventure Works Cycles는 전세계에 수많은 판매점을 소유하고 있습니다. 각 판매점에서는 해당 지역의 판매 담당자로부터 데이터를 수집합니다. 이 데이터는 지역별 허브로 전송된 다음 매일 업무가 끝날 때마다 중앙 사이트로 전송됩니다. 데이터는 중앙 사이트에서 허브를 통해 각 판매점으로도 전송되므로 판매점에서 가격 및 홍보 행사에 대한 최신 정보를 보유하게 됩니다.
이 시나리오의 일반적인 요구 사항
지사 응용 프로그램에는 일반적으로 올바른 복제 솔루션이 해결해야 하는 다음과 같은 특성이 있습니다.
데이터는 중앙 사이트와 원격 사이트에서 입력되고 업데이트됩니다.
원격 사용자는 중앙 사이트에 연결하지 않고도 독립적으로 업데이트할 수 있어야 합니다.
여러 사용자가 동일한 데이터를 개별적으로 업데이트할 수 있으므로 데이터 충돌이 발생할 수 있으며 이러한 충돌을 처리해야 합니다.
제품 가격 테이블의 데이터 같은 일부 데이터는 중앙 사이트에서만 업데이트해야 합니다.
사용자는 요청 시 또는 예약된 일정에 따라 데이터를 동기화할 수 있어야 합니다.
응용 프로그램에서 원격 사이트가 동기화되지 않은 상태로 유지될 기간을 제어해야 합니다.
테이블 일부를 필터링하여 각 사용자가 하나 이상의 테이블에 대해 서로 다른 데이터를 받도록 해야 합니다. 예를 들어 지사는 해당 지역에 있는 고객에 대한 연락처 정보만 받습니다.
사이트 간에 전송될 때 하나의 단위로 취급되어야 하는 데이터도 있습니다. 예를 들어 원격 사용자가 중앙 사이트로 주문서를 전달할 경우 주문서 헤더가 주문 세부 사항보다 먼저 확인되어야 합니다.
응용 프로그램에 데이터 동기화 시 실행될 사용자 지정 비즈니스 논리가 필요할 수 있습니다.
응용 프로그램에 전용 연결이 아닌 인터넷을 통한 데이터 동기화가 필요할 수 있습니다.
이 항목의 앞부분에 나오는 다이어그램처럼 데이터가 중앙 사이트와 원격 사이트 사이에 있는 하나 이상의 중간 계층을 통해 이동하도록 비즈니스를 구성할 수 있습니다.
다음 다이어그램에서는 이 시나리오와 연결된 필터링을 보여 줍니다.
이 시나리오에 사용할 복제 유형
MicrosoftSQL Server에서는 복제 시스템의 구성 요소를 기술하는 데 게시 관련 산업의 메타포를 사용합니다. 구성 요소에는 게시자, 구독자, 게시 및 아티클과 구독이 포함됩니다. 위의 다이어그램에서 중앙 사이트는 게시자입니다. 중앙 사이트의 데이터는 게시이며 데이터의 각 테이블은 아티클입니다. 아티클은 저장 프로시저와 같은 다른 데이터베이스 개체일 수도 있습니다. 각 허브는 게시에 대한 구독자이며 스키마와 데이터를 구독으로 수신합니다. 그런 다음 허브는 데이터를 다시 게시하고 지사는 이 데이터를 구독합니다. 시스템 구성 요소에 대한 자세한 내용은 복제 게시 모델 개요를 참조하십시오.
SQL Server는 다양한 응용 프로그램 요구 사항을 위해 스냅숏 복제, 트랜잭션 복제 및 병합 복제와 같은 여러 복제 유형을 제공합니다. 이 시나리오는 이전 섹션에서 설명한 요구 사항을 해결하기에 가장 적합한 병합 복제를 통해 최적으로 구현됩니다. 병합 복제에 대한 자세한 내용은 병합 복제 개요 및 병합 복제 작동 방법을 참조하십시오.
중요 |
---|
이 시나리오를 구현하는 방법에는 본사를 게시자로 구성하고 지사를 구독자로 구성하는 방법과 본사를 구독자로 구성하고 지사를 게시자로 구성하는 방법이 있습니다. 병합 복제는 중앙 구독자 토폴로지를 지원하지 않습니다. 모든 변경이 원격 사이트에서 발생하더라도 본사는 게시자로 구성되어야 하고 원격 사이트는 구독자로 구성되어야 합니다. 비슷한 시나리오를 중앙 구독자 토폴로지를 사용하여 트랜잭션 복제로 구현할 수 있습니다. 응용 프로그램에 충돌 해결이 필요하지 않거나 각 원격 사이트에 고유한 데이터 집합을 제공하는 필터가 필요하지 않은 경우에는 트랜잭션 복제를 사용하십시오. 자세한 내용은 여러 사이트(서버)의 데이터 통합을 참조하십시오. |
이 시나리오와 관련된 병합 복제 옵션
병합 복제에서 제공하는 여러 가지 옵션을 통해 이 항목의 앞부분에서 설명한 요구 사항을 해결할 수 있습니다. 다음 목록은 각 요구 사항과 이를 해결하는 병합 복제 옵션을 제시합니다.
데이터는 중앙 사이트와 원격 사이트에서 입력되고 업데이트됩니다.
병합 복제는 별도의 옵션을 지정하지 않아도 이 기능을 제공합니다.
원격 사용자는 중앙 사이트에 연결하지 않고도 독립적으로 업데이트할 수 있어야 합니다.
병합 복제는 별도의 옵션을 지정하지 않아도 이 기능을 제공합니다.
여러 사용자가 동일한 데이터를 개별적으로 업데이트할 수 있으므로 데이터 충돌이 발생할 수 있으며 이러한 충돌을 처리해야 합니다.
병합 복제는 데이터 충돌이 예상되는 경우에 대비하여 충돌 감지 및 해결 기능을 제공합니다. 충돌을 피하도록 응용 프로그램을 디자인하는 것이 가장 좋은 방법이지만 이것이 불가능할 경우 기본 충돌 해결 메커니즘(먼저 나오는 항목 먼저 적용)을 선택하거나 사용자 지정 충돌 해결 방법을 사용할 수 있습니다. 자세한 내용은 병합 복제 충돌 감지 및 해결을 참조하십시오.
제품 가격 테이블의 데이터 같은 일부 데이터는 중앙 사이트에서만 업데이트해야 합니다.
병합 복제는 게시자에서만 업데이트되어야 하는 테이블을 위해 다운로드 전용 아티클을 제공합니다. 자세한 내용은 다운로드 전용 아티클로 병합 복제 성능 최적화를 참조하십시오.
사용자는 요청 시 또는 예약된 일정에 따라 데이터를 동기화할 수 있어야 합니다.
복제는 밀어넣기 구독과 끌어오기 구독이라는 두 가지 구독 유형을 제공합니다. 끌어오기 구독이 요청 시 동기화에 보다 적합합니다. 구독 유형 및 동기화 예약에 대한 자세한 내용은 게시 구독 및 데이터 동기화를 참조하십시오.
응용 프로그램에서 원격 사이트가 동기화되지 않은 상태로 유지될 기간을 제어해야 합니다.
병합 복제를 사용하면 구독 만료 기간을 설정하여 모든 구독자가 일정 기간 내에 동기화되도록 할 수 있습니다. 자세한 내용은 구독 만료 및 비활성화를 참조하십시오.
테이블 일부를 필터링하여 각 사용자가 하나 이상의 테이블에 대해 서로 다른 데이터를 받도록 해야 합니다. 예를 들어 각 영업 사원은 자신의 고객에 대한 연락처 정보만 받을 수 있습니다.
병합 복제를 사용하면 열 및 행을 필터링할 수 있습니다. 행 필터는 정적 필터 또는 매개 변수가 있는 필터일 수 있습니다. 정적 필터는 게시가 생성될 경우에만 적용되며 하나의 데이터 집합이 생성됩니다. 매개 변수가 있는 필터는 구독자가 동기화할 때마다 적용되며 각 구독자마다 다른 데이터 집합이 생성됩니다. 지사 응용 프로그램에서는 종종 매개 변수가 있는 필터를 사용하지만 정적 필터를 사용할 수도 있습니다. 자세한 내용은 병합 복제의 게시된 데이터 필터링을 참조하십시오.
사이트 간에 전송될 때 하나의 단위로 취급되어야 하는 데이터도 있습니다. 예를 들어 원격 사용자가 중앙 사이트로 주문서를 전달할 경우 주문서 헤더가 주문 세부 사항보다 먼저 확인되어야 합니다.
병합 복제를 사용하면 관련 테이블 집합을 하나의 단위로 처리하도록 지정할 수 있습니다. 이러한 단위를 논리 레코드라고 합니다. 자세한 내용은 논리적 레코드를 사용하여 관련된 행의 변경 내용을 그룹화를 참조하십시오.
응용 프로그램에 데이터 동기화 시 실행될 사용자 지정 비즈니스 논리가 필요할 수 있습니다.
병합 복제를 사용하면 동기화하는 동안 실행될 코드를 지정할 수 있습니다. 이 코드는 광범위한 이벤트에 응답할 수 있으며 동기화 중인 데이터에 액세스할 수 있습니다. 자세한 내용은 병합 동기화 중 비즈니스 논리 실행을 참조하십시오.
응용 프로그램에 전용 연결이 아닌 인터넷을 통한 데이터 동기화가 필요할 수 있습니다.
(SQL Server Compact 3.5 SP1) 사용 시 데이터는 HTTP 또는 HTTPS 연결을 통해 동기화됩니다. 다른 SQL Server 버전에서는 HTTPS가 필요한 웹 동기화를 사용할 수 있습니다. 자세한 내용은 병합 복제에 대한 웹 동기화를 참조하십시오.
데이터가 중앙 사이트와 원격 사이트 사이에 있는 하나 이상의 중간 계층을 통해 이동하도록 비즈니스를 구성할 수 있습니다.
병합 복제는 재게시를 통해 이러한 요구 사항을 수용할 수 있습니다. 재게시는 중앙 게시자가 데이터를 하나 이상의 구독자에 게시하면 이러한 구독자가 다른 구독자로 데이터를 게시하는 방법입니다. 자세한 내용은 데이터 재게시를 참조하십시오.
이 시나리오 구현을 위한 단계
이 시나리오를 구현하려면 우선 게시와 구독을 생성한 다음 각 구독을 초기화해야 합니다. 각 단계에 대한 자세한 내용을 보려면 아래 링크를 클릭하십시오.
구독이 초기화되고 게시자와 구독자 간 데이터 흐름이 시작된 후 일반적인 관리 및 모니터링 태스크에 대한 정보를 보려면 다음 항목을 참조하십시오.