MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Viele zu viele Updates in MongoDB ohne Transaktionen

@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.