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 folgenden Firestore-Datenbankmodi – nativer Modus und Datastore-Modus – erläutert.
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 die folgenden Funktionen:
- Eine 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 Firestore-Funktionen 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:
- Alle Datastore-Abfragen sind jetzt strikt konsistent, 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 die Datastore-Ansicht.
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. Jede Datenbank muss jedoch denselben Typ haben. 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 | Eine Speicherschicht mit strikter Konsistenz. | Eine Speicherschicht mit strikter Konsistenz. |
Abfragen und Transaktionen |
|
|
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:
|
Datastore-Clientbibliotheken:
|
Sicherheit |
|
IAM verwaltet den 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 dieselben Standorte. Eine detaillierte Liste der Standorte finden Sie auf den folgenden Seiten: |
|
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 auf den folgenden Seiten: |
|
Console | Firebase Console und Firestore-Ansicht in der Google Cloud Console | Datastore-Ansicht in 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
Verwenden Sie den Befehl gcloud firestore databases update, um die Datenbank in den nativen Modus zu ändern.
gcloud firestore databases update --type=firestore-native --database='DATABASE_ID'
Ersetzen Sie DATABASE_ID durch die ID Ihrer Datenbank.
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/DATABASE_ID?updateMask=type"
Ersetzen Sie Folgendes:
- PROJECT_ID: die Projekt-ID
- DATABASE_ID: die Datenbank-ID
Datenbank in den Datastore-Modus ändern:
gcloud
Verwenden Sie den Befehl gcloud firestore databases update, um die Datenbank in den Datastore-Modus zu ändern.
gcloud firestore databases update --type=datastore-mode --database='DATABASE_ID'
Ersetzen Sie DATABASE_ID durch die ID Ihrer Datenbank.
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/DATABASE_ID?updateMask=type"
Ersetzen Sie Folgendes:
- PROJECT_ID: die Projekt-ID
- DATABASE_ID: die Datenbank-ID