2012-05-21 2 views
1

Google 팀을위한 샌드 박스 환경 설정과 관련하여 커뮤니티에서 가장 권장할만한 것이 무엇인지 궁금합니다.mongodb 중복 테스트 환경 설정

현재 우리는 테스트 및 전개 환경 각각에 대해 두 개의 별도 MongoDB 인스턴스 (둘 다 3 개의 구성원 복제본 세트)를 사용합니다. 테스트 환경의 모든 데이터는 거의 폐기되었으며 애플리케이션을 테스트하는 과정에서 개발자가 만든 것입니다.

실제 라이브 데이터로 테스트 할 수있는 새로운 옵션을 별도의 안전 샌드 박스 인스턴스에 제공하고 싶습니다. 처음에는 데이터를 야간에 새 데이터베이스로 옮기고 개별 개발자 앱 서버를이 데이터베이스에 연결하기 위해 copyDatabase 명령을 사용할 수 있다고 생각했습니다. 문제는 시스템에 엄청난 GridFS 데이터가 있고, 이와 같이 복제하면 디스크 I/O가 낭비되고 더 작은 클라우드 인스턴스에서 실행된다는 것입니다.

특히 더 나은 대안이 있다면이 경로를 조심해야합니다.

예를 들어 슬레이브로만 작동하는 배포 복제 집합의 네 번째 구성원을 설정하고 모든 쿼리를 slaveOkay = True으로 설정하고 해당 개별 노드에 대해 테스트를 실행할 수 있습니까? 이것이 다른 회원들에게 전파됩니까? 삽입물은 어떻게 처리됩니까?

내가 제안하는 것은 비효율적 일 수 있습니다. 특히 네트워크 전송을 낭비하는 네트워크를 넘겨야하는 경우 특히 그렇습니다. 누구도 비슷한 문제를 해결해야만 했습니까? 감사!

답변

1

노예들은 읽기 전용입니다. 모든 쓰기는 반드시 마스터로 가야합니다. 이것은 "네 번째 노예"옵션을 배제합니다.

테스트 목적으로 모든 gridfs 데이터와 함께 데이터베이스의 정확한 복사본이 실제로 필요합니까? "무거운"데이터의 관련 부분 만 복사하려고합니다. 이 경우 db.copyDatabase() :)을 제외하고 대신 mongodump/mongorestore을 수행하십시오.

또한 테스트 데이터베이스와 준비 데이터베이스가 서로 다른 데이터베이스 여야 함을 지적하고자합니다. 테스트 db는 단위 테스트 (mocked/generated 데이터 사용)에 사용됩니다. Staging db는 프로덕션 데이터로 채워지고 통합/수락 테스트에 사용됩니다.

+0

답장을 보내 주셔서 감사합니다. 현재 우리는 unittest 모듈을 사용하여 테스트 db를 생성하고 있으므로 아마도 "테스트"로 설정하려고 시도했던 db를 참조하는 것은 잘못된 이름 일 것입니다. 내가 한 것은 당신이 언급 한 준비 서버였습니다. – DeaconDesperado

관련 문제