Zwischen nativem und Datastore-Modus wechseln

Beim Erstellen einer neuen Firestore-Datenbank können Sie die Datenbankinstanz für die Ausführung im Datastore-Modus konfigurieren, wodurch die Datenbank abwärtskompatibel mit Datastore ist. Auf dieser Seite werden die Unterschiede zwischen den beiden Firestore-Datenbankmodi – nativer Modus und Datastore-Modus – beschrieben.

Firestore im nativen Modus

Firestore ist die nächste Hauptversion von Datastore und ein Rebranding des Produkts. Firestore vereint das Beste aus Datastore und Firebase Realtime Database. Diese NoSQL-Dokumentendatenbank wurde für Autoscaling, hohe Leistung und einfache Anwendungsentwicklung konzipiert.

Firestore bietet unter anderem die folgenden neuen Features:

  • Eine neue Speicherschicht mit strikter Konsistenz
  • Ein Datenmodell für Sammlungen und Dokumente
  • Echtzeitaktualisierungen
  • Mobil- und Web-Clientbibliotheken

Firestore ist abwärtskompatibel mit Datastore. Das gilt jedoch nicht für das neue Datenmodell, Echtzeitaktualisierungen und die Features der Mobil- und Web-Clientbibliotheken. Sie müssen Firestore im nativen Modus verwenden, um auf alle neuen Features zugreifen zu können.

Firestore im Datastore-Modus

Im Datastore-Modus behält Firestore das Systemverhalten von Datastore bei. Dabei wird jedoch auf die Speicherschicht von Firestore zugegriffen, wodurch die folgenden Beschränkungen von Datastore entfallen:

  • Eventual Consistency: Datastore-Abfragen haben strikte Konsistenz, es sei denn, Sie fordern explizit die Eventual Consistency an.
  • Abfragen in Transaktionen müssen nicht länger Ancestor-Abfragen sein.
  • Transaktionen sind nicht mehr auf 25 Entitätengruppen beschränkt.
  • Schreibvorgänge in eine Entitätengruppe sind nicht mehr auf 1 Vorgang pro Sekunde beschränkt.

Im Datastore-Modus werden Firestore-Features deaktiviert, die nicht mit Datastore kompatibel sind:

  • Im Projekt werden Datastore API-Anfragen akzeptiert und Firestore API-Anfragen abgelehnt.
  • Im Projekt werden Datastore-Indexe anstelle von Firestore-Indexen verwendet.
  • Sie können Datastore-Clientbibliotheken, jedoch keine Firestore-Clientbibliotheken mit diesem Projekt verwenden.
  • Die Echtzeitfunktionen von Firestore stehen nicht zur Verfügung.
  • In der Google Cloud Console verwendet die Datenbank den Datastore-Viewer.

Automatisches Upgrade auf den Datastore-Modus

Vorhandene Datastore-Datenbanken werden automatisch auf Firestore im Datastore-Modus aktualisiert. Neue Projekte, für die eine Datastore-Datenbank erforderlich ist, sollten Firestore im Datastore-Modus verwenden.

Preise und Standorte

Für Datenbanken im nativen Modus und im Datastore-Modus gilt dieselbe Preisstruktur und sie sind an denselben Speicherorten verfügbar. Die Preise und Standorte werden auf den folgenden Seiten detailliert beschrieben:

Firestore im nativen Modus

Firestore im Datastore-Modus

Datenbankmodus auswählen

Beim Erstellen einer neuen Firestore-Datenbank müssen Sie einen Datenbankmodus auswählen. Sie können im selben Projekt sowohl Datenbanken im Datastore-Modus als auch im nativen Modus verwenden, allerdings hat jede Datenbank nur einen Typ. Für die Auswahl eines Datenbankmodus empfehlen wir Folgendes:

  • Firestore im Datastore-Modus für neue Serverprojekte verwenden

    Mit Firestore im Datastore-Modus können Sie etablierte Datastore-Serverarchitekturen nutzen, ohne weiter den grundlegenden Beschränkungen von Datastore zu unterliegen. Im Datastore-Modus kann automatisch auf Millionen Schreibvorgänge pro Sekunde skaliert werden.

  • Firestore im nativen Modus für neue Mobil- und Webanwendungen verwenden

    Firestore bietet Mobil- und Web-Clientbibliotheken mit Echtzeit- und Offlinefeatures. Im nativen Modus kann automatisch auf Millionen gleichzeitig ausgeführter Clients skaliert werden.

Funktionsvergleich

In der folgenden Tabelle wird das Systemverhalten der Datenbankmodi verglichen:

Firestore im
nativen Modus
Firestore im
Datastore-Modus
Datenmodell Nach Dokumenten und Sammlungen strukturierte Dokumentendatenbank Nach Arten und Entitätengruppen strukturierte Entitäten
Speicherschicht Neue Speicherschicht, die immer mit Strong Consistency arbeitet Neue Speicherschicht, die immer mit Strong Consistency arbeitet
Abfragen und Transaktionen
  • Abfragen mit strikter Konsistenz in der gesamten Datenbank
  • Hebt die früheren Beschränkungen der Konsistenz von Datastore auf
  • Abfragen mit strikter Konsistenz in der gesamten Datenbank
  • Transaktionen können auf eine beliebige Anzahl von Entitätengruppen zugreifen
Unterstützung für Datastore v1 API Nein, Anfragen werden abgelehnt Ja
Unterstützung für Firestore v1 API Ja Nein, Anfragen werden abgelehnt
Echtzeitaktualisierungen

Bietet die Möglichkeit, ein oder mehrere Dokumente auf Echtzeitaktualisierungen hin zu überwachen

Während der Überwachung eines oder mehrerer Dokumente werden Ihre Clients bei Datenänderungen informiert und versenden die neuesten Daten.

Nicht unterstützt
Offline-Datenpersistenz Die Mobil- und Web-Clientbibliotheken unterstützen Offline-Datenpersistenz. Nicht unterstützt
Clientbibliotheken Firestore-Clientbibliotheken:
  • Java
  • Python
  • PHP
  • Einfach loslegen (Go)
  • Ruby
  • C#
  • Node.js
  • Android
  • iOS+
  • Web
  • C++
  • Unity
Datastore-Clientbibliotheken:
  • Java
  • Python
  • PHP
  • Einfach loslegen (Go)
  • Ruby
  • C#
  • Node.js
  • C++
Sicherheit
  • Der Datenbankzugriff wird mit der Identitäts- und Zugriffsverwaltung (IAM) verwaltet.
  • Mit Firestore-Sicherheitsregeln werden serverlose Authentifizierung und Autorisierung für Mobil- und Web-Clientbibliotheken unterstützt.
IAM verwaltet Datenbankzugriff
Leistung Skaliert automatisch auf mehrere Millionen Clients gleichzeitig. Skaliert automatisch auf mehrere Millionen Schreibvorgänge pro Sekunde
SLA Firestore SLA Firestore SLA
Standorte

Beide Modi unterstützen die gleichen Standorte:

  • USA (mehrere Regionen)
  • Europa (mehrere Regionen)
  • Oregon
  • Los Angeles
  • Salt Lake City
  • Las Vegas
  • Montreal
  • Los Angeles
  • South Carolina
  • Northern Virginia
  • São Paulo
  • London
  • Frankfurt
  • Warschau
  • Zürich
  • Mumbai
  • Singapur
  • Jakarta
  • Hongkong
  • Taiwan
  • Tokio
  • Osaka
  • Seoul
  • Sydney
Preise

Beide Modi verwenden dieselbe Preisstruktur für Entitäts- und Dokumentenvorgänge.

Firestore im Datastore-Modus erhebt keine Gebühren für kleine Vorgänge.

Für beide Modi gilt dieselbe Preisstruktur für gespeicherte Daten und Netzwerkbandbreite.

Weitere Informationen zu den Preisen finden Sie hier:

Console Firebase Console und Firestore-Betrachter in der Google Cloud Console Datastore-Betrachter der Google Cloud Console
Namespaces Nicht unterstützt Unterstützt
Integration der App Engine-Clientbibliothek

Nicht unterstützt in den Laufzeiten der App Engine-Standardumgebung für Python 2.7 und PHP 5.5

Unterstützt in der App Engine-Standardumgebung alle anderen Laufzeiten.

Unterstützt in allen Laufzeiten der flexiblen App Engine-Umgebung alle Laufzeiten.

In allen Laufzeiten unterstützt

Neue Datenbank erstellen

Sie können eine neue Firestore-Datenbank entweder im nativen Modus oder im Datastore-Modus erstellen. Diese Auswahl hängt nicht von den Modi vorhandener Datenbanken in Ihrem Projekt ab.

Weitere Informationen finden Sie unter Datenbanken erstellen und verwalten.

Zwischen nativem Modus und Datastore-Modus wechseln

Wenn Ihre Datenbank leer ist, können Sie zwischen dem nativen Modus und dem Datastore-Modus wechseln.

Ändern Sie die Datenbank in den nativen Modus:

gcloud

Ändern Sie die Datenbank mit dem Befehl gcloudfirestore databases update in den nativen Modus.

gcloud firestore databases update --type=firestore-native

rest

curl --request PATCH \
--header "Authorization: Bearer "$(gcloud auth print-access-token) \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"type":"FIRESTORE_NATIVE"}' \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/(default)?updateMask=type"

Wechseln Sie für die Datenbank in den Datenspeicher-Modus:

gcloud

Wechseln Sie mit dem Befehl gcloudfirestore databases update in den Datastore-Modus der Datenbank.

 gcloud firestore databases update --type=datastore-mode

rest

curl --request PATCH \
--header "Authorization: Bearer "$(gcloud auth print-access-token) \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"type":"DATASTORE_MODE"}' \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/(default)?updateMask=type"