Indexübersicht

In diesem Abschnitt wird die Indexierung für Cloud Firestore Enterprise-Edition beschrieben. In Cloud Firestore Enterprise-Edition werden standardmäßig keine Indexe erstellt. Um die Datenbankleistung zu verbessern, erstellen Sie Indexe für Ihre am häufigsten verwendeten Abfragen.

Indexe haben einen großen Einfluss auf die Leistung einer Datenbank. Wenn ein Index für eine Abfrage vorhanden ist, kann die Datenbank effizient Ergebnisse zurückgeben, indem die Menge der zu scannenden Daten und der Aufwand zum Sortieren der Ergebnisse reduziert werden. Indexeinträge erhöhen jedoch die Speicherkosten und den Aufwand bei Schreibvorgängen für indexierte Felder.

Unterschiede zwischen den Versionen

Die folgende Tabelle bietet einen Überblick über die wichtigsten Unterschiede bei der Indexierung zwischen Cloud Firestore Standard Edition und Cloud Firestore Enterprise Edition.

Funktion Cloud Firestore Standard Edition Cloud Firestore Enterprise-Version
Anforderung an die Indexierung Für alle Abfragen sind Indexe erforderlich. Abfragen sind aufgrund dieser Anforderung in der Regel leistungsstark. Für Abfragen sind keine Indexe erforderlich. Nicht indexierte Lesevorgänge sind möglich, was eine Barriere für das Prototyping beseitigt.
Automatische Indexierung Standardmäßig werden Einzelfeldindexe automatisch für alle Felder in Dokumenten erstellt. Keine automatischen Indexe. Sie müssen alle Indexe manuell verwalten.
Indexdichte Standardmäßig spärlich. Ein Dokument in einer Sammlungsgruppe wird nur indexiert, wenn es einen Wert für jedes indexierte Feld enthält. Standardmäßig nicht spärlich. Alle Dokumente in der Sammlungsgruppe werden indexiert. Indexierte Felder ohne Wert werden auf NULL gesetzt. Das Verhalten kann mit der Option „sparse index“ geändert werden.
Unterstützte Indextypen und ‑optionen
  • Einzelfeldindexe (automatische Indexe)
  • Zusammengesetzte Indexe
  • Umfang der Sammlung oder Sammlungsgruppe
  • Array-contains
  • Vektor
  • Umfang der Sammlung oder Sammlungsgruppe
  • Nicht dünnbesetzte oder dünnbesetzte Indexdichte
  • Array-contains
  • Vektor
  • Eindeutige Indexe

Indexdefinition und -struktur

Ein Index besteht aus Folgendem:

  • eine Sammlungs-ID
  • eine Liste der Felder in der angegebenen Sammlung
  • eine aufsteigende oder absteigende Reihenfolge für jedes Feld

Ein Index kann auch die Optionen sparse oder unique aktivieren.

Indexreihenfolge

Die Reihenfolge und Sortierrichtung der einzelnen Felder definieren den Index eindeutig. Die folgenden Indexe sind beispielsweise zwei unterschiedliche Indexe und nicht austauschbar:

Sammlung Felder
Städte Land (aufsteigend), Bevölkerung (absteigend)
Städte Bevölkerung (absteigend), Land (aufsteigend)

Wenn Sie einen Index zur Unterstützung einer Abfrage erstellen, müssen Sie die Felder in derselben Reihenfolge wie in der Abfrage angeben.

Indexdichte

Standardmäßig werden in Indexeinträgen Daten aus allen Dokumenten in einer Sammlung gespeichert. Das wird als nicht spärlicher Index bezeichnet. Für ein Dokument wird ein Indexeintrag hinzugefügt, unabhängig davon, ob das Dokument eines der im Index angegebenen Felder enthält. Nicht vorhandene Felder werden beim Generieren von Indexeinträgen als NULL-Werte behandelt. Um dieses Verhalten zu ändern, können Sie den Index als Sparse-Index definieren.

Dünnbesetzte Indexe

Ein dünnbesetzter Index indexiert nur die Dokumente in der Sammlung, die einen Wert (einschließlich Null) für mindestens eines der indexierten Felder enthalten. Ein spärlicher Index senkt die Speicherkosten und kann die Leistung verbessern.

Eindeutige Indexe

Legen Sie die Option für eindeutige Indexe fest, um eindeutige Werte für die indexierten Felder zu erzwingen. Bei Indexen für mehrere Felder muss jede Kombination von Werten im Index eindeutig sein. Die Datenbank lehnt alle Aktualisierungs- und Einfügevorgänge ab, bei denen versucht wird, Indexeinträge mit doppelten Werten zu erstellen. Wenn die Daten der indexierten Felder doppelte Werte enthalten und Sie versuchen, einen eindeutigen Index zu erstellen, schlägt der Indexaufbau mit einer Fehlermeldung in den Vorgangsdetails fehl.

Fehlende Felder in einem eindeutigen Index

Wenn Sie ein Dokument mit fehlenden Feldern für den eindeutigen Index einfügen, werden für die fehlenden Felder null-Werte festgelegt. Der resultierende Indexeintrag muss eindeutig sein, da der Vorgang sonst fehlschlägt.

Beispiel:

Sammlung Indexierte Felder Abfragebereich
Städte Name (aufsteigend) Sammlung

Wenn Sie das Dokument {"abbreviation": "LA"} der Sammlung hinzufügen, wird durch den eindeutigen Index ein Eintrag mit name auf null festgelegt. Wenn Sie dann versuchen, das Dokument {"abbreviation": "NYC"} hinzuzufügen, schlägt der Vorgang fehl, da der resultierende Eintrag für den eindeutigen Index derselbe ist.

Das gleiche Verhalten gilt für eindeutige Indexe mit mehreren Feldern. Beim Erstellen oder Aktualisieren eines Dokuments werden fehlende indexierte Felder auf null gesetzt und der resultierende Indexeintrag muss im Index eindeutig sein.

Fehler bei der Indexerstellung beheben

Bei der Verwaltung von Indexen kann es zu Fehlern bei der Indexerstellung kommen. Ein Indexierungsvorgang kann fehlschlagen, wenn in der Datenbank ein Problem mit den Daten auftritt. Indexierungsvorgänge können aus folgenden Gründen fehlschlagen:

  • Sie haben ein Indexlimit erreicht. Beispielsweise hat der Vorgang möglicherweise die maximale Anzahl von Indexeinträgen pro Dokument erreicht. Wenn die Indexerstellung fehlschlägt, wird eine Fehlermeldung angezeigt. Wenn Sie kein Indexlimit erreicht haben, wiederholen Sie den Indexierungsvorgang.
  • Sie haben die Option für den eindeutigen Index festgelegt und die Daten der indexierten Felder würden doppelte Indexeinträge erstellen. Entfernen Sie doppelte Kombinationen von Werten aus den Daten, um fortzufahren.

Nächste Schritte

Indexe erstellen und verwalten