문제

내가 작업하는 사내 개발 소프트웨어는 Devexpress ORM (XPO)을 통해 사무실의 MySQL 서버에 직접 연결됩니다. 성능은 훌륭합니다.

우리는 다른 사무실을 열고 있습니다 ... 크로스 컨트리. 공연 : 그렇게 좋지 않습니다. 요구 사항은 소프트웨어 가이 사무실에서와 마찬가지로 두 사무실에서 반응 적이며 한 사무실의 데이터를 다른 사무실에서 '실시간'으로 사용할 수 있어야한다는 것입니다.

이 규모의 무언가는 나에게 완전히 새로운 것입니다. 나는 전에 이런 일을해온 컨설턴트를 데려 오는 것을 반대하지는 않지만 먼저 옵션의 좋은 그림을 얻고 싶습니다. 나는 이것이 일반적인 상황이라고 확신합니다.

복제가 좋은 생각입니까? 충분히 빠르나요? 충분히 안정적?

복제가 작동하지 않으면 이런 종류의 상황을 해결하는 개발 패턴이 있습니까?

도대체, 나는 이것을 태그하는 방법조차 모르겠다.

편집> 데이터에 대한 세부 사항

일부 엔터프라이즈 소프트웨어와 비교할 때 우리는 많은 데이터를 이동하지 않는다고 생각합니다. 이 소프트웨어는 고객 계정, 약속 등을 관리하며 각 사용자는 약 2-5 개의 별도 계정/분 (현재 50 명의 사용자, 현재 확장 후 200-400)으로 작업하여 매번 데이터를 업데이트합니다.

실시간 측면은 Office A가 Office B에있는 사람을위한 약속을 만들 때 실시간으로 시작됩니다. 이상적으로는 즉시 세부 사항을 즉시 볼 수 있어야합니다 (<2 분). 즉, 각 레코드는 일반적으로 하루에 최대 5 번만 돌연변이됩니다. 그러나 그것은 내가 의심하는 것뿐입니다. 실제로 사용 통계가 없습니다.

도움이 되었습니까?

해결책

복제 충돌을 일으키지 않으면 서 양방향으로 비동기 복제를 사용할 수 없습니다.

따라서, 당신의 명백한 선택은 읽기/쓰기 분할을 사용하는 것입니다. 응용 프로그램이 (읽기 적은) 로컬 DB에서 비판적 읽기를하고 모든 쓰기를 마스터에게 지시하도록합니다. 이것의 단점은 자신의 글을 즉시 다시 읽을 수 없다는 것을 의미한다는 것입니다.

MySQL 복제는 완벽하지 않으며 유지 관리를위한 지속적인 모니터링을 위해 약간의 노력이 필요합니다. 노예에서 데이터가 동일하다고 자주 확인해야합니다. 일부 쿼리는 잘못 복제됩니다. 당신은 그것들을 이해하고 피해야합니다.

다른 팁

당신의 최후의 수단 중 하나는 물론 GUI 스레드가 차단되지 않도록 모든 헤비 듀티 작업이 백그라운드 스레드에서 수행되도록하는 것입니다.

실시간 데이터를 갖는 데이터에 따라 다르면 요청 당 얼마나 많은 데이터에 대해 이야기하는지 (즉, 객체가 얼마나 큽니까), 인터넷 연결이 얼마나 빨리 (병 목일 수 있습니까? ), MySQL 서버와 모든 인프라가 잘 구성되어 있습니까? 데이터가 어떻게 정적/동적인가, 실시간 데이터가 하루에 한 번 돌연변이되거나 하루에 Zillion Time이 돌연변이되는 경우 "솔루션"에 중요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top