복제 프로그래밍 개념

적용 대상:SQL ServerAzure SQL Managed Instance

복제 기능을 사용하는 애플리케이션을 개발하려면 먼저 다음과 같은 일반적인 계획 단계를 따르는 것이 좋습니다.

  1. 복제 토폴로지를 정의합니다.

  2. 애플리케이션 기능을 정의합니다.

  3. 보안 계획.

  4. 개발 환경을 선택합니다.

  5. 적절한 복제 프로그래밍 인터페이스를 선택합니다.

이 항목의 나머지 단계에서는 이러한 단계를 자세히 설명합니다. 계획 프로세스를 설명하기 위해 예제가 포함되어 있습니다.

복제 토폴로지 정의

복제 프로그래밍의 첫 번째 단계는 애플리케이션의 복제 토폴로지를 정의하는 것입니다. 기존 구독자의 데이터에 액세스하는 클라이언트 애플리케이션과 같이 기존의 복제 토폴로지를 사용할 애플리케이션을 작성하는 경우에는 다음 단계로 진행하십시오.

참고 항목

경우에 따라 복제 토폴로지 배포가 애플리케이션의 유일한 목적이 됩니다.

정의하는 복제 토폴로지는 다음을 비롯한 여러 요인에 따라 달라집니다.

  • 복제된 데이터를 업데이트해야 하는지 여부 및 대상에 따라 업데이트해야 합니다.

  • 일관성, 자율성 및 대기 시간에 대한 데이터 배포가 필요합니다.

  • 비즈니스 사용자, 기술 인프라, 네트워크 및 보안 및 데이터 특성을 포함한 복제 환경입니다.

  • 복제 및 복제 옵션의 유형입니다.

  • 복제 토폴로지 및 복제 유형에 맞게 조정하는 방법

Microsoft SQL Server 복제를 접하는 경우 복제 유형을 참조 하세요.

애플리케이션 기능 정의

복제 토폴로지를 정의한 후에는 애플리케이션에서 제공할 기능을 결정해야 합니다. 이러한 기능은 구독을 동기화하는 스크립트에서 복제를 구성하는 사용자 인터페이스를 사용하는 애플리케이션에 이르기까지 다양할 수 있습니다. 복제는 다음과 같은 일반 프로그래밍 작업을 지원합니다.

  • 복제 설정

  • 구독자 동기화

  • 복제 토폴로지 유지 관리

  • 복제 토폴로지 모니터링

  • 복제 문제 해결.

또한 복제 기능을 SQL Server에서 제공하는 다른 기능과 결합하여 애플리케이션을 확장하는 것이 일반적입니다. 다음 표에서는 복제 애플리케이션에서 제공할 수 있는 몇 가지 확장된 기능을 강조 표시합니다.

기능
SMO(SQL Server Management Objects)를 사용한 서버 관리 관리자가 복제 토폴로지에서 데이터베이스를 게시자로 연결하고 구성할 수 있도록 하는 애플리케이션입니다.
ADO.NET을 사용하여 데이터 액세스 사용자가 오프라인 상태에서 로컬 구독자 데이터베이스에서 복제된 판매 데이터에 프로그래밍 방식으로 액세스하고 변경한 다음, 단추를 클릭하여 끌어오기 구독을 연결하고 동기화할 수 있는 애플리케이션입니다.

보안 계획

보안은 모든 애플리케이션에서 중요하며 코드를 작성하기 전에 보안 계획을 완료해야 합니다. 애플리케이션 보안은 데이터베이스 보안, 복제 보안 및 보안 코드 작성이라는 세 부분으로 나눌 수 있습니다.

다음 항목에서는 보안에 대한 정보를 제공합니다.

개발 환경 선택

복제 애플리케이션을 개발할 때 고려해야 할 세 가지 기본 개발 환경이 있습니다. 각 개발 환경은 몇 가지 예외를 제외하고 동일한 복제 기능에 액세스할 수 있습니다. 복제 애플리케이션은 다음과 같은 환경에서 개발할 수 있습니다.

  • 관리 코드

    .NET Framework 프로그래밍 및 .NET CLR(공용 언어 런타임)의 이점을 활용하는 개체 지향 개발 환경입니다. 관리 코드는 .NET 개발 및 SQL Server 애플리케이션 모두에 권장되는 프로그래밍 환경입니다. 관리되는 복제 인터페이스를 사용하면 Transact-SQL을 알 필요 없이 개체 지향 방식으로 복제 관리를 프로그래밍할 수 있으며 스크립트에서 사용할 수 없는 복제 에이전트를 실행할 때 몇 가지 콜백 기능도 제공합니다. 관리 코드는 재사용 가능한 구성 요소 및 사용자 인터페이스 애플리케이션을 개발하기에 가장 적합한 환경입니다.

  • 스크립팅

    Transact-SQL 스크립트의 복제 시스템 저장 프로시저 또는 일괄 처리 파일의 명령으로 일련의 명령을 실행하는 간단한 애플리케이션입니다. SQL Server In-Process 관리 공급자를 사용하여 관리되는 환경에서 스크립트를 실행할 수 있지만, 콜백 기능을 제공하는 관리되는 복제 인터페이스를 사용하여 동일한 기능을 얻을 수 있습니다. 스크립팅은 몇 번만 실행되고 복제 서버 설치와 같은 콜백 기능이 필요하지 않은 작업을 실행하는 데 가장 적합한 환경입니다.

  • 네이티브 코드

    코드가 CLR에서 관리되지 않도록 시스템 또는 COM 개체에 대한 직접 액세스를 활용하는 개체 지향 개발 환경입니다. 네이티브 코드 복제 인터페이스는 더 이상 사용되지 않거나 중단됩니다. 자세한 내용은 SQL Server 복제 또는 복제 이전 버전과의 호환성에서 사용되지 않는 기능을 참조하세요.

적절한 복제 프로그래밍 인터페이스 선택

최종 계획 단계는 선택한 개발 환경에 대해 원하는 복제 기능을 구현하는 적절한 복제 프로그래밍 인터페이스를 선택하는 것입니다. 다음 표에서는 사용 가능한 복제 프로그래밍 인터페이스를 보여 줍니다.

인터페이스 환경 사용
Replication Management Objects Concepts 관리 코드 관리, 모니터링 및 동기화.
Microsoft.SqlServer.Replication 관리 코드 동기화.
Microsoft.SqlServer.Replication.BusinessLogicSupport 관리 코드 사용자 지정 논리를 병합 동기화 프로세스에 통합하기 위한 비즈니스 논리 처리기 생성
복제 저장 프로시저(Transact-SQL) 스크립팅 관리 및 모니터링.
Replication Agent Executables Concepts 스크립팅 동기화.

Adventure Works에서는 전 세계 200명의 영업 담당자를 위한 데이터를 게시해야 합니다. 영업 담당자는 자주 여행하며 랩톱 컴퓨터 또는 PLA(개인 디지털 도우미)를 사용하여 고객 데이터를 변경하고 새 주문을 추가해야 합니다. 변경 내용은 영업 담당자가 랩톱을 네트워크에 연결할 때 게시자에 동기화되어야 합니다.

이 애플리케이션의 경우 계획 단계는 다음과 같을 수 있습니다.

  1. 이 애플리케이션에 대한 복제 토폴로지가 이미 있습니다. 그러나 클라이언트에서 새 끌어오기 구독을 만들어야 합니다. 게시는 매개 변수가 있는 필터를 사용하여 각 영업 담당자에게 고유한 데이터 집합을 복제해야 합니다.

  2. 이 애플리케이션은 판매 애플리케이션에 필요한 일반적인 데이터 액세스 외에도 영업 사원이 단추를 클릭하여 요청 시 끌어오기 구독을 동기화할 수 있도록 해야 합니다. 영업 담당자가 애플리케이션을 설치하고 실행하므로 구독을 구성하고 클라이언트에서 초기 스냅샷을 적용할 수도 있어야 합니다. 필요한 경우 애플리케이션에서는 연결이 발견되면 구독을 자동으로 동기화할 수 있도록 Windows에서 제공하는 무선 연결 감지 인프라를 사용할 수도 있습니다.

  3. 게시자에 연결할 때 Windows 인증 및 VPN(가상 사설망) 사용을 포함하여 복제에 대한 모든 보안 지침을 따릅니다. 웹 동기화를 구현하는 경우 이전에 SSL(Secure Sockets Layer)로 알려진 TLS(전송 계층 보안) 연결을 사용합니다. 자세한 내용은 Configure Web Synchronization을 참조하세요.

  4. .NET Framework의 기능을 활용하기 위해 애플리케이션은 관리 코드 언어를 사용하여 개발됩니다.

  5. 이러한 요구 사항에 따라 RMO(복제 관리 개체) 관리 인터페이스는 이 애플리케이션에 필요한 모든 복제 기능을 제공할 수 있습니다.

이 예제 시나리오는 SQL Server용으로 다운로드할 수 있는 AdventureWorks 샘플 애플리케이션에서 구현되었습니다.