2013-10-28 2 views
0

오프라인 모드로 실행할 수있는 앱이 있습니다. 오프라인 인 경우 로컬 mongo 데이터베이스를 사용하고, 데이터 연결이 있으면 원격 mongo 데이터베이스를 사용합니다.두 개의 몽고 데이터베이스를 동기화 된 상태로 유지할 수 있습니까?

이 두 데이터베이스를 쉽게 동기화하고 둘 다 자신의 컬렉션과 문서가 결합되어 있는지 확인하십시오.

EDIT : 효과적으로 삽입 및 삭제가 발생할 수있는 두 개의 데이터베이스가 있습니다. 고정 된 시점에서 나는 두 데이터베이스가 그들 모두의 결합을 보여 주길 원합니다.

예를 들어 일정 기간 동안.

DB1.insert(A) 
DB1.insert(B) 
DB2.insert(C) 
DB1.remove(A) 

RUN의 SYNC

DB1 = DB2 = {B, C} 

EDIT2 : 일부 독서를하고 있었다. 이것은 의도 한 목적이 아니지만 리모컨의 슬레이브 복제 세트로 설정하여 그런 식으로 사용할 수 있습니까? 문제는 복제본에 해결할 수있는 DNS를 통해 액세스 할 수 있어야하는 복제본 호스트가 필요하다고 생각합니다. 리모컨이 로컬 호스트에 액세스하는 방법을 모릅니다.

+0

세부 정보를 추가 할 수 있습니까? 바로 지금 당신이 필요로하는 것이 명확하지 않습니다. – zero323

+0

조금 더 자세하게 추가 되었습니까? – nickponline

+0

단일 원격 db 당 얼마나 많은 응용 프로그램을 사용할 계획입니까? db의 예상 크기는 얼마입니까? – zero323

답변

0

복제 세트를 사용할 수 있지만 MongoDB는 마스터 - 마스터 복제를 지원하지 않습니다. 리모트 중 하나가 우선 순위가 0을 설정와

  • 5 지역 DBS를 죽으면 대부분을 보장하기 위해 원격 serwers로
  • 하나의 중재자를 사용합니다 우선 순위 1

    • 두 개의 노드 :이 같은 설정이있는 경우의 가정하자

    응용 프로그램이 오프라인 상태가되면 보조 상태를 유지하므로 쓰기를 수행 할 수 없습니다. 온라인 상태가되면 원격 dbs의 변경 사항을 동기화하지만 로컬 변경 사항을 동기화하는 방법이 필요합니다. 하나는 상대방이 오프라인 상태 일 때 쓰기 위해 사용되는 로컬 폴백 db를 사용할 수 있습니다. 온라인으로 갈 때 모든 새 레코드를 마스터로 보냅니다. 좀 더 까다로워도 업데이트를 처리 할 수는 있지만 실행 가능합니다.

    또 다른 문제는 응용 프로그램을 추가해야하는 경우 확장되지 않는다는 것입니다. 내가 정확히 기억하고 있다면 복제본 당 12 노드가 있습니다. 소규모 클러스터의 경우 DNS 분석은 ssh 터널을 사용하여 해결할 수 있습니다.

    문제를 해결하는 또 다른 방법은 작고 편안한 서비스와 문서 타임 스탬프를 사용하는 것입니다. 앱이 온라인 일 때마다 주기적으로 로컬 인서트를 원격으로 푸시하고 원격 데이터베이스에서 데이터를 가져올 수 있습니다.

  • 관련 문제