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

Der Index für das ts-Feld in oplog.rs wird nicht aktualisiert

Wie Sie festgestellt haben, werden sekundäre Indizes auf Systemsammlungen wie local.oplog.rs nicht unterstützt und *.system.profile . In MongoDB 2.4 und älter scheinen die Indizes erstellt worden zu sein, wurden aber nie wirklich aktualisiert. Neuere Versionen von MongoDB (2.6+) geben einen Fehler zurück, wenn Sie versuchen, eine Systemsammlung direkt mit einer nicht unterstützten Änderung zu aktualisieren, z. B. wenn Sie versuchen, zusätzliche Indizes zu erstellen.

Die oplog.rs Die Sammlung ist definitiv "besonders", da sie nur für die Replikation vorgesehen ist. Die Replikationsinterna treffen auf dieser Grundlage einige Annahmen über erwartete Operationen für das Oplog. Beispielsweise muss die Replikation nur Oplog-Einträge einfügen – im Gegensatz zu einer begrenzten Sammlung, die Sie selbst erstellen können, sind Oplog-Einträge nie aktualisiert.

Von Anwendungen wird erwartet, dass sie das Oplog mit einem Tailable-Cursor lesen, wenn sie neuen Einträgen folgen müssen, die in das Oplog eingefügt werden, oder eine Suche mit $natural durchführen müssen bestellen.

Das Tailable-Cursor-Tutorial geht detaillierter auf die Verwendung ein, aber ein paar besondere Punkte sind zu beachten:

  • Tailable-Cursor verwenden keine Indizes und geben Dokumente in natürlicher Reihenfolge zurück.
  • Da Tailable-Cursor keine Indizes verwenden, kann der anfängliche Scan für die Abfrage teuer sein; aber nach anfänglicher Erschöpfung des Cursors sind nachfolgende Abrufe der neu hinzugefügten Dokumente kostengünstig