내 사용 사례를 이해할 수 있도록 내가 어디에서 왔는지 자세히 설명하는 것이 중요하다고 생각합니다._replicator 데이터베이스가 확장 가능하지 않거나 디자인에 미세 조정이 필요합니다.
배경 : CouchDB 1에서 2로 내 응용 프로그램을 마이그레이션하려고하는데이 마이그레이션은 상당한 양의 작업을 필요로합니다. 필자는 휠체어를 재발행하지 않고, CouchDB 2가 멋진 기능을 새로 선보인 이후로 내가 더 자세히 설명 할 디자인이 없는지 다시 한번 확인하고 싶다.
학생들이 디지털로 퀴즈 답변을 제출할 수있게 해주는 다음과 같은 간단한 사용 사례를 고려해보십시오. 각 학생은 퀴즈 답을 제출할 수 있어야하며 교사는 모든 답을 볼 수 있어야합니다. 이 디자인은 PouchDB가 PouchDB가 DB에 직접적으로 말하므로 PouchDB와 함께 작업해야합니다. 그렇지 않으면 정교한 API 집합이 작성되어야하기 때문에 많은 시간을 절약 할 수 있습니다.
내가 선택한 디자인은 학생 당 하나의 데이터베이스와 교사 당 하나의 데이터베이스, 즉 사용자 당 데이터베이스로 구성됩니다. 데이터베이스 소유자 만 데이터베이스를 편집 할 수 있으며 이는 CouchDB 역할을 통해 시행됩니다. 학생이 답을 제출하면 PouchDB를 통해 그/그녀의 데이터베이스와 동기화됩니다. 대답은 교사의 데이터베이스에 복제됩니다. 이것은 차례로 학생들이 모든 학생들의 모든 대답을로드 할 수 있도록 앱과 교사의 답변을 빠르게로드 할 수있게 해줍니다. 물론 교사 데이터베이스에는 수업, 퀴즈 등으로 답변을 분류하여 교사가 모든 학생의 답변을 한 번에로드 할 필요가 없다는 견해가 있습니다. 교사 데이터베이스가없는 경우 교사는 모든 학생의 데이터베이스에 액세스해야하며 학생의 모든 데이터베이스와 동기화해야합니다.
얼핏보기에 _replicator 데이터베이스는 학생 데이터베이스의 데이터를 단일 교사 데이터베이스로 복제하는 명백한 방법 인 것처럼 보입니다. 큰 문제는 연속 복제를 사용할 때 파일 핸들과 데이터베이스 연결을 사용한다는 것입니다. 즉, 데이터베이스의 리소스를 매우 빠르게 소모시킬 수 있습니다. 예를 들어, 데이터베이스에 10,000 명의 학생이 있다고 가정하면 복제를 위해 10,000 개의 동시 파일 핸들과 데이터베이스 연결이 필요합니다. 이 10,000 명의 학생 중 100 명이 동시에 앱을 사용한다고해도 별 무리가 없다는 것을 고려하면 이것은 매우 미친 짓입니다.
대신 _db_updates 피드를 수신 한 다음 특정 데이터베이스가 변경된 경우에만 데이터베이스를 복제하는 서비스를 개발했습니다. 이 방법을 사용하면 변경 사항이있을 때 리소스를 소비하는 것에 대해 걱정할뿐입니다. 결과적으로 많은 무료 파일 핸들과 데이터베이스 연결로 끝납니다. 학생들과 교사 양쪽이 데이터베이스 사용자 별 디자인
내가 잠시 CouchDB를 2로 실험했는데 CouchDB를 1
에 있었다으로 _replicator 데이터베이스 자원과 마찬가지로 욕심 것으로 나타납니다 최상의 솔루션입니까 아니면 더 나은 솔루션이 있습니까? 이것이 최상의 솔루션이라면 많은 자원을 소비하지 않는이 데이터를 복제하는 더 좋은 방법이 있습니까?
주로 PouchDB에서 CouchDB로 동기화 하시겠습니까? 또는 로컬 소파를하고 있습니까 <-> 소파가 동기화됩니까? – Flimzy
글쎄, 학생 DB에서 교사 DB 로의 복제는 CouchDB에서 CouchDB로 진행됩니다.모바일 앱과의 동기화는 PouchDB에 대한 CouchDB입니다. – redgeoff
수천 개의 장기 실행 복제가 아닌 couch 작업 또는 유사한 작업으로 Couch-Couch 복제를 수행하는 것이 좋습니다. 그러나 그것이 문제가되는지 알 수있는 유일한 방법은 아마도 그것을 시도하는 것일 것입니다. – Flimzy