Auf dieser Seite wird beschrieben, wie Sie Cloud Firestore-Datenbanken erstellen, aktualisieren und löschen. Sie können mehrere Cloud Firestore-Datenbanken pro Projekt erstellen. Sie können mehrere Datenbanken verwenden, um Produktions- und Testumgebungen einzurichten, Kundendaten zu isolieren und Daten zu regionalisieren.
Erforderliche Rollen und Berechtigungen
Zum Erstellen und Verwalten von Datenbanken benötigen Sie die folgende IAM-Rolle (Identity and Access Management):
- Cloud Datastore-Inhaber
(
roles/datastore.owner)
Diese Rolle gewährt die folgenden Berechtigungen, die Sie zum Erstellen und Verwalten von Datenbanken benötigen:
- Datenbank erstellen:
datastore.databases.create - Datenbankkonfiguration lesen:
datastore.databases.getMetadata - Datenbank konfigurieren:
datastore.databases.update - Datenbank löschen:
datastore.databases.delete - Datenbank klonen:
datastore.databases.clone
Datenbank erstellen
Verwenden Sie eine der folgenden Methoden, um eine Datenbank zu erstellen:
Console
Firebase Console
-
Rufen Sie in der Firebase Console Datenbanken und Speicher > Firestore auf.
- Klicken Sie auf Datenbank hinzufügen.
- Wählen Sie Standardversion aus. Klicken Sie auf Weiter.
- Geben Sie eine Datenbank-ID ein.
- Wählen Sie einen Standort für Ihre Datenbank aus. Klicken Sie auf Weiter.
-
Wähle einen Startmodus für dein Cloud Firestore Security Rules aus:
- Testmodus
- Gut für den Einstieg in die Mobil- und Web-Clientbibliotheken, aber jeder kann Ihre Daten lesen und überschreiben. Nach dem Testen sollten Sie den Abschnitt Daten schützen lesen.
- Produktionsmodus
- Verweigert alle Lese- und Schreibvorgänge von Mobil- und Webclients. Ihre authentifizierten Anwendungsserver (Node.js, Python, Java) können weiterhin auf Ihre Datenbank zugreifen.
- Klicken Sie auf Erstellen.
gcloud
Führen Sie den gcloud firestore databases create-Befehl aus.
-
So erstellen Sie eine Cloud Firestore Standard-Edition-Datenbank:
gcloud firestore databases create \ --database=DATABASE_ID \ --location=LOCATION \ --edition=standard --type=DATABASE_TYPE
Ersetzen Sie Folgendes:
- DATABASE_ID: eine gültige Datenbank-ID.
- LOCATION: der Name einer Cloud Firestore-Multiregion oder -Region.
- DATABASE_TYPE: entweder
firestore-nativefür den nativen Modus oderdatastore-modefür den Datastore-Modus.
--delete-protection ist ein optionales Flag zum Aktivieren des Löschschutzes.
Sie können eine Datenbank mit aktiviertem Löschschutz erst löschen, wenn Sie diese Einstellung deaktivieren. Diese Einstellung ist standardmäßig deaktiviert.
Verwenden Sie das Flag --tags, um der Datenbank Tags hinzuzufügen. Beispiel:
--tags=123/environment=production,123/costCenter=marketing--tags=tagKeys/333=tagValues/444
Firebase CLI
firebase firestore:databases:create DATABASE_ID \n--location=LOCATION \n[--edition EDITION] \n[--firestore-data-access FIRESTORE_ACCESS] \n[--realtime-updates REALTIME_UPDATES] \n[--delete-protection DELETE_PROTECTION_ENABLEMENT]
Ersetzen Sie Folgendes:
- DATABASE_ID: eine gültige Datenbank-ID.
- LOCATION: der Name einer Cloud Firestore-Multiregion oder -Region.
- EDITION: Für Enterprise-Features auf
enterprisefestgelegt. - FIRESTORE_ACCESS: (nur Enterprise)
ENABLEDoderDISABLED. - REALTIME_UPDATES: (nur Enterprise)
ENABLEDoderDISABLED. - DELETE_PROTECTION_ENABLEMENT: entweder
ENABLEDoderDISABLED.
Terraform
resource "google_firestore_database" "database" { project = "project-id" name = DATABASE_ID location_id = LOCATION type = DATABASE_TYPE // Optional delete_protection_state = DELETE_PROTECTION_STATE }
Ersetzen Sie Folgendes:
- DATABASE_ID: eine gültige Datenbank-ID.
- LOCATION: der Name einer Cloud Firestore-Multiregion oder -Region.
- DATABASE_TYPE: entweder
FIRESTORE_NATIVEfür den nativen Modus oderDATASTORE_MODEfür den Datastore-Modus. - DELETE_PROTECTION_ENABLEMENT: Entweder
DELETE_PROTECTION_ENABLEDoderDELETE_PROTECTION_DISABLED.
delete_protection_state ist ein optionales Argument zum Aktivieren des Löschschutzes. Sie können eine Datenbank mit aktiviertem Löschschutz erst löschen, wenn Sie diese Einstellung deaktivieren. Diese Einstellung ist standardmäßig deaktiviert.
Datenbank-ID
Eine gültige Datenbank-ID muss den folgenden Regeln entsprechen:
- Verwenden Sie nur Buchstaben, Ziffern und Bindestriche (
-). - Buchstaben müssen Kleinbuchstaben sein.
- Das erste Zeichen muss ein Buchstabe sein.
- Das letzte Zeichen muss ein Buchstabe oder eine Ziffer sein.
- Mindestens 4 Zeichen.
- Maximal 63 Zeichen.
- Darf keine UUID sein oder einer UUID ähneln. Verwenden Sie beispielsweise keine ID wie
f47ac10b-58cc-0372-8567-0e02b2c3d479.
Es gibt eine Ausnahme von diesen Regeln: In der Standard-Version wird eine Datenbank mit dem Namen (default) erstellt, wenn Sie keine ID eingeben.
Nachdem Sie eine Datenbank gelöscht haben, können Sie ihre ID etwa 5 Minuten lang nicht wiederverwenden.
Schutz löschen
Verwenden Sie den Löschschutz, um das versehentliche Löschen einer Datenbank zu verhindern. Sie können eine Datenbank mit aktiviertem Löschschutz erst löschen, wenn Sie ihn deaktivieren. Der Löschschutz ist standardmäßig deaktiviert. Sie können die Datenbankkonfiguration aktualisieren, um den Löschschutz zu aktivieren oder zu deaktivieren.
Cloud Firestore Security Rules für Ihre Datenbanken einrichten
Verwenden Sie die Firebase-Befehlszeile, um Cloud Firestore Security Rules in jeder Ihrer Datenbanken bereitzustellen. Weitere Informationen finden Sie im Leitfaden zum Verwalten und Bereitstellen von Cloud Firestore Security Rules.
Mit einer Clientbibliothek auf eine benannte Datenbank zugreifen
Eine benannte Datenbank ist jede Datenbank, die nicht (default) heißt. Standardmäßig stellen die Firebase SDKs und Google API-Clientbibliotheken eine Verbindung zur (default)-Datenbank Cloud Firestore in einem Projekt her. Wenn Sie einen Client erstellen möchten, der mit einer benannten Datenbank verbunden ist, legen Sie die Datenbank-ID fest, wenn Sie einen Client instanziieren.
Datenbanken auflisten
Verwenden Sie eine der folgenden Methoden, um Ihre Datenbanken aufzulisten:
Console
Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.
gcloud
Verwenden Sie den Befehl gcloud firestore databases list, um alle Datenbanken in Ihrem Projekt aufzulisten.
gcloud firestore databases list
Firebase CLI
Verwenden Sie den Befehl firebase firestore:databases:list, um alle Datenbanken in Ihrem Projekt aufzulisten.
firebase firestore:databases:list
Datenbankdetails aufrufen
Verwenden Sie eine der folgenden Methoden, um Details zu einer einzelnen Datenbank aufzurufen:
gcloud
Führen Sie den Befehl gcloud firestore databases describe aus:
gcloud firestore databases describe --database=DATABASE_ID
Firebase CLI
Führen Sie den Befehl firebase firestore:databases:get aus:
firebase firestore:databases:get DATABASE_ID
Die Ausgabe für eine Enterprise-Datenbank enthält die folgenden Felder:
Edition:ENTERPRISEFirestore Data Access:DATA_ACCESS_MODE_ENABLEDoderDATA_ACCESS_MODE_DISABLEDMongoDB Compatible Data Access:DATA_ACCESS_MODE_ENABLEDoderDATA_ACCESS_MODE_DISABLEDRealtime Updates:REALTIME_UPDATES_ENABLEDoderREALTIME_UPDATES_DISABLED
Ersetzen Sie DATABASE_ID durch eine Datenbank-ID.
Datenbankkonfiguration aktualisieren
Verwenden Sie den Befehl gcloud firestore
databases
update, um die Konfigurationseinstellungen einer Datenbank zu aktualisieren.
Verwenden Sie diesen Befehl, um den Löschschutz zu aktivieren oder zu deaktivieren.
Löschschutzeinstellung aktualisieren
Verwenden Sie den Befehl gcloud firestore databases
update mit dem Flag --delete-protection, um den Löschschutz für eine Datenbank zu aktivieren. Beispiel:
gcloud
gcloud firestore databases update --database=DATABASE_ID --delete-protection
Ersetzen Sie DATABASE_ID durch eine Datenbank-ID.
Verwenden Sie zum Deaktivieren des Löschschutzes für eine Datenbank den Befehl gcloud firestore databases
update mit dem Flag --no-delete-protection. Beispiel:
gcloud
gcloud firestore databases update --database=DATABASE_ID --no-delete-protection
Ersetzen Sie DATABASE_ID durch eine Datenbank-ID.
Datenbank löschen
Verwenden Sie zum Löschen einer Datenbank die Console oder das Befehlszeilentool.
Wenn für die Datenbank die Einstellung „Löschschutz“ aktiviert ist, müssen Sie zuerst den Löschschutz deaktivieren.
Wenn die Datenbank App Engine-Suchdaten oder Blob-Entitäten enthält, müssen Sie diese Daten zuerst löschen.
Durch das Löschen einer Datenbank werden nicht automatisch alle Eventarc-Trigger für diese Datenbank gelöscht. Der Trigger sendet keine Ereignisse mehr, bleibt aber bestehen, bis Sie ihn löschen.
Für das Löschen einer Datenbank fallen keine Kosten für Löschvorgänge an.
Console
-
Rufen Sie in der Firebase Console Datenbanken und Speicher > Firestore auf.
- Klicken Sie auf dem Tab Daten über der Datentabellenansicht für die Datenbank auf und wählen Sie dann Datenbank löschen aus.
- Folgen Sie der Anleitung, um die Datenbank zu löschen.
gcloud
Verwenden Sie den Befehl `gcloud firestore databases delete`.
gcloud firestore databases delete --database=DATABASE_ID
Ersetzen Sie DATABASE_ID durch die ID der zu löschenden Datenbank. Verwenden Sie zum Löschen der Standarddatenbank die ID '(default)'.
Datenbank klonen
Sie können eine vorhandene Datenbank zu einem ausgewählten Zeitstempel in eine neue Datenbank klonen:
Die geklonte Datenbank ist eine neue Datenbank, die am selben Standort wie die Quelldatenbank erstellt wird.
Zum Erstellen eines Klons verwendet Cloud Firestore Daten zur Wiederherstellung zu einem bestimmten Zeitpunkt (PITR) der Quelldatenbank. Die geklonte Datenbank enthält alle Daten und Indexe.
Standardmäßig wird die geklonte Datenbank auf dieselbe Weise wie die Quelldatenbank verschlüsselt, entweder mit der Standardverschlüsselung von Google oder mit der CMEK-Verschlüsselung. Sie können einen anderen Verschlüsselungstyp angeben oder einen anderen Schlüssel für die CMEK-Verschlüsselung verwenden.
Der Zeitstempel hat eine Granularität von einer Minute und gibt einen Zeitpunkt in der Vergangenheit an, der im durch das PITR-Fenster definierten Zeitraum liegt:
- Wenn die Wiederherstellung zu einem bestimmten Zeitpunkt für Ihre Datenbank aktiviert ist, können Sie eine beliebige Minute in den letzten 7 Tagen auswählen (oder weniger, wenn die Wiederherstellung zu einem bestimmten Zeitpunkt vor weniger als 7 Tagen aktiviert wurde).
- Wenn die Wiederherstellung zu einem bestimmten Zeitpunkt nicht aktiviert ist, können Sie eine beliebige Minute in der letzten Stunde auswählen.
- Den frühesten Zeitstempel, den Sie auswählen können, finden Sie in der Beschreibung Ihrer Datenbank.
Console
Öffnen Sie in der Firebase Console die Seite Datenbanken und Speicher > Firestore.
Klicken Sie neben dem Datenbanknamen auf und dann auf Datenbank klonen. Der Bereich Datenbank klonen wird angezeigt.
Geben Sie im Bereich Datenbank klonen Parameter für das Klonen der Datenbank an:
Geben Sie im Feld Datenbank-ID eine Datenbank-ID für die neue geklonte Datenbank ein. Die Datenbank-ID darf nicht bereits von einer vorhandenen Datenbank verwendet werden.
Wählen Sie im Feld Klonen von einen Zeitpunkt aus, der für das Klonen verwendet werden soll. Die ausgewählte Zeit entspricht einem PITR-Zeitstempel mit einer Granularität von einer Minute.
Klicken Sie auf Klonen.
gcloud
Verwenden Sie den Befehl gcloud firestore databases
clone, um eine Datenbank zu klonen:
gcloud firestore databases clone \
--source-database='SOURCE_DATABASE' \
--snapshot-time='PITR_TIMESTAMP' \
--destination-database='DESTINATION_DATABASE_ID'
Ersetzen Sie Folgendes:
SOURCE_DATABASE: der Datenbankname einer vorhandenen Datenbank, die Sie klonen möchten. Der Name hat das Format
projects/PROJECT_ID/databases/SOURCE_DATABASE_ID.PITR_TIMESTAMP: ein PITR-Zeitstempel im RFC 3339-Format mit einem Detaillierungsgrad von einer Minute. Beispiel:
2025-06-01T10:20:00.00Zoder2025-06-01T10:30:00.00-07:00.DESTINATION_DATABASE_ID: eine Datenbank-ID für eine neue geklonte Datenbank. Diese Datenbank-ID darf nicht mit einer vorhandenen Datenbank verknüpft sein.
Beispiel:
gcloud firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db'
Wenn Sie beim Klonen einer Datenbank Tags binden möchten, verwenden Sie den vorherigen Befehl mit dem Flag --tags. Dies ist eine optionale Liste von Tag-SCHLÜSSEL=WERT-Paaren, die gebunden werden sollen.
Beispiel:
gcloud firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db'
Standardmäßig hat die geklonte Datenbank dieselbe Verschlüsselungskonfiguration wie die Quelldatenbank. Verwenden Sie das Argument --encryption-type, um die Verschlüsselungskonfiguration zu ändern:
- (Standard)
use-source-encryption: Verwenden Sie dieselbe Verschlüsselungskonfiguration wie die Quelldatenbank. google-default-encryption: Verwenden Sie die Standardverschlüsselung von Google.customer-managed-encryption: CMEK-Verschlüsselung verwenden. Geben Sie im Argument--kms-key-nameeine Schlüssel-ID an.
Im folgenden Beispiel wird gezeigt, wie Sie die CMEK-Verschlüsselung für die geklonte Datenbank konfigurieren:
gcloud firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db' \
--encryption-type='customer-managed-encryption' \
--kms-key-name='projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key'
Firebase CLI
Verwenden Sie den Befehl firebase firestore:databases:clone, um eine Datenbank zu klonen:
firebase firestore:databases:clone \
'SOURCE_DATABASE' \
'DESTINATION_DATABASE' \
--snapshot-time 'PITR_TIMESTAMP'
Ersetzen Sie Folgendes:
SOURCE_DATABASE: der Datenbankname einer vorhandenen Datenbank, die Sie klonen möchten. Der Name hat das Format
projects/PROJECT_ID/databases/SOURCE_DATABASE_ID.DESTINATION_DATABASE: ein Datenbankname für eine neue geklonte Datenbank. Der Name hat das Format
projects/PROJECT_ID/databases/DESTINATION_DATABASE_ID. Dieser Datenbankname darf nicht mit einer vorhandenen Datenbank verknüpft sein.PITR_TIMESTAMP: ein PITR-Zeitstempel im RFC 3339-Format mit einem Detaillierungsgrad von einer Minute. Beispiel:
2025-06-01T10:20:00.00Zoder2025-06-01T10:30:00.00-07:00. Wenn keine Angabe gemacht wird, wird der aktuelle Zeitpunkt als Snapshot ausgewählt, abgerundet auf die Minute.
Standardmäßig hat die geklonte Datenbank dieselbe Verschlüsselungskonfiguration wie die Quelldatenbank. Verwenden Sie das Argument --encryption-type, um die Verschlüsselungskonfiguration zu ändern:
- (Standard)
USE_SOURCE_ENCRYPTION: Verwenden Sie dieselbe Verschlüsselungskonfiguration wie die Quelldatenbank. GOOGLE_DEFAULT_ENCRYPTION: Verwenden Sie die Standardverschlüsselung von Google.CUSTOMER_MANAGED_ENCRYPTION: CMEK-Verschlüsselung verwenden. Geben Sie im Argument--kms-key-nameeine Schlüssel-ID an.
Datenbankbezogene Zugriffsberechtigungen konfigurieren
Mit Identity and Access Management-Bedingungen können Sie Zugriffsberechtigungen auf Datenbankebene konfigurieren. In den folgenden Beispielen wird die Google Cloud CLI verwendet, um einer oder mehreren Datenbanken bedingten Zugriff zuzuweisen. Sie können IAM-Bedingungen auch in der Google Cloud Console definieren.
Vorhandene IAM-Richtlinien ansehen
gcloud projects get-iam-policy PROJECT_ID
Legen Sie PROJECT_ID auf Ihre Projekt-ID fest.
Zugriff auf eine Datenbank gewähren
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' \
--condition='expression=resource.name=="projects/PROJECT_ID/databases/DATABASE_ID",title=TITLE,description=DESCRIPTION'
Legen Sie Folgendes fest:
PROJECT_ID: Ihre Projekt-ID.EMAIL: eine E-Mail-Adresse, die für ein bestimmtes Google-Konto steht. Beispiel:alice@example.com.DATABASE_ID: eine Datenbank-ID.TITLE: ein optionaler Titel für den Ausdruck.DESCRIPTION: eine optionale Beschreibung des Ausdrucks.
Zugriff auf alle Datenbanken außer einer gewähren
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' \
--condition='expression=resource.name!="projects/PROJECT_ID/databases/DATABASE_ID",title=TITLE,description=DESCRIPTION'
Legen Sie Folgendes fest:
PROJECT_ID: Ihre Projekt-ID.EMAIL: eine E-Mail-Adresse, die für ein bestimmtes Google-Konto steht. Beispiel:alice@example.com.DATABASE_ID: eine Datenbank-ID.TITLE: ein optionaler Titel für den Ausdruck.DESCRIPTION: eine optionale Beschreibung des Ausdrucks.
Richtlinien für ein bestimmtes Mitglied und eine bestimmte Rolle entfernen
gcloud projects remove-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' --all
Legen Sie Folgendes fest:
PROJECT_ID: Ihre Projekt-ID.EMAIL: eine E-Mail-Adresse, die für ein bestimmtes Google-Konto steht. Beispiel:alice@example.com.
Cloud Monitoring
Cloud Firestore-Messwerte werden unter zwei überwachten Ressourcen erfasst.
Sie können aggregierte Messwerte auf Datenbankebene in firestore.googleapis.com/Database prüfen. Die unter firestore_instance gemeldeten Messwerte werden auf Projektebene zusammengefasst.
Beschränkungen
- Sie können maximal 100 Datenbanken pro Projekt haben. Sie können den Support kontaktieren, um eine Erhöhung dieses Limits zu beantragen.
- Sie können Ihre
(default)-Datenbank nicht löschen, wenn sie GAE-Suchdaten enthält. Verwenden Sie die Index Delete API, um GAE-Suchdaten zu löschen. Wenn Sie vor Kurzem GAE-Suchdaten gelöscht haben, müssen Sie möglicherweise eine Wartezeit einhalten, bevor Sie die Datenbank löschen können. - Sie können Ihre
(default)-Datenbank nicht löschen, wenn sie Blob-Entitäten enthält. Verwenden Sie die Blobstore Delete API, um Blobstore-Daten zu löschen. Sie können prüfen, ob Ihre(default)-Datenbank Blobstore-Daten enthält, indem Sie die folgende GQL-Abfrage in der Google Cloud Console ausführen:SELECT * FROM __BlobInfo__. - Sie können eine Datenbank-ID erst 5 Minuten nach dem Löschen wiederverwenden.
- Cloud Functions (1. Generation) unterstützt keine benannten Firestore-Datenbanken. Verwenden Sie Cloud Firestore-Trigger (2. Generation), um Ereignisse für benannte Datenbanken zu konfigurieren.
- Firestore-Funktionstrigger v1 und Firestore-Ereignistrigger funktionieren nach dem Löschen der Datenbank möglicherweise nicht mehr, auch wenn eine neue Datenbank mit demselben Namen erstellt wird.