Datenbanken verwalten

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):

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
  1. Rufen Sie in der Firebase Console Datenbanken und Speicher > Firestore auf.

    Firestore aufrufen

  2. Klicken Sie auf Datenbank hinzufügen.
  3. Wählen Sie Standardversion aus. Klicken Sie auf Weiter.
  4. Geben Sie eine Datenbank-ID ein.
  5. Wählen Sie einen Standort für Ihre Datenbank aus. Klicken Sie auf Weiter.
  6. 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.
  7. 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:

--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 enterprise festgelegt.
  • FIRESTORE_ACCESS: (nur Enterprise) ENABLED oder DISABLED.
  • REALTIME_UPDATES: (nur Enterprise) ENABLED oder DISABLED.
  • DELETE_PROTECTION_ENABLEMENT: entweder ENABLED oder DISABLED.
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_NATIVE für den nativen Modus oder DATASTORE_MODE für den Datastore-Modus.
  • DELETE_PROTECTION_ENABLEMENT: Entweder DELETE_PROTECTION_ENABLED oder DELETE_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.

Zur Seite „Datenbanken“

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: ENTERPRISE
  • Firestore Data Access: DATA_ACCESS_MODE_ENABLED oder DATA_ACCESS_MODE_DISABLED
  • MongoDB Compatible Data Access: DATA_ACCESS_MODE_ENABLED oder DATA_ACCESS_MODE_DISABLED
  • Realtime Updates: REALTIME_UPDATES_ENABLED oder REALTIME_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
  1. Rufen Sie in der Firebase Console Datenbanken und Speicher > Firestore auf.

    Firestore aufrufen

  2. Klicken Sie auf dem Tab Daten über der Datentabellenansicht für die Datenbank auf und wählen Sie dann Datenbank löschen aus.
  3. 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

  1. Öffnen Sie in der Firebase Console die Seite Datenbanken und Speicher > Firestore.

  2. Klicken Sie neben dem Datenbanknamen auf und dann auf Datenbank klonen. Der Bereich Datenbank klonen wird angezeigt.

  3. Geben Sie im Bereich Datenbank klonen Parameter für das Klonen der Datenbank an:

    1. 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.

    2. 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.

  4. 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.00Z oder 2025-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-name eine 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.00Z oder 2025-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-name eine 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.

Nächste Schritte