Ich beginne gerade mit CouchDB (2.1), und ich plane, damit vertrauliche Daten pro Benutzer von einer mobilen App auf meinen Server zu replizieren. Ich habe gelesen, dass Datenbanken pro Benutzer der beste Weg sind, um dies zu tun, und ich habe das eingerichtet. Jede Datenbank enthält eine Mischung aus vom Benutzer erstellten Dokumenten der Typen Foo
und Bar
.Kombinieren CouchDB Datenbanken mit Replikation während der Aufnahme Quell-db
Jetzt möchte ich auch in der Lage sein, Multi-User-Slices dieser Daten in einer Datenbank zusammenzufassen und Ansichten für das Admin-Reporting zu erstellen. Sagen wir, ich möchte eine Datenbank, die alle Foos
von allen Benutzern enthält. So weit, so gut, ein Eintrag in _replicator
mit einem Filter von jeder Benutzerdatenbank zu einem Ziel erfüllt die Aufgabe.
Aber mit Blick auf die kombinierte Datenbank kann ich nicht sagen, aus welchem Benutzer ein bestimmtes Foo stammt. Ich könnte die Benutzer-ID in jedes Dokument innerhalb der Benutzer-Datenbank schreiben, aber das scheint redundant zu sein und fügt die Komplexität der Validierung hinzu. Gibt es einen anderen Weg?
Das ist hilfreich - danke. Nur um ein bisschen zu erarbeiten - ich bin glücklich mit dem Prinzip der Denormalisierung (von mongodb kommen), aber die Redundanz Problem für mich ist, dass, wenn ich replizieren von Client (Beutel) -> pro Benutzer-DB -> kombinierte db, dann Selbst die mobile App des Kunden muss viele (tausend) Kopien ihrer eigenen ID enthalten. Traditionsgemäß würde ich erwarten, dass der Server in diesem Fall die ID des authentifizierten Clients hinzufügt - das Hinzufügen der Clientseite zu jedem Dokument ist eine Menge nutzloser Daten vom Client-POV. Die Durchsetzung der Ehrlichkeit war die einzige Komplikation, die ich mir zur Validierung vorstellte, aber ich denke, das ist nicht allzu schwer. –
Akzeptieren, da es aussieht, als gäbe es keinen besseren Weg und Ihre Antwort war sehr hilfreich, um zu verstehen warum.Würde gerne eine Bijektion als Teil des Replikations-Setups definieren, vielleicht kommt das auf Couch 3 oder 4;). Trotzdem danke! –