Firestore Pipelines – Übersicht über Vorgänge

Die Firestore-Pipeline-Vorgänge sind ein zentrales Feature der Firestore Enterprise-Edition, das auf einer neuen Abfrage-Engine basiert, um die Bandbreite der möglichen Abfragen erheblich zu erweitern. Firestore-Pipelinevorgänge verwenden eine flexible Abfragesyntax und eine spezielle Indexierungsmethode, bei der Indexe optional sind und nicht automatisch erstellt werden. Dies ermöglicht erweiterte Datenabrufvorgänge für Anwendungen.

Funktionen von Firestore-Pipelinevorgängen

Für die Firestore Enterprise-Edition und die neuen Pipeline-Vorgänge wird eine neue, erweiterte Abfrage-Engine verwendet, mit der viele Einschränkungen der Firestore Standard-Edition aufgehoben werden. Firestore-Pipelinevorgänge bieten über 120 neue Abfragefunktionen. Die Firestore-Pipeline-Vorgänge haben die folgenden Funktionen:

Composable-Syntax für Phasen

Pipeline-Abfragen werden erstellt, indem eine Reihe von sequenziellen Phasen definiert wird, die der Reihe nach ausgeführt werden. Das ermöglicht komplexe Vorgänge wie das Filtern nach dem Ergebnis einer Aggregation, was zuvor nicht möglich war.

Im folgenden Beispiel sehen Sie eine Pipeline-Abfrage, mit der die Anzahl der eindeutigen Produkt-IDs ermittelt wird, die im letzten Monat aufgerufen wurden:

guard let cutoffDate = Calendar.current.date(byAdding: .month, value: -1, to: Date()) else {
  return
}
let snapshot = try await db.pipeline()
  .collection("productViews")
  .where(Field("viewedAt").greaterThan(cutoffDate.timeIntervalSince1970))
  .aggregate([Field("productId").countDistinct().as("uniqueProductViews")])
  .execute()

Erweiterte Funktionen

Die Pipelines-Abfrage bietet eine Vielzahl neuer Funktionen, darunter:

  • Aggregationen: Unterstützung für neue Aggregationsfunktionen (wie sum(...), min(...) und count_distinct(...)) in Kombination mit beliebigen Gruppierungsfeldern.
  • Komplexes Filtern: Unterstützung von über 120 neuen Funktionen, um beliebig komplexe where(...)-Anweisungen auszudrücken, einschließlich regex_match(...), add(...) und str_contains(...), ohne dass strenge Indexanforderungen gelten.
  • Teilweises Lesen / Projektionen: Mit select(...), remove_fields(...) und vielen anderen Phasen zur Dokumentbearbeitung können dynamische Teilmengen von Dokumenten abgerufen werden.

Echtzeit- und Offlinesupport

Um Echtzeit- und Offlinefunktionen zu nutzen, können Entwickler die Firestore Core-Vorgänge in der Firestore Enterprise-Version verwenden.

Client- und Tooling-Integration

Die Enterprise-Version enthält spezielle Funktionen für die Interaktion mit Pipeline-Abfragen und deren Verwaltung:

  • Abfrageerklärung und ‑profilerstellung:Mit den Ergebnissen von „Query Explain“ können Sie nachvollziehen, wie viele Lese- oder Schreibeinheiten eine Abfrage verbraucht, und die Ausführung analysieren.
  • Abfragestatistiken : Die Enterprise-Version unterstützt Abfragestatistiken, mit denen Sie ermitteln können, wo Indexe erstellt werden könnten, um Leistung und Kosten zu verbessern. Dazu werden Informationen zu den Leistungsmerkmalen von Abfragen bereitgestellt.
  • Neue Indextypen : Sie können spezielle Indexe für die Enterprise-Version erstellen, einschließlich Sparse-Indexe. Außerdem können Sie Vektorsuchindizes für Enterprise-Datenbanken erstellen und bearbeiten.

Unterschiede zwischen Firestore Standard und Firestore Enterprise

Der wesentliche betriebliche Unterschied zwischen den Core- und Pipeline-Vorgängen liegt in der Verwaltung der Indexierung, die sich direkt auf Leistung und Kosten auswirkt.

Firestore Standard – Kernvorgänge Firestore Enterprise – Core- und Pipeline-Vorgänge
Anforderung an die Indexierung Für Abfragen sind Indexe erforderlich.

Indexe für einzelne Felder werden automatisch erstellt. Für komplexere Abfragen sind zusammengesetzte Indexe oder Sammlungsgruppenindexe erforderlich, die manuell konfiguriert werden müssen.

Indexe sind nicht erforderlich und daher für Abfragen optional.

Sie definieren Indexe nach Bedarf. Die Enterprise-Version unterstützt auch eine größere Auswahl an Indextypen, darunter nicht-sparse/sparse und eindeutige Indexe.

Leistungsrisiko Indexierte Abfragen:Leistung und Kosten werden mit der Größe des Ergebnissatzes skaliert.

Nicht indexierte Abfragen:Leistung und Kosten skalieren mit der Größe Ihres Datasets.

Indexierte Abfragen:Leistung und Kosten werden mit der Größe des Ergebnissatzes skaliert.

Wir empfehlen, die Tools „Query Explain“ und „Query Insights“ zu verwenden, um Indexe zu erstellen und die Leistung und Kosten Ihrer Abfragen zu verbessern.

Auswirkungen auf die Speicherkosten Sie verursachen Speicher-Overhead durch automatische und zusammengesetzte Indexe. Sie sparen Speicherkosten, da nicht automatisch für jedes Feld Indexe erstellt werden.
Cost Basis Die Abrechnung erfolgt pro Lese-, Schreib- und Löschvorgang für ein Dokument. Die Abrechnung erfolgt pro Leseeinheit (4-KB-Tranchen) und Schreibeinheit (1-KB-Tranchen). Für das Schreiben von Indexeinträgen werden Schreibeinheiten verbraucht.

Weitere Informationen zu den neuen Preisen

Sicherheitsregeln Sicherheitsregeln schützen Sammlungen durch Überprüfung der Lese-/Schreibberechtigungen. Sicherheitsregeln schützen Sammlungen durch Überprüfung der Lese-/Schreibberechtigungen. Im Leitfaden Datenmodell erfahren Sie, wie Sie Ihre Daten modellieren, um Pipeline-Abfragen zu unterstützen.