2014-01-10 5 views
0

내 동기화 기능은 여러 클라이언트 SQL 서버의 데이터를 동기화하고 서버의 비즈니스 규칙에 따라 데이터를 수정 한 다음 데이터를 서버 SQL 데이터베이스에로드해야합니다.많은 클라이언트에서 서버로 데이터 동기화 (SQL)

현재 솔루션은 예약 된 작업으로 실행되는 콘솔 응용 프로그램으로, 레코드의 생성 및 수정 된 타임 스탬프를 비교하고 클라이언트에서 서버로 업데이트하거나 삽입해야하는 엔터티 개체를 생성합니다.

이 방법이 효과가있는 것처럼 보이지만 데이터 충돌을 일으키는 동기화 중에 충돌 관리 또는 WCF 서비스가 중단되는 것이 걱정됩니다. 이 문제를 해결하기 위해 내가 생각해야했던 생각 중 하나가 스냅 샷이었습니다. 동기화가 완료되면 스냅 샷을 삭제하고 마지막으로 성공한 가져 오기 날짜로 서버 DB를 업데이트합니다.

나는 Sync Framework를 살펴 보았지만 하나의 서버 설정에 대해 여러 클라이언트의 몇 가지 예를 발견했습니다. 동기화 문제는 클라이언트 DB 테이블 스키마를 변경하지 않는 것이 좋습니다. 클라이언트 DB에서 읽기 전용의 예가 있습니까? 또는 클라이언트 또는 서버 끝에서 데이터를 수정하는 동안 SQL-SQL 예제?

내 서버 데이터베이스에 업데이트하거나 삽입해야하는 엔터티 개체 목록을 생성하는 데 사용하는 클라이언트 코드는 다음과 같습니다.

Public Function GetNew(ByVal StarTime As DateTime, ByVal EndTime As DateTime, ByVal ChunkSize As Integer, ByVal Offset As Integer) As List(Of myEntity.person) Implements myWCFService.GetNew 
    Dim db As New myEntity.DBContext 
    Dim z As List(Of INextGen.person) = (From p In db.people Where p.create_timestamp >= StarTime And p.create_timestamp <= EndTime Order By p.create_timestamp Descending Skip Offset Take ChunkSize).ToList() 
    Return z 
    db.Dispose() 
    db = Nothing 
End Function 

Public Function GetChanged(ByVal StarTime As DateTime, ByVal EndTime As DateTime, ByVal ChunkSize As Integer, ByVal Offset As Integer) As List(Of myEntity.person) Implements myWCFService.GetChanged 
    Dim db As New myEntity.DBContext 
    Dim z As List(Of INextGen.person) = (From p In db.people Order By p.modify_timestamp >= StarTime And p.modify_timestamp <= EndTime Order By p.modify_timestamp Descending Skip Offset Take ChunkSize).ToList() 
    Return z 
    db.Dispose() 
    db = Nothing 
End Function 

답변

1

Microsoft Sync Framework 2.1을 사용해보십시오.

데이터베이스 동기화 공급자는 Microsoft® Sync Framework의 일부입니다. Sync Framework는 개발자가 응용 프로그램, 서비스 및 장치에 동기화 기능을 추가 할 수있게 해주는 포괄적 인 동기화 플랫폼입니다. Sync Framework는 모든 토폴로지에서 모든 프로토콜을 사용하여 모든 상점에서 모든 유형의 데이터를 동기화하는 방법의 문제를 해결합니다. Sync Framework의 기본은 모든 유형의 종단점 (예 : 장치 대 데스크톱, 장치 대 서버 등) 간의 오프라인 데이터 및 공동 작업을 지원하는 기능입니다.

참고 :
http://msdn.microsoft.com/en-us/library/bb902831.aspx
http://msdn.microsoft.com/en-us/library/bb726002.aspx

난 그 들여다
+0

,이 내 서버에 삽입하기 전에 내가 클라이언트 SQL에서 나오는 데이터를 마사지 할 필요가있는 방식으로 진정한 동기가 아닌 SQL. 내가하는 일에 적합한 도구가 아닌 것처럼 보입니다. –

+0

Sync Framework에는 프레임 워크 내에서보다 강력한 동기화 제어를 가능하게하는 다양한 사용자 지정 공급자를 작성하기위한 관리되는 API와 관리되지 않는 API가 포함됩니다. http://msdn.microsoft.com/en-us/library/bb902847.aspx. 친애하는. – Seymour

+0

응용 프로그램의 필요 중 하나는 1 개의 서버, 많은 클라이언트 관계입니다. 내가 3 개의 클라이언트 데이터베이스를 가질 수 있고 각각이 내 Server 테이블과 동기화해야하는 "Person"테이블을 포함하고 있습니다. 레코드를 추적하려면 내 WCF 모델을 사용하여 클라이언트 ID를 할당합니다. 그것은 동기화가 많은 지원을하지 않는 것 같습니다? 추가 제약 조건은 클라이언트 테이블에서만 읽기 전용 액세스 권한이 있다는 것입니다. –

관련 문제