@Gareth , haben Sie mehrere legitime Möglichkeiten, dies zu tun. Ihr Hauptanliegen ist also, wie Sie die Daten abfragen möchten (d. h.:welche Abfragen schnell sein müssen )
Hier sind ein paar Methoden.
Methode Nr. 1:die "Links"-Sammlung
Sie könnten eine Sammlung erstellen, die einfach Zuordnungen zwischen den Sammlungen enthält.
Vorteile:
- Unterstützt atomare Updates, damit keine Daten verloren gehen
Nachteile:
- Zusätzliche Abfrage beim Versuch, zwischen Sammlungen zu wechseln
Methode 2:Speichern Sie Kopien kleinerer Zuordnungen in einer größeren Sammlung
Zum Beispiel:Sie haben Millionen von Products
, aber nur hundert Categories
. Dann würden Sie die Categories
speichern als Array innerhalb jedes Product
.
Vorteile:
- Kleinster Fußabdruck
- Nur ein Update erforderlich
Nachteile:
- Zusätzliche Abfrage, wenn Sie den "falschen Weg" gehen
Methode 3:Speichern Sie Kopien aller Zuordnungen in beiden Sammlungen
(was Sie vorschlagen)
Vorteile:
- Einzelabfragezugriff zum Wechseln zwischen beiden Sammlungen
Nachteile:
- Möglicherweise große Indizes
- Benötigt Transaktionen (?)
Reden wir über "Bedürfnistransaktionen". Es gibt mehrere Möglichkeiten, Transaktionen durchzuführen, und es hängt wirklich davon ab, welche Art von Sicherheit Sie benötigen.
Sie können dies auf jeden Fall tun. Sie müssen sich fragen, was passiert im schlimmsten Fall, wenn nur eine der Sicherungen fehlschlägt?
Methode 4:Änderung in die Warteschlange stellen
Ich weiß nicht, ob Sie jemals mit Warteschlangen gearbeitet haben, aber wenn Sie etwas Spielraum haben, können Sie eine einfache Warteschlange erstellen und verschiedene Jobs haben, die ihre jeweiligen Sammlungen aktualisieren.
Dies ist eine viel fortschrittlichere Lösung. Ich würde eher zu #2 oder #3 gehen.