약간의 문제가 있습니다. 이야기는 다음과 같습니다 :클라이언트에서 마스터로 mysql 테이블 데이터를 동기화하십시오.
나는 여러 클라이언트 (현재 23)에서 실행되는 문서 보관 시스템 (PHP로 작성)을 가지고 있습니다. 그들의 시스템에는 문서 만 있습니다. 매일 밤 사이트의 마스터 데이터베이스 (중앙 서버)에 '동기화'해야합니다. 중앙 서버에서 각 MySQL 데이터베이스에 액세스 할 수 있으므로 연결하는 데 아무런 문제가 없습니다.
클라이언트 데이터베이스에 연결하고 동기화 열이 '0000-00-00 00:00:00'(기본값은 동기화되지 않았 음을 나타냄) 인 테이블에서 모든 항목을 선택합니다. 그런 다음 각 레코드를 반복하여 중앙 서버에 삽입하고 클라이언트 데이터베이스 레코드의 동기화 시간을 스크립트가 실행 된 시간으로 설정합니다. 이 작동하지만, 분명히 여러 쿼리와 큰 오버 헤드가 있으며 지금 막 문제를 발견했습니다.
각 클라이언트는 하루에 최대 2000 - 3000 개의 홀수 문서를 생성 할 수 있습니다. 이 큰 번호로 너무 오래 걸립니다 (1 초/2 문서).
내 문제는 더 나은 해결책이 있습니까? 모든 것이 성공했는지 확인하기 위해 로그를 수행해야하는 PHP 스크립트 솔루션이 바람직합니다.
감사
편집 : 나의 현재 프로세스는 다음과 같습니다
는- 트랜잭션 시작하는 모든 않은 동기화 된 데이터
- 를 선택 중앙 데이터베이스 서버에
- 삽입 기록
- 선택 클라이언트의 문서 기록
- 는
- 이 중앙 서버에서 실행되는 스크립트입니다
트랜잭션을 커밋 서버에 클라이언트에서 중앙 데이터베이스 서버
ID는 문제가되지 않습니다. 동기화 할 필요가 없습니다. 다른 여러 열을 통해 올바른 레코드를 얻습니다. 필자는 ID를 사용하여 docarch_printout (문서에 관한 모든 세부 사항) 테이블을 docarch_printout_docs 테이블 (1 - 1 문서 만 포함)에 연결합니다. 다른 문제는 우리가 클라이언트에 영구적으로 연결되어 있지 않다는 것입니다. 일부는 온 디맨드 ISDN 회선입니다. 필자는 연합 테이블이 작동하지 않을 것이라고 생각합니다. 좋은 생각 이군요, MySQL에는 그 옵션이 있다는 것을 전혀 몰랐습니다. – Skippy
글쎄, 당신이 프로그램에 페더레이션 테이블에 대한 SQL을 만들 수 있다고 가정합니다. 그런 다음 클라이언트에 연결할 때 작성 스크립트를 실행하십시오. 일단 끝나면 놓습니다. (따라서 사용자가 적극적으로 동기화 할 때만 연결을 사용합니다.) – ircmaxell
True. 나는 그 아이디어를 정말 좋아한다. Everythng 멋지지만, 2 테이블 (1-1 관계) ID 필드에 의해 참조되는 동기화해야합니다. 하나는 세부 정보이고 다른 하나는 실제 문서입니다. 그것은 단지 하나의 테이블이었습니다. 그것에 대한 더 이상의 생각은 없습니까? 감사. – Skippy