2009-06-23 1 views
0

내가 개발 한 자체 개발 소프트웨어는 devexpress orm (XPO)을 통해 사무실의 mysql 서버에 직접 연결됩니다. 성능이 뛰어납니다.지리적으로 다양한 사용자가있는 앱에 대한 백엔드 db 설정

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

이 저울의 어떤 부분은 완전히 새로운 것입니다. 나는 전에 이런 식으로 일한 컨설턴트를 데려 오는 것에 반대하지 않지만 먼저 옵션에 대한 좋은 그림을 얻고 싶습니다. 나는 이것이 일반적인 상황이라고 확신한다.

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

복제가 작동하지 않는 경우 이런 유형의 태스킹을 수행하는 개발 패턴이 있습니까?

은, 지옥,이 태그를하는 방법을 모르겠어요, 그래서 사람이 더 잘 알고 있다면 ..., 데이터

것 같아요

에 대해

EDIT> 세부 정보를 태그 다시 주시기 바랍니다 일부 기업용 소프트웨어에 비해 우리는 많은 양의 데이터를 이동시키지 않습니다. 이 소프트웨어는 고객 계정, 약속 등을 관리하며 각 사용자는 매회 2-5 개의 별도 계정/분 (현재 50 명의 사용자, 계획된 확장 후 200-400)으로 작업하여 매번 데이터를 업데이트합니다.

사무실 A에있는 누군가가 사무실 B에있는 사람을 위해 약속을 생성하면 이상적으로 즉시 세부 정보를 볼 수 있어야합니다 (< 2 분). 즉, 각 레코드는 대개 하루에 최대 5 번만 변형됩니다. 그러나 그것은 내가 의심하는 것일뿐입니다. 나는 실제로 사용 통계를 가지고 있지 않습니다.

답변

1

양방향으로 비동기 복제를 사용할 수 없습니다 문제를 해결하고 깨뜨릴 수없는 복제 충돌을 만들지 않습니다.

따라서 읽기/쓰기 분할을 사용하는 것이 확실합니다. 응용 프로그램이 (읽기 전용) 로컬 DB에서 중요하지 않은 읽기를 수행하고 마스터에 모든 쓰기를 지시하게하십시오. 이것의 단점은 자신의 글을 즉시 다시 읽을 수 없다는 것입니다.

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

+0

입력 해 주셔서 감사합니다.귀하의 대답과 MySQL의 문서를 사용하여 읽기/쓰기 분할 시도하기로 결정했습니다. 이제 ORM이 동일한 작업을 수행하도록 설득하는 것만으로도됩니다 (DevExpress.XPO). –

1

마지막으로 리조트 중 하나는 GUI 스레드가 차단되지 않도록 백그라운드 스레드에서 모든 작업이 완료되었는지 확인하는 것입니다.

데이터에 따라 실시간 데이터가 달라 지므로 요청 당 얼마나 많은 데이터가 있는지 (예 : 개체의 크기가 얼마나 큼), 얼마나 빨리 인터넷에 연결할 수 있는지 등의 자세한 설명을 놓칩니다. bottle neck?), mysql 서버와 그 사이에있는 모든 인프라가 잘 구성된 것인가? 실시간 데이터가 하루에 한 번 돌연변이가 발생하거나 하루에 수천 회 돌연변이가 발생하는 경우 데이터가 정적/동적 인 방법은 무엇입니까?

+0

은 사용되는 데이터의 종류와 양 및 그것이 변경된 빈도를 명확히하기 위해 업데이트되었습니다. 우리가 현재 사용하고있는 네트워크 연결은 느린 지점 일 수있는 5mb 라인이지만이 순간에는 원격 사무실에서 3 명의 사용자 만 지원합니다. –