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

Bietet die Durchführung einer teilweisen Aktualisierung eines MongoDb-Dokuments in WiredTiger Vorteile gegenüber einer vollständigen Dokumentaktualisierung?

WiredTiger verwendet Multiversion Concurrency Control (MVCC) um mehrere Ansichten von Daten für die gesamte Lebensdauer der Leser zu erhalten. Das In-Memory-Format von WiredTiger unterscheidet sich vom On-Disk-Format:In-Memory speichert es Diffs zu einem Dokument, aber eine vollständige Version des Dokuments wird erstellt, wenn es als Teil regelmäßiger Checkpoints in die Datendateien geflusht wird.

Unabhängig davon, wie verschiedene MongoDB-Speicher-Engines dauerhafte Aktualisierungen auf der Festplatte handhaben, gibt es nach Möglichkeit immer noch Leistungsvorteile, wenn Teilaktualisierungen statt vollständiger Aktualisierungen verwendet werden (insbesondere, wenn Sie Feldwerte festlegen, die im Verhältnis zur Gesamtdokumentgröße klein sind).

Betrachten Sie zum Beispiel:

  • Netzwerkdatenverkehr für Dokumentaktualisierungen (beliebige Speicher-Engine)
  • Größe der Einträge im Journal (beliebige Speicher-Engine)
  • Größe der Einträge im Replikations-Oplog (beliebige Speicher-Engine)
  • Größe der In-Memory-Versionen von Updates (WiredTiger)

Wenn Sie jedes Mal vollständige Dokumentaktualisierungen senden, erstellen Sie auch Szenarios, in denen die Reihenfolge, in der die Aktualisierungen den Server erreichen, von Bedeutung ist, selbst wenn Änderungen für unterschiedliche Feldgruppen gelten. Sie könnten zusätzliche Anwendungslogik hinzufügen, z. B. optimistische Versionierung, um sicherzustellen, dass Sie Feldwerte nicht versehentlich überschreiben, aber dies kann je nach Anwendungsfall zu unnötiger Komplexität führen.