2010-08-10 5 views
0

저는 현재 POS 프로젝트입니다. 사용자는이 응용 프로그램이 온라인과 오프라인 모두에서 작동 할 수 있어야하므로 로컬 데이터베이스가 필요하다는 것을 의미합니다. 각 매장과 본사간에 SQL Server 복제를 사용하기로 결정했습니다. 각 매장은 SQL Server Express를 설치해야하며 본사는 이미 SQL Server Enterprise Edition을 가지고 있습니다. 복제는 30 분마다 일정대로 실행되며 데이터가 상점과 본사에서 모두 변경 될 수 있으므로 병합 복제를 선택합니다.POS 응용 프로그램을위한 최상의 솔루션은 무엇입니까?

POC를 수행 할 때이 솔루션이 제대로 작동하지 않는 것으로 나타났습니다. 언젠가는 작업 오류가 발생하고 해당 솔루션을 다시 초기화해야합니다. 이 솔루션은 또한 사용자에게 명백히 받아 들일 수없는 매우 오랜 시간이 걸립니다.

알고 싶습니다. 제가 지금하고있는 것보다 더 좋은 해결책이 있습니까?

업데이트 1 : 시스템의

제약은 거의 거래의

  1. 이 모두 상점 및 본사에서 발생할 수 있습니다.
  2. 일부 트랜잭션은 사용자가 본점에서 데이터를 업데이트해야하는 현지 상점에 데이터를 저장 한 후에 실시간 모드에서 작동해야합니다. (현재 온라인 상태 인 경우)
  3. 사용자는 매장에서도 본사 데이터베이스와의 연결을 끊을 수 있습니다.
  4. 데이터 양에 대한 우리의 추정은 매일 최대 2,000 행입니다.
  5. Windows 2003은 본사 서버이며 Windows XP는 모든 클라이언트의 OS입니다.

업데이트 2 :

  1. 현재 그들은 약 15 클라이언트를,하지만이 숫자는 상당히 느린 속도에서 성장한다.
  2. 데이터 크기는 복제 당 약 100 ~ 200 행입니다. 5MB를 넘지 않아야합니다.
  3. 클라이언트는 임대 회선 연결로 서버에 연결합니다. 128 kbps.

저는 복제가 매우 오래 걸리는 상황에 있습니다. (약 5 분 밖에 걸리지 않지만 약 55 분이 소요됩니다.) 거의 복제를 다시 시작하려면 작업을 다시 초기화해야합니다. 작업을 다시 초기화하지 마십시오. 복제 할 수 없습니다. 내 POC에서는 다시 초기화 한 후 복제하는 데 시간이 오래 걸리며 데이터 양에 의존하지 않습니다. 그건 그렇고, 다시 초기화 나는 내 문제에 대해 작동하는 솔루션입니다. 위와 같이

, 내 문제에 대한, 복제 할 수있다 적합하지 체결하고 나는 내가 업데이트 1에서 필요한 역할을 할 수있는 또 다른 더 나은 솔루션을 가지고 있다고 생각 :

+0

당신은 충분한 세부 사항을 제공하지 못했습니다. 시스템에 대한 제약, 기대되는 데이터의 양, 중앙 서버의 전원 및 OS, 그리고 POS 시스템을 우리에게 말하지 않고 있습니다. ... – Oded

+0

@Oded 제안대로 정보를 추가했습니다. 충분하지 않다면 알려주세요. – Anonymous

+0

더 많은 질문 ... 얼마나 많은 고객이 있습니까? 데이터의 크기는 어느 정도입니까? 연결될 때 클라이언트와 서버 간에는 어떤 종류의 링크가 있습니까? – Oded

답변

2

자신의 양방향 복제 엔진을 롤백해야하는 것처럼 들릴 수도 있습니다.

너무 오래 걸리는 이유 중 하나는 좁은 링크 (128kbps)에서 복제가 시작되기 전에 두 데이터베이스가 일관성이 있어야 (모든 행을 검사해야하기 때문입니다). 당신이 상상할 수 있듯이, 이것은 오랜 시간이 걸릴 수 있습니다. 5Mb조차도이 링크를 통해 전송하는 데 약 1 분 정도 걸릴 것입니다.

엔진을 작성할 때 복제해야 할 항목 (항목이 변경된 경우 타임 스탬프 사용)을 결정하고 충돌 해결 (복제 기간 동안 동일한 레코드가 두 장소에서 변경된 경우) 등을 파악하십시오. 쉬운 일이 아닙니다.

0

나의 제안은 MS 액세스를 사용하는 것입니다 로컬로 유지하고 특정 간격 후에 서버로 데이터를 계속 업데이트합니다. 모든 테이블에 업데이트 된 열을 추가하십시오. 레코드가 추가되거나 업데이트되면 업데이트 된 coloumn을 설정하십시오. 삭제를 위해서는 기본 키 값과 테이블 이름을 넣을 수있는 seprate 테이블이 필요합니다. 동기화 할 때 업데이트 된 필드가 설정되지 않은 모든 로컬 레코드를 가져 와서 중앙 서버에 업데이트 (수정 또는 삽입)합니다. 로컬 삭제 된 테이블을 사용하여 모든 레코드를 삭제하면 완료됩니다!

귀하의 중앙 서버는 데이터 수집 전용이라고 가정합니다.

+0

"상점 및 본사에서 데이터가 변경 될 수 있으므로 복제 병합" – JeffO

0

현재 웹 동기화를 위해 구성된 SQL Server 병합 복제를 사용하여 설명하는 내용을 정확하게 수행합니다. 내 에이전트를 1 분짜리 스케줄로 실행하고 성공했습니다.

어떤 종류의 오류 메시지가 보입니까?

관련 문제