Zarządzanie bazami danych

Na tej stronie dowiesz się, jak tworzyć, aktualizować i usuwać Cloud Firestorebazy danych. W ramach jednego projektu możesz utworzyć wiele baz danych Cloud Firestore. Możesz używać wielu baz danych do konfigurowania środowisk produkcyjnych i testowych, izolowania danych klientów oraz regionalizacji danych.

Wymagane role i uprawnienia

Aby tworzyć bazy danych i nimi zarządzać, musisz mieć tę rolę w usłudze Identity and Access Management:

Ta rola przyznaje te uprawnienia, które są potrzebne do tworzenia baz danych i zarządzania nimi:

  • Utwórz bazę danych: datastore.databases.create
  • Odczytywanie konfiguracji bazy danych: datastore.databases.getMetadata
  • Skonfiguruj bazę danych: datastore.databases.update
  • Usuwanie bazy danych: datastore.databases.delete
  • Klonowanie bazy danych: datastore.databases.clone

Utwórz bazę danych

Aby utworzyć bazę danych, użyj jednej z tych metod:

Konsola
Firebase konsola
  1. W konsoli Firebase otwórz stronę Baza danych Firestore.

    Otwórz bazę danych Firestore

  2. Kliknij Dodaj bazę danych.
  3. Wybierz Wersja standardowa. Kliknij Dalej.
  4. Wpisz identyfikator bazy danych.
  5. Wybierz lokalizację bazy danych. Kliknij Dalej.
  6. Wybierz tryb początkowy Cloud Firestore Security Rules:

    Tryb testowy
    Dobre rozwiązanie na początek pracy z bibliotekami klienta mobilnego i internetowego, ale umożliwia odczytywanie i zastępowanie danych przez dowolną osobę. Po przetestowaniu zapoznaj się z sekcją Zabezpieczanie danych.
    Tryb produkcji
    Odrzuca wszystkie odczyty i zapisy klientów mobilnych oraz internetowych. Uwierzytelnione serwery aplikacji (Node.js, Python, Java) nadal mogą uzyskiwać dostęp do bazy danych.
  7. Kliknij Utwórz.
gcloud

Użyj polecenia gcloud firestore databases create.

--delete-protection to opcjonalna flaga, która włącza ochronę przed usunięciem. Nie możesz usunąć bazy danych z włączoną ochroną przed usunięciem, dopóki nie wyłączysz tego ustawienia. Domyślnie jest ono wyłączone.

Aby dodać tagi do bazy danych, użyj flagi --tags. Przykład:

  • --tags=123/environment=production,123/costCenter=marketing
  • --tags=tagKeys/333=tagValues/444
wiersz poleceń Firebase
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]

Zastąp następujące elementy:

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
}

Zastąp następujące elementy:

delete_protection_state to argument opcjonalny, który umożliwia włączenie ochrony przed usunięciem. Nie możesz usunąć bazy danych z włączoną ochroną przed usunięciem, dopóki nie wyłączysz tego ustawienia. Domyślnie jest ono wyłączone.

Identyfikator bazy danych

Prawidłowy identyfikator bazy danych musi być zgodny z tymi regułami:

  • Może zawierać tylko litery, cyfry i łączniki (-).
  • Litery muszą być małe.
  • Pierwszy znak musi być literą.
  • Ostatni znak musi być literą lub cyfrą.
  • Minimum 4 znaki.
  • Może mieć maksymalnie 63 znaki.
  • Nie może to być identyfikator UUID ani nie może go przypominać. Nie używaj np. identyfikatora takiego jak f47ac10b-58cc-0372-8567-0e02b2c3d479.

Istnieje jeden wyjątek od tych reguł: w wersji Standard zostanie utworzona baza danych o nazwie (default), jeśli nie wpiszesz identyfikatora.

Pamiętaj, że po usunięciu bazy danych nie możesz ponownie użyć jej identyfikatora przez około 5 minut.

Zabezpieczenie przed usunięciem

Używaj ochrony przed usunięciem, aby zapobiec przypadkowemu usunięciu bazy danych. Nie możesz usunąć bazy danych z włączoną ochroną przed usunięciem, dopóki nie wyłączysz tej ochrony. Ochrona przed usunięciem jest domyślnie wyłączona. Możesz zaktualizować konfigurację bazy danych, aby włączyć lub wyłączyć ochronę przed usunięciem.

Konfigurowanie Cloud Firestore Security Rules dla baz danych

Użyj interfejsu wiersza poleceń Firebase, aby wdrożyć Cloud Firestore Security Rules w każdej bazie danych. Więcej informacji znajdziesz w przewodniku po zarządzaniu Cloud Firestore Security Rules i wdrażaniu tego narzędzia.

Uzyskiwanie dostępu do bazy danych o określonej nazwie za pomocą biblioteki klienta

Baza danych z nazwą to każda baza danych, która nie ma nazwy (default). Domyślnie pakiety SDK Firebase i biblioteki klienta interfejsu API Google łączą się z bazą danych (default) Cloud Firestore w projekcie. Aby utworzyć klienta połączonego z bazą danych o określonej nazwie, ustaw identyfikator bazy danych podczas tworzenia instancji klienta.

Wyświetlanie baz danych

Aby wyświetlić listę baz danych, użyj jednej z tych metod:

Konsola

W konsoli Google Cloud otwórz stronę Bazy danych.

Otwórz Bazy danych

gcloud

Aby wyświetlić listę wszystkich baz danych w projekcie, użyj polecenia gcloud firestore databases list.

gcloud firestore databases list
wiersz poleceń Firebase

Aby wyświetlić listę wszystkich baz danych w projekcie, użyj polecenia firebase firestore:databases:list.

firebase firestore:databases:list

Wyświetlanie szczegółów bazy danych

Aby wyświetlić szczegóły pojedynczej bazy danych, użyj jednej z tych metod:

gcloud

Użyj polecenia gcloud firestore databases describe:

gcloud firestore databases describe --database=DATABASE_ID
wiersz poleceń Firebase

Użyj polecenia firebase firestore:databases:get:

firebase firestore:databases:get DATABASE_ID

Dane wyjściowe bazy danych Enterprise zawierają te pola:

  • Edition: ENTERPRISE
  • Firestore Data Access: DATA_ACCESS_MODE_ENABLED lub DATA_ACCESS_MODE_DISABLED
  • MongoDB Compatible Data Access: DATA_ACCESS_MODE_ENABLED lub DATA_ACCESS_MODE_DISABLED
  • Realtime Updates: REALTIME_UPDATES_ENABLED lub REALTIME_UPDATES_DISABLED

Zastąp DATABASE_ID identyfikatorem bazy danych.

Aktualizowanie konfiguracji bazy danych

Aby zaktualizować ustawienia konfiguracji bazy danych, użyj polecenia gcloud firestore databases update. Użyj tego polecenia, aby włączyć lub wyłączyć ochronę przed usunięciem.

Aktualizowanie ustawienia ochrony przed usunięciem

Aby włączyć ochronę bazy danych przed usunięciem, użyj polecenia gcloud firestore databases update z flagą --delete-protection. Przykład:

gcloud
gcloud firestore databases update --database=DATABASE_ID --delete-protection

Zastąp DATABASE_ID identyfikatorem bazy danych.

Aby wyłączyć ochronę przed usunięciem w bazie danych, użyj polecenia gcloud firestore databases update z flagą --no-delete-protection. Przykład:

gcloud
gcloud firestore databases update --database=DATABASE_ID --no-delete-protection

Zastąp DATABASE_ID identyfikatorem bazy danych.

Usuwanie bazy danych

Aby usunąć bazę danych, użyj konsoli lub narzędzia wiersza poleceń.

Jeśli w bazie danych jest włączona ochrona przed usunięciem, musisz najpierw wyłączyć tę ochronę.

Jeśli baza danych zawiera App Enginedane wyszukiwania lub obiekty blob, musisz najpierw usunąć te dane.

Usunięcie bazy danych nie powoduje automatycznego usunięcia Eventarc wyzwalaczy tej bazy danych. Warunek przestanie dostarczać zdarzenia, ale będzie nadal istniał, dopóki go nie usuniesz.

Usunięcie bazy danych nie wiąże się z opłatami za operacje usuwania.

Konsola
  1. W konsoli Firebase otwórz stronę Baza danych Firestore.

    Otwórz bazę danych Firestore

  2. Na karcie Dane nad widokiem tabeli danych bazy danych kliknij , a następnie wybierz Usuń bazę danych.
  3. Postępuj zgodnie z instrukcjami, aby usunąć bazę danych.
gcloud

Użyj polecenia `gcloud firestore databases delete`.

gcloud firestore databases delete --database=DATABASE_ID

Zastąp DATABASE_ID identyfikatorem bazy danych do usunięcia. Aby usunąć domyślną bazę danych, użyj identyfikatora '(default)'

Klonowanie bazy danych

Możesz sklonować istniejącą bazę danych w wybranej sygnaturze czasowej do nowej bazy danych:

  • Sklonowana baza danych to nowa baza danych, która zostanie utworzona w tej samej lokalizacji co źródłowa baza danych.

    Aby utworzyć klon, Cloud Firestore używa danych odzyskiwania do określonego momentu ze źródłowej bazy danych. Sklonowana baza danych zawiera wszystkie dane i indeksy.

  • Domyślnie sklonowana baza danych będzie szyfrowana w taki sam sposób jak źródłowa baza danych, czyli przy użyciu domyślnego szyfrowania Google lub szyfrowania CMEK. Możesz określić inny typ szyfrowania lub użyć innego klucza do szyfrowania CMEK.

  • Sygnatura czasowa ma dokładność do 1 minuty i określa punkt w czasie w przeszłości, w okresie zdefiniowanym przez okno PITR:

    • Jeśli odzyskiwanie do określonego momentu jest włączone w przypadku bazy danych, możesz wybrać dowolną minutę z ostatnich 7 dni (lub krótszego okresu, jeśli odzyskiwanie do określonego momentu zostało włączone mniej niż 7 dni temu).
    • Jeśli odzyskiwanie do określonego momentu nie jest włączone, możesz wybrać dowolną minutę w ciągu ostatniej godziny.
    • Najwcześniejszą sygnaturę czasową, którą możesz wybrać, znajdziesz w opisie bazy danych.

Konsola

Konsola Firebase nie obsługuje klonowania baz danych. Do klonowania baz danych możesz użyć instrukcji dotyczących Google Cloud CLI.

gcloud

Aby sklonować bazę danych, użyj polecenia gcloud firestore databases clone:

gcloud firestore databases clone \
--source-database='SOURCE_DATABASE' \
--snapshot-time='PITR_TIMESTAMP' \
--destination-database='DESTINATION_DATABASE_ID'

Zastąp następujące elementy:

  • SOURCE_DATABASE: nazwa bazy danych, którą chcesz sklonować. Nazwa jest zgodna z formatem projects/PROJECT_ID/databases/SOURCE_DATABASE_ID.

  • PITR_TIMESTAMP: sygnatura czasowa PITRformacie RFC 3339 z dokładnością do minuty. Na przykład: 2025-06-01T10:20:00.00Z lub 2025-06-01T10:30:00.00-07:00.

  • DESTINATION_DATABASE_ID: identyfikator bazy danych nowej sklonowanej bazy danych. Ten identyfikator bazy danych nie może być powiązany z istniejącą bazą danych.

Przykład:

gcloud firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db'

Jeśli podczas klonowania bazy danych chcesz powiązać ją z niektórymi tagami, użyj poprzedniego polecenia z flagą --tags, która jest opcjonalną listą par tagów KLUCZ=WARTOŚĆ do powiązania.

Przykład:

gcloud firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db'

Domyślnie sklonowana baza danych będzie miała taką samą konfigurację szyfrowania jak źródłowa baza danych. Aby zmienić konfigurację szyfrowania, użyj argumentu --encryption-type:

  • (Domyślnie) use-source-encryption: użyj tej samej konfiguracji szyfrowania co źródłowa baza danych.
  • google-default-encryption: użyj domyślnego szyfrowania Google.
  • customer-managed-encryption: użyj szyfrowania CMEK. W argumencie --kms-key-name podaj identyfikator klucza.

Poniższy przykład pokazuje, jak skonfigurować szyfrowanie CMEK w przypadku sklonowanej bazy danych:

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'

wiersz poleceń Firebase

Aby sklonować bazę danych, użyj polecenia firebase firestore:databases:clone:

firebase firestore:databases:clone \
'SOURCE_DATABASE' \
'DESTINATION_DATABASE' \
--snapshot-time 'PITR_TIMESTAMP'

Zastąp następujące elementy:

  • SOURCE_DATABASE: nazwa bazy danych, którą chcesz sklonować. Nazwa jest zgodna z formatem projects/PROJECT_ID/databases/SOURCE_DATABASE_ID.

  • DESTINATION_DATABASE: nazwa bazy danych dla nowej sklonowanej bazy danych. Nazwa jest zgodna z formatem projects/PROJECT_ID/databases/DESTINATION_DATABASE_ID. Ta nazwa bazy danych nie może być powiązana z istniejącą bazą danych.

  • PITR_TIMESTAMP: sygnatura czasowa PITRformacie RFC 3339 z dokładnością do minuty. Na przykład: 2025-06-01T10:20:00.00Z lub 2025-06-01T10:30:00.00-07:00. Jeśli nie zostanie określony, wybrany moment będzie bieżącym czasem zaokrąglonym w dół do minuty.

Domyślnie sklonowana baza danych będzie miała taką samą konfigurację szyfrowania jak źródłowa baza danych. Aby zmienić konfigurację szyfrowania, użyj argumentu --encryption-type:

  • (Domyślnie) USE_SOURCE_ENCRYPTION: użyj tej samej konfiguracji szyfrowania co źródłowa baza danych.
  • GOOGLE_DEFAULT_ENCRYPTION: użyj domyślnego szyfrowania Google.
  • CUSTOMER_MANAGED_ENCRYPTION: użyj szyfrowania CMEK. W argumencie --kms-key-name podaj identyfikator klucza.

Konfigurowanie uprawnień dostępu do poszczególnych baz danych

Możesz użyć warunków usługi Identity and Access Management, aby skonfigurować uprawnienia dostępu na poziomie poszczególnych baz danych. W przykładach poniżej używamy Google Cloud CLI do przypisywania dostępu warunkowego do co najmniej 1 bazy danych. Możesz też zdefiniować warunki uprawnień w konsoli Google Cloud.

Wyświetlanie istniejących zasad uprawnień

gcloud projects get-iam-policy PROJECT_ID

Ustaw PROJECT_ID na identyfikator projektu.

Przyznawanie dostępu do bazy danych

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'

Ustaw te wartości:

  • PROJECT_ID: identyfikator projektu
  • EMAIL: adres e-mail, który reprezentuje konkretne konto Google. Na przykład: alice@example.com.
  • DATABASE_ID: identyfikator bazy danych.
  • TITLE: opcjonalny tytuł wyrażenia.
  • DESCRIPTION: opcjonalny opis wyrażenia.

Przyznawanie dostępu do wszystkich baz danych z wyjątkiem jednej

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'

Ustaw te wartości:

  • PROJECT_ID: identyfikator projektu
  • EMAIL: adres e-mail, który reprezentuje konkretne konto Google. Na przykład: alice@example.com.
  • DATABASE_ID: identyfikator bazy danych.
  • TITLE: opcjonalny tytuł wyrażenia.
  • DESCRIPTION: opcjonalny opis wyrażenia.

Usuwanie zasad dotyczących danego użytkownika i roli

gcloud projects remove-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' --all

Ustaw te wartości:

  • PROJECT_ID: identyfikator projektu
  • EMAIL: adres e-mail, który reprezentuje konkretne konto Google. Na przykład: alice@example.com.

Cloud Monitoring

Dane Cloud Firestore są raportowane w ramach 2 monitorowanych zasobów.

Możesz sprawdzać zagregowane dane na poziomie bazy danych, przeglądając firestore.googleapis.com/Database. Wskaźniki podane w sekcji firestore_instance są agregowane na poziomie projektu.

Ograniczenia

  • Możesz mieć maksymalnie 100 baz danych na projekt. Możesz skontaktować się z zespołem pomocy, aby poprosić o zwiększenie tego limitu.
  • Nie możesz usunąć bazy danych (default), jeśli zawiera ona jakiekolwiek dane wyszukiwania GAE. Aby usunąć dane wyszukiwania GAE, użyj interfejsu index delete api. Jeśli niedawno usunięto dane wyszukiwarki GAE, może wystąpić okres oczekiwania, zanim będzie można usunąć bazę danych.
  • Nie możesz usunąć bazy danych (default), jeśli zawiera ona jakiekolwiek obiekty blob. Aby usunąć dane Blobstore, użyj interfejsu API usuwania Blobstore. Możesz sprawdzić, czy w Twojej bazie danych (default) znajdują się dane Blobstore, wykonując w konsoli Google Cloud to zapytanie GQL:SELECT * FROM __BlobInfo__
  • Nie możesz ponownie użyć identyfikatora bazy danych, dopóki nie minie 5 minut od usunięcia.
  • Cloud Functions w wersji 1 nie obsługuje nazwanych baz danych Firestore. Użyj aktywatorów Cloud Firestore (2 generacji), aby skonfigurować zdarzenia dla nazwanych baz danych.
  • Triggery funkcji Firestore w wersji 1triggery zdarzeń Firestore mogą przestać działać po usunięciu bazy danych, nawet jeśli utworzysz nową bazę danych o tej samej nazwie.

Co dalej?