필요에 따라 연결되는 응용 프로그램 개요
필요에 따라 연결되는 응용 프로그램은 원격 데이터베이스의 데이터를 사용하지만 원격 데이터베이스에 항상 액세스하지는 않는 응용 프로그램입니다. 필요에 따라 연결되는 응용 프로그램은 지속적으로 액세스할 수 있지만 지역 이름 또는 제품 범주 목록처럼 거의 변경되지 않는 데이터를 원격 데이터베이스에서 계속 쿼리하는 것이 비효율적인 경우에도 사용됩니다. 이러한 경우 응용 프로그램은 클라이언트에 있는 로컬 데이터베이스의 데이터를 사용하며 주기적으로 서버의 원격 데이터베이스와 데이터를 동기화할 수 있습니다.
즉, 응용 프로그램에서 데이터베이스에서 지속적으로 검색할 필요가 없는 원격 데이터베이스 데이터를 필요로 하는 경우에는 로컬 데이터베이스 캐시를 사용하여 클라이언트 컴퓨터 또는 응용 프로그램 안에 바로 데이터를 저장할 수 있습니다. 데이터베이스에 있는 몇몇 테이블의 데이터를 사용하는 재고 응용 프로그램의 예를 들어 보겠습니다. 모든 개별 부품의 재고 품목 수는 지속적으로 변경되는 중요한 데이터이기 때문에 응용 프로그램은 가능하면 항상 데이터베이스의 최신 값을 반영해야 합니다. 하지만 이 응용 프로그램에서는 거의 변경되지 않는 데이터인 유효한 선적 회사 목록도 표시합니다. 유효한 선적 회사는 선적 회사 테이블에 저장되며 데이터베이스에서 데이터를 쿼리할 때마다 검색할 필요가 없습니다. 이러한 선적 회사 테이블을 로컬 데이터베이스 캐시에 저장하면 응용 프로그램이 원격 데이터베이스에 대해 수행하는 불필요한 라운드트립의 수를 줄일 수 있습니다. 따라서 필요에 따라 연결되는 응용 프로그램에 로컬 데이터베이스 캐시를 사용하는 것 외에도 자주 변경되지 않거나 정해진 일정에 따라 변경되는 데이터를 로컬 데이터베이스 캐시에 저장하는 방식도 고려해 보십시오.
개별 테이블, 테이블 집합 또는 테이블에서 쿼리된 특정 레코드(예를 들어 특정 판매 담당자의 고객만)를 저장하도록 캐싱을 구성할 수 있습니다.
클라이언트와 서버 데이터베이스 사이의 데이터 동기화는 Microsoft Synchronization Services for ADO.NET(Microsoft.Synchronization.Data 네임스페이스)을 통해 쉽게 처리됩니다. 동기화는 데이터 동기화 구성 대화 상자를 사용하거나 형식화된 데이터 집합을 만들 때 데이터 소스 구성 마법사를 사용하여 Visual Studio에서 시각적으로 구성할 수 있습니다. 자세한 내용은 방법: 응용 프로그램에서 데이터 동기화 구성 및 연습: 데이터 소스 구성 마법사를 사용하여 필요에 따라 연결되는 응용 프로그램 만들기을 참조하십시오.
또한 Visual Studio에서는 SQL Server 2008의 변경 내용 추적 기능을 지원합니다. 데이터 동기화 구성 대화 상자 또는 데이터 소스 구성 마법사에서 동기화를 구성할 때 SQL Server 2008 변경 내용 추적을 사용하도록 설정할 수 있습니다. 자세한 내용은 방법: SQL Server 변경 내용 추적을 사용하도록 데이터 동기화 구성을 참조하십시오.
SQL Azure에서의 로컬 데이터베이스 캐시 제한
로컬 데이터베이스 캐시를 사용하면 SQL Azure에서 찾은 데이터를 로컬 SQL Compact 데이터베이스와 동기화할 수 있습니다. 그러나 SQL Azure 같은 클라우드 기반 서비스에서는 여러 고객이 동일한 하드웨어를 공유하는 다중 고객 지원 환경을 활용하지만 기존의 데이터 공급자는 다중 고객 지원 환경에 적합하지 않습니다. SQL Azure에서는 특정 사용자에 의해 시작된 작업 부하가 다른 고객에게 영향을 미치지 않도록 하기 위해 사용량 조절을 통해 단일 요청에 허용되는 리소스의 양을 제한합니다. 특히, SQL Azure는 트랜잭션이 실행될 수 있는 시간을 제한하고 단일 트랜잭션에 의해 발생할 수 있는 로그 증가량을 제한합니다.
이러한 공급자는 기본 시나리오 및 소량 데이터에 대해 사용해야 합니다. 대량 데이터를 동기화하려고 하면 사용량 조절 문제로 인해 동기화 작업이 실패할 수도 있습니다. 사용량 조절 문제가 발생한 경우 동기화 실패를 방지하기 위해 변경 횟수를 제한할 방법은 없습니다. 뿐만 아니라 이러한 공급자는 양방향 동기화가 필요한 보다 고급한 시나리오에는 적합하지 않습니다.
SQL Azure가 관련된 시나리오에 적합한 구성 요소에 대한 자세한 내용은 https://go.microsoft.com/fwlink/?LinkId=180745를 참조하십시오.
동기화 서비스 API(Microsoft.Synchronization.Data)
Microsoft Synchronization Services for ADO.NET은 필요에 따라 연결되는 응용 프로그램에 맞게 설계되었습니다. 이를 통해 2 계층, N 계층 및 서비스 기반 아키텍처를 통해 다양한 소스의 데이터를 동기화할 수 있습니다. 동기화 서비스 API는 데이터베이스와 스키마를 복제하는 대신 데이터 서비스와 로컬 저장소 간에 데이터를 동기화하는 구성 요소 집합을 제공합니다. 중앙 서버에 지속적이거나 안정적으로 연결하지 않는 휴대용 컴퓨터 및 장치와 같은 모바일 클라이언트에서의 응용 프로그램 사용이 증가하고 있습니다. 이러한 경우 응용 프로그램에서는 클라이언트에 있는 데이터의 로컬 복사본으로 작업하는 것이 필요합니다. 또한 네트워크에 연결할 수 있을 때 데이터의 로컬 복사본을 중앙 서버의 데이터와 동기화하는 기능도 중요합니다. ADO.NET 데이터 액세스 API를 본떠 모델링된 Synchronization Services API는 데이터를 간편하게 동기화할 수 있는 방법을 제공합니다. 이 API를 사용하면 지속적인 네트워크 연결에 의존하는 응용 프로그램을 만드는 작업을 논리적으로 확장하여 필요에 따라 연결되는 환경의 응용 프로그램을 만들 수 있습니다.
동기화 서비스 API 및 설명서 설치
Synchronization Services API는 .NET Framework의 일부가 아닙니다. 이는 SQL Server Compact 3.5 설치 과정에서 함께 설치됩니다. 기본적으로 SQL Server Compact 3.5는 Visual Studio를 설치할 때 설치됩니다. Synchronization Services 설명서는 기본적으로 설치되지 않습니다. 이 설명서는 도움말을 온라인으로 사용할 수 있도록 구성한 경우에만 얻을 수 있습니다. 로컬에서 사용하기 위해 Synchronization Services 설명서를 설치하려면 먼저 Microsoft Synchronization Services for ADO.NET Books Online 웹 사이트에서 도움말 컬렉션을 다운로드해야 합니다.
Visual Studio를 사용하여 데이터 동기화를 응용 프로그램에 통합
데이터 동기화를 응용 프로그램에 통합하려면 Visual Studio에서 제공하는 로컬 데이터베이스 캐시 템플릿을 사용합니다. 로컬 데이터베이스 캐시는 새 프로젝트 항목 템플릿으로 사용할 수 있습니다. 프로젝트 메뉴에서 새 항목 추가를 클릭하십시오. 자세한 내용은 방법: 응용 프로그램에서 데이터 동기화 구성를 참조하십시오.
로컬 데이터베이스 캐시 템플릿 외에 데이터 소스 구성 마법사를 사용하여 동기화를 구성할 수도 있습니다. 형식화된 데이터 집합을 구성하는 동안 마법사의 데이터베이스 개체 선택 페이지에서 로컬 데이터베이스 캐싱 사용 옵션을 선택합니다. 자세한 내용은 연습: 데이터 소스 구성 마법사를 사용하여 필요에 따라 연결되는 응용 프로그램 만들기를 참조하십시오.
로컬 데이터베이스 캐시를 추가하면 데이터 동기화 구성 대화 상자가 열립니다. 이 대화 상자를 사용하여 필요한 동기화 구성 요소를 설정하기 위한 클라이언트 및 서버 관련 정보를 제공할 수 있습니다. 로컬 데이터베이스 캐시는 클라이언트의 SQL Server Compact 3.5 데이터베이스를 사용하여 데이터를 로컬로 저장합니다. 기존 SQL Server Compact 3.5 데이터베이스를 로컬 데이터베이스 캐시로 사용할 수 있습니다. 아직 로컬 데이터베이스가 없는 경우 데이터 동기화 구성 대화 상자를 사용하여 새 로컬 데이터베이스를 만들 수 있습니다. 새 로컬 SQL Server Compact 3.5 데이터베이스를 만들려면 서버 연결에서 선택한 테이블을 기반으로 새 SQL Server Compact 3.5 데이터베이스를 만들 수 있도록 데이터 동기화 구성 대화 상자에서 클라이언트 연결을 설정합니다.
참고
데이터 동기화 구성 대화 상자에서는 다운로드 시나리오에 대해서만 Microsoft Synchronization Services for ADO.NET을 구성할 수 있습니다. 따라서 이 대화 상자를 사용하여 데이터 동기화를 구성한 다음 Microsoft.Synchronization.Data.SyncAgent.Synchronize를 호출하면 원격 데이터베이스의 변경 내용만 로컬 데이터베이스에서 업데이트됩니다. 로컬 데이터베이스의 데이터에서 변경한 내용은 원격 데이터베이스에 업로드되지 않습니다. 데이터 동기화 구성 대화 상자를 사용하여 데이터 동기화를 구성한 뒤에는 프로그래밍 방식으로 동기화 도중 업로드를 수행할 수 있도록(양방향 동기화) 지정할 수 있습니다. 자세한 내용은 방법: 양방향 동기화를 위해 로컬 및 원격 데이터베이스 구성을 참조하십시오.
동기화를 사용할 수 있도록 원격 데이터베이스 구성
데이터 동기화가 제대로 작동하려면 동기화할 원격 데이터베이스의 각 테이블에 몇 가지 항목을 추가해야 합니다. 데이터 동기화 구성 대화 상자는 원격 데이터베이스에 대해 실행되어 필요한 개체(아래 표에 나열된 개체)를 만드는 SQL 스크립트를 생성합니다. 동기화 디자이너에서 생성된 모든 SQL 스크립트는 프로젝트의 SQLScripts 폴더에 저장됩니다.
참고
데이터 동기화 구성 대화 상자를 통해 생성한 SQL 스크립트는 기본적으로 자동 실행됩니다. 오프라인으로 사용할 테이블 구성 대화 상자에서 스크립트 생성 옵션을 설정하여 스크립트의 생성 및 실행 여부를 선택할 수 있습니다.
데이터 동기화 구성 대화 상자의 기본 동작은 대화 상자를 닫을 때 자동으로 스크립트를 실행하고 원격 데이터베이스를 업데이트하는 것입니다. 스크립트를 자동으로 실행하지 않으려면 이 대화 상자를 닫으면 스크립트 실행 확인란의 선택을 취소하십시오. 또한 원격 데이터베이스에 필요한 추적 열, 트리거 및 삭제된 항목 테이블이 이미 있는 경우에는 스크립트가 생성되지 않습니다. 즉, 원격 데이터베이스를 변경할 필요가 없으면 스크립트가 생성되지 않습니다.
다음 표에서는 원격 데이터베이스에 필요한 항목을 나열하고 각 항목에 대해 설명합니다.
원격 데이터베이스의 동기화되는 테이블에 추가되는 항목 |
설명 |
---|---|
LastEditDate 열 |
이 열은 동기화되는 각 테이블의 DateTime 또는 TimeStamp입니다. 이 열을 클라이언트의 LastEditDate 열과 비교하여 마지막 동기화 호출 이후 서버에서 수정된 레코드를 식별합니다. |
CreationDate 열 |
이 열은 동기화되는 각 테이블의 DateTime 또는 TimeStamp입니다. 이 열을 클라이언트의 CreationDate 열과 비교하여 마지막 동기화 호출 이후 서버에 추가된 레코드를 식별합니다. |
삭제된 항목 테이블(TableName_Deleted) |
데이터베이스 서버의 테이블에서 삭제된 항목은 이 테이블로 옮겨지므로 마지막 동기화 호출 이후 서버에서 삭제된 레코드를 식별할 수 있습니다. 동기화되는 각 테이블에 대해 삭제된 항목 테이블이 있어야 원격 테이블에서 삭제된 레코드를 추적할 수 있습니다. |
DeletionTrigger(TableName_DeletionTrigger) |
이 트리거는 서버 데이터베이스 테이블에서 레코드가 삭제될 때마다 실행됩니다. 삭제된 레코드를 삭제된 항목 테이블로 옮기는 것은 서버 데이터베이스에 없는 클라이언트 데이터베이스의 레코드를 새 레코드로 취급하고 서버에 추가할 수 있기 때문입니다. 동기화 서비스는 삭제된 항목 테이블을 검사하여 서버 데이터베이스에 삭제된 레코드를 다시 추가하는 것이 아니라 클라이언트 데이터베이스에서 해당 레코드를 삭제해야 함을 확인합니다. |
InsertTrigger(TableName_InsertTrigger) |
이 트리거는 새 레코드가 추가될 때 CreationDate 열에 현재 날짜와 시간을 입력합니다. |
UpdateTrigger(TableName_UpdateTrigger) |
이 트리거는 기존 레코드가 수정될 때 LastEditDate 열에 현재 날짜와 시간을 입력합니다. |
응용 프로그램에서 동기화 프로세스 시작
데이터 동기화 구성 대화 상자에 필요한 정보를 제공한 뒤에는 코드를 응용 프로그램에 추가하여 동기화를 시작합니다. 데이터를 동기화하면 데이터 집합의 테이블이나 응용 프로그램의 다른 개체가 아니라 로컬 데이터베이스가 업데이트된다는 점을 반드시 기억해 주십시오. 따라서 로컬 데이터베이스에서 업데이트된 데이터로 응용 프로그램 데이터 소스를 다시 로드해야 합니다. 예를 들어 TableAdapter.Fill 메서드를 호출하여 로컬 데이터베이스에서 업데이트된 데이터가 있는 데이터 집합의 데이터 테이블을 로드합니다.
참고 항목
작업
방법: 양방향 동기화를 위해 로컬 및 원격 데이터베이스 구성
개념
SQL Server Compact 3.5 및 Visual Studio