2012-02-23 1 views
0

우리는 MySQL을 사용하여 웹 사이트와 통합 될 .NET 데스크탑 응용 프로그램을 개발해 왔습니다. 각 소프트웨어의 고객에게는 웹 사이트가 있습니다. 고객의 데이터베이스를 서버에서 실행되는 통신 데이터베이스와 동기화해야합니다. 고객 당 서버에 하나의 데이터베이스가 실행됩니다. 이 정보는 고객의 웹 사이트에 표시됩니다..NET 응용 프로그램 Mysql 원격 데이터베이스 동기화

짧은 시간에 동기화해야합니다. 우리는 구식 웹 사이트를 갖고 싶지 않습니다.

우리는이 동기화를위한 코드를 작성하려고 생각했습니다. 견고한 동기화를 달성하는 것은 어려운 일로 보입니다. 고객의 데이터베이스가 커지므로 단기간에 보내는 것은 실용적이지 않은 것처럼 보입니다.

그런 다음 데이터베이스 복제를 발견했습니다. 큰! 데이터베이스를 원활하게 동기화 할 수 있습니다. 우리는이 솔루션을 하드 코딩 할 필요가 없습니다! 고객 데이터베이스는 마스터가되고 서버는 슬레이브가됩니다. 동일한 MySQL 서버에 여러 개의 슬레이브가 필요합니다. MySQL은 그것을 허용하지 않는다.

고객 당 인스턴스 인 여러 개의 MySQL 인스턴스를 실행할 수 있습니다. 그러나 인스턴스 당 포트를 열어야하므로 불안정 해 보입니다.

마지막으로 우리는 포트를 열고 방화벽으로 고객이 아닌 액세스를 거부한다고 생각했습니다.

이 문제를 어떻게 해결하겠습니까? 우리는 당신의 의견을 듣고 싶습니다. 감사합니다. .

답변

1

비슷한 프로그램이 있는데, CQL CE 데이터베이스/MS SQL을 사용하고 있습니다. 내가하는 일은 마스터 서버에 있으며, 각 테이블은 업데이트 날짜 필드를 넣은 클라이언트 데이터베이스에 업데이트를 보내야합니다. 클라이언트 데이터베이스에는 해당 데이터베이스가 마지막으로 갱신 된 날짜를 보유하는 테이블이 있습니다. 따라서 서버에서 무언가가 바뀌면 업데이트 날짜가 현재 날짜가되고 클라이언트 프로그램은 마지막 업데이트 날짜를 웹 서비스와 비교하여 업데이트가 필요한지 확인합니다.

0

나는 이것을 조금 전에 생각했다.

나는 최상의 옵션은 클라이언트 데이터베이스에서 직접 웹에 데이터를 제공하여 너무 많은 데이터 저장소를 복제하는 것을 피하는 것이라고 생각합니다.

포트 등을 열지 않고 이것을 수행하는 것이 가장 좋은 방법은 긴 폴링 또는 html 5 소켓을 사용하여 요청 된 데이터 만 제공하는 것입니다. 이렇게하면 사용자가 모든 데이터를 자주 볼 것으로 예상하지 않는 한 공정한 솔루션을 제공 할 수 있습니다.