2016-06-01 4 views
2

Wir arbeiten an einem Fall, der diesem ähnlich ist (PouchDB: Multiple remote databases, single local database (fancy replication)), und sind nicht sicher, was der bessere Ansatz wäre.PouchDB Admin-Ansicht über mehrere User PouchDBs

Um das Szenario zuerst zu skizzieren, haben wir mehrere "normale Benutzer" (die ich von nun an einfach als "Benutzer" bezeichnen werde) und eine kleine Gruppe von "Superbenutzern" (die ich "Administratoren" nennen werde) das Vokabular einfach halten).

Benutzer können Dokumente erstellen und Dokumente bearbeiten, diese Dokumente werden ihnen eindeutig zugewiesen. Diese Funktionalität sollte sowohl online als auch offline verfügbar sein. Um dies zu realisieren, würden wir nur mit einer entfernten CouchDB pro Benutzer arbeiten, die mit einer PouchDB auf dem Gerät synchronisiert ist.

Jetzt haben wir auch Admins, die alle Dokumente von allen Benutzern anzeigen und bearbeiten können. Sie können dem Bucket eines Benutzers auch ein Dokument hinzufügen. Es geht darum, diese Funktionalität zu realisieren.

Im Moment haben wir zwei mögliche Ansätze identifiziert und sind uns nicht sicher, welcher davon der richtige ist.

Unsere erste Lösung ist es, diesen Admins auch eine CouchDB zu geben, und gefilterte bidirektionale Replikation zwischen allen Benutzern ihrer CouchDBs und dem Admin seiner CouchDB einzurichten. Die CouchDB des Administrators würde dann mit einer lokalen PouchDB synchronisiert.

Die zweite Lösung ist diejenige, die oben im Link skizziert ist, um alle Benutzer ihre CouchDBs direkt mit einer PouchDB auf dem Admin-Gerät zu synchronisieren und gefilterte Replikation in die andere Richtung einzurichten. Wir konnten ermitteln, welche CouchDBs basierend auf Benutzerrollen synchronisiert werden.

Die zweite Lösung scheint einfacher und weniger spröde zu sein (weniger Datenduplikation in den CouchDBs, weniger Replikationseinstellungen in CouchDB), aber wir waren nicht so sicher über den Leistungsaufwand beim Öffnen einer ziemlich großen Anzahl von Couch < - > Beutelreplikationen gleichzeitig.

Hat jemand Erfahrung mit Fällen wie diesem? Irgendwelche Rückmeldungen darüber, was die bessere Lösung wäre? Oder gibt es noch eine, die wir vermisst haben? Alle Kommentare sind willkommen!

Antwort

1

Haben Sie berücksichtigt, dass die Daten nur in der Benutzerdatenbank verbleiben und der Administrator eine neue lokale Datenbank erstellt, die die Benutzerdatenbank repliziert?

Detaillierter Ich würde vorschlagen, die Admin-Oberfläche erstellt die lokale Datenbank zum Beispiel mit einem Namensschema wie "userdb - {$ userid}".

Sie können dann eine Replikation von der Benutzerdatenbank zur lokalen Kopie von admins durchführen.

Alle Änderungen werden mit der Benutzerdatenbank synchronisiert und Sie benötigen keine gefilterten Replikationen und riskieren nicht, Daten verschiedener Benutzer zu mischen.

Von der begrenzten Kenntnis Ihrer genauen Anforderungen, die eine bessere und einfachere Lösung sein könnte.

+0

Danke für Ihre Antwort! Dies ist mehr oder weniger genau der Ansatz, den wir letztendlich gewählt haben, und es ist großartig, ihn auf eine Art validiert zu haben. Könnte die Person, die diese Antwort abgelehnt hat, ihre Gründe für den Downvote erklären? – BigLovinMoose