Veritabanlarını yönetme

Bu sayfada, Cloud Firestore veritabanlarının nasıl oluşturulacağı, güncelleneceği ve silineceği açıklanmaktadır. Proje başına birden fazla Cloud Firestore veritabanı oluşturabilirsiniz. Üretim ve test ortamları oluşturmak, müşteri verilerini izole etmek ve verileri bölgeselleştirmek için birden fazla veritabanı kullanabilirsiniz.

(default) veritabanı

Bir veritabanı belirtmezseniz, Cloud Firestore istemci kitaplıkları ve Google Cloud CLI varsayılan olarak (default) veritabanına bağlanır.

Gerekli roller

Veritabanı oluşturmak ve yönetmek için Owner veya Datastore Owner Identity and Access Management rolüne ihtiyacınız vardır. Bu roller, gerekli izinleri verir.

Gerekli izinler

Veritabanlarını yönetmek için aşağıdaki izinlere ihtiyacınız vardır:

  • Veritabanı oluşturma: datastore.databases.create
  • Veritabanı yapılandırmasını okuma: datastore.databases.getMetadata
  • Veritabanı yapılandırma: datastore.databases.update
  • Veritabanını silme: datastore.databases.delete
  • Veritabanı klonlama: datastore.databases.clone

Veritabanı oluşturun

Veritabanı oluşturmak için aşağıdaki yöntemlerden birini kullanın:

Konsol
  1. Firebase konsolunda Firestore Database sayfasına gidin.

    Firestore veritabanına gitme

  2. Bu sizin ilk adlandırılmış veritabanınızsa Veritabanı ekle'ye tıklayın.
  3. Aksi takdirde, (varsayılan)'ı ve ardından Veritabanı ekle'yi tıklayın.
  4. Veritabanınızı yapılandırın. Bir veritabanı kimliği girin. Bir yer seçin. Veritabanı oluştur'u tıklayın.
gcloud

gcloud firestore databases create komutunu kullanın.

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--type=DATABASE_TYPE \
[--delete-protection]

Aşağıdakini değiştirin:

--delete-protection silme korumasını etkinleştirmek için isteğe bağlı bir işarettir. Bu ayarı devre dışı bırakmadan silme koruması etkin olan bir veritabanını silemezsiniz. Bu ayar varsayılan olarak devre dışıdır.

Veritabanına etiket eklemek için --tags işaretini kullanın. Örneğin:

  • --tags=123/environment=production,123/costCenter=marketing
  • --tags=tagKeys/333=tagValues/444
Firebase CLI
firebase firestore:databases:create DATABASE_ID \
--location=LOCATION \
[--delete-protection DELETE_PROTECTION_ENABLEMENT]

Aşağıdakini değiştirin:

--delete-protection silme korumasını etkinleştirmek için isteğe bağlı bir bağımsız değişkendir. Silme koruması etkinleştirilmiş bir veritabanını bu ayarı devre dışı bırakana kadar silemezsiniz. Bu ayar varsayılan olarak devre dışıdır.

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
}

Aşağıdakini değiştirin:

delete_protection_state silme korumasını etkinleştirmek için isteğe bağlı bir bağımsız değişkendir. Silme koruması etkinleştirilmiş bir veritabanını bu ayarı devre dışı bırakana kadar silemezsiniz. Bu ayar varsayılan olarak devre dışıdır.

Veritabanı kimliği

Geçerli veritabanı kimlikleri arasında (default) ve aşağıdakilere uyan kimlikler bulunur:

  • Yalnızca harf, rakam ve kısa çizgi (-) karakterlerini içerir.
  • Harfler küçük olmalıdır.
  • İlk karakter harf olmalıdır.
  • Son karakter harf veya rakam olmalıdır.
  • En az 4 karakter olmalıdır.
  • Maksimum 63 karakterdir.
  • UUID olmamalı veya UUID'ye benzememelidir. Örneğin, f47ac10b-58cc-0372-8567-0e02b2c3d479 gibi bir kimlik kullanmayın.

Bir veritabanını silerseniz 5 dakika geçene kadar veritabanı kimliğini hemen yeniden kullanamazsınız.

Korumayı silme

Veritabanının yanlışlıkla silinmesini önlemek için silme korumasını kullanın. Silme koruması etkinleştirilmiş bir veritabanını, silme korumasını devre dışı bırakana kadar silemezsiniz. Silme koruması varsayılan olarak devre dışıdır. Veritabanını oluştururken silme korumasını etkinleştirebilir veya silme korumasını etkinleştirmek için veritabanı yapılandırmasını güncelleyebilirsiniz.

Veritabanlarınız için Cloud Firestore Security Rules'yi ayarlayın

Cloud Firestore Security Rules öğesini her bir veritabanınıza dağıtmak için Firebase CLI'sini kullanın. Yönetim ve dağıtım kılavuzuna Cloud Firestore Security Rules bakın.

İstemci kitaplığıyla adlandırılmış bir veritabanına erişim

Adlandırılmış veritabanı, (default) olarak adlandırılmayan tüm veritabanlarını içerir. Varsayılan olarak, Firebase SDK'ları ve Google API İstemci Kitaplıkları bir projedeki (default) Cloud Firestore veritabanına bağlanır. Adlandırılmış bir veritabanına bağlı bir istemci oluşturmak için, bir istemciyi örneklediğinizde veritabanı kimliğini ayarlayın.

Veritabanlarını listeleme

Veritabanlarınızı listelemek için aşağıdaki yöntemlerden birini kullanın:

Konsol

Google Cloud Console'da Veritabanları sayfasına gidin.

Veritabanları'na git

gcloud

Projenizdeki tüm veritabanlarını listelemek için gcloud firestore databases list komutunu kullanın.

gcloud firestore databases list
Firebase CLI

Projenizdeki tüm veritabanlarını listelemek için firebase firestore:databases:list komutunu kullanın.

firebase firestore:databases:list

Veritabanı ayrıntılarını görüntüleme

Tek bir veritabanıyla ilgili ayrıntıları görüntülemek için aşağıdaki yöntemlerden birini kullanın:

gcloud

gcloud firestore databases describe komutunu kullanın:

gcloud firestore databases describe --database=DATABASE_ID
Firebase CLI

firebase firestore:databases:get komutunu kullanın:

firebase firestore:databases:get DATABASE_ID

DATABASE_ID yerine bir veritabanı kimliği yazın.

Veritabanı yapılandırmasını güncelleme

Bir veritabanının yapılandırma ayarlarını güncellemek için gcloud firestore databases update komutunu kullanın. Silme korumasını etkinleştirmek veya devre dışı bırakmak için bu komutu kullanın.

Silme koruması ayarını güncelleme

Bir veritabanında silme korumasını etkinleştirmek için gcloud firestore databases update --delete-protection işaretini içeren komutu kullanın. Örneğin:

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

DATABASE_ID yerine bir veritabanı kimliği yazın.

Bir veritabanında silme korumasını devre dışı bırakmak için gcloud firestore databases update --no-delete-protection işaretini kullanarak komutunu kullanın. Örneğin:

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

DATABASE_ID yerine bir veritabanı kimliği yazın.

Veritabanını silme

Bir veritabanını silmek için konsolu veya komut satırı aracını kullanın.

Veritabanında silme koruması ayarı etkinse, öncelikle silme korumasını devre dışı bırakmanız gerekir.

Veritabanında App Engine arama verileri veya blob varlıkları varsa, önce bu verileri silmeniz gerekir.

Bir veritabanının silinmesi, o veritabanı için Eventarc tetikleyicileri otomatik olarak silmez. Tetikleyici, etkinliklerin iletilmesini durdurur ancak tetikleyiciyi silene kadar varlığını sürdürür.

Veritabanı silme işlemi için silme ücreti alınmaz.

Konsol
  1. Firebase konsolunda Firestore Database sayfasına gidin.

    Firestore veritabanına gitme

  2. Veri sekmesinde, veritabanının veri tablosu görünümünün üstünde öğesine tıklayın ve ardından Veritabanını sil'i seçin.
  3. Veritabanını silmek için talimatları izleyin.
gcloud

`gcloud firestore databases delete` komutunu kullanın.

gcloud firestore databases delete --database=DATABASE_ID

DATABASE_ID kısmını, silinecek veritabanının kimliğiyle değiştirin. Varsayılan veritabanını silmek için '(default)' kimliğini kullanın

Veritabanı klonlama

Seçilen bir zaman damgasında mevcut bir veritabanını yeni bir veritabanına klonlayabilirsiniz:

  • Klonlanan veritabanı, kaynak veritabanıyla aynı konumda oluşturulan yeni bir veritabanıdır.

    Bir klon oluşturmak için Cloud Firestore, kaynak veritabanının nokta-zamanında kurtarma (PITR) verilerini kullanır. Klonlanan veritabanı tüm verileri ve dizinleri içerir.

  • Varsayılan olarak, klonlanan veritabanı kaynak veritabanıyla aynı şekilde şifrelenir. Bu işlemde Google'ın varsayılan şifrelemesi veya CMEK şifrelemesi kullanılır. Farklı bir şifreleme türü belirtebilir veya CMEK şifrelemesi için farklı bir anahtar kullanabilirsiniz.

  • Zaman damgası bir dakikalık ayrıntıya sahiptir ve PITR penceresi tarafından tanımlanan dönemde geçmişteki bir zaman noktasını belirtir:

    • Veritabanınızda PITR etkinse son 7 gün içindeki herhangi bir dakikayı seçebilirsiniz (PITR 7 günden daha kısa süre önce etkinleştirildiyse daha kısa bir süre seçebilirsiniz).
    • PITR etkin değilse, son bir saat içindeki herhangi bir dakikayı seçebilirsiniz.
    • Veritabanınızın açıklamasında seçebileceğiniz en eski zaman damgasını kontrol edebilirsiniz.

Console

Firebase konsolu veritabanı klonlamayı desteklemiyor. Veritabanlarını klonlamak için Google Cloud KSA ile ilgili talimatları kullanabilirsiniz.

gcloud

Veritabanını klonlamak için gcloud firestore databases clone komutunu kullanın:

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

Aşağıdakini değiştirin:

  • SOURCE_DATABASE: Klonlamak istediğiniz mevcut bir veritabanının veritabanı adı. Ad, projects/PROJECT_ID/databases/SOURCE_DATABASE_ID biçimini kullanıyor.

  • PITR_TIMESTAMP: Dakika ayrıntı düzeyinde, RFC 3339 biçiminde bir PITR zaman damgası. Örneğin: 2025-06-01T10:20:00.00Z veya 2025-06-01T10:30:00.00-07:00.

  • DESTINATION_DATABASE_ID: Yeni bir klonlanmış veritabanı için veritabanı kimliği. Bu veritabanı kimliği, mevcut bir veritabanıyla ilişkilendirilmemelidir.

Örnek:

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

Bir veritabanını klonlarken bazı etiketlere bağlamak istiyorsanız önceki komutu --tags işaretiyle kullanın. Bu işaret, bağlanacak etiketlerin isteğe bağlı bir KEY=VALUE çiftleri listesidir.

Örnek:

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

Varsayılan olarak, klonlanan veritabanı kaynak veritabanıyla aynı şifreleme yapılandırmasına sahip olur. Şifreleme yapılandırmasını değiştirmek için --encryption-type bağımsız değişkenini kullanın:

  • (Varsayılan) use-source-encryption: Kaynak veritabanıyla aynı şifreleme yapılandırmasını kullanın.
  • google-default-encryption: Google'ın varsayılan şifrelemesini kullanın.
  • customer-managed-encryption: CMEK şifrelemesini kullanın. --kms-key-name bağımsız değişkeninde bir anahtar kimliği belirtin.

Aşağıdaki örnekte, klonlanan veritabanı için CMEK şifrelemesinin nasıl yapılandırılacağı gösterilmektedir:

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

Veritabanını klonlamak için firebase firestore:databases:clone komutunu kullanın:

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

Aşağıdakini değiştirin:

  • SOURCE_DATABASE: Klonlamak istediğiniz mevcut bir veritabanının veritabanı adı. Ad, projects/PROJECT_ID/databases/SOURCE_DATABASE_ID biçimini kullanıyor.

  • DESTINATION_DATABASE: Yeni bir klonlanmış veritabanı için veritabanı adı. Ad, projects/PROJECT_ID/databases/DESTINATION_DATABASE_ID biçimini kullanıyor. Bu veritabanı adı mevcut bir veritabanıyla ilişkilendirilmemelidir.

  • PITR_TIMESTAMP: Dakika ayrıntı düzeyinde, RFC 3339 biçiminde bir PITR zaman damgası. Örneğin: 2025-06-01T10:20:00.00Z veya 2025-06-01T10:30:00.00-07:00. Belirtilmezse seçilen anlık görüntü, dakikaya yuvarlanmış geçerli saat olur.

Varsayılan olarak, klonlanan veritabanı kaynak veritabanıyla aynı şifreleme yapılandırmasına sahip olur. Şifreleme yapılandırmasını değiştirmek için --encryption-type bağımsız değişkenini kullanın:

  • (Varsayılan) USE_SOURCE_ENCRYPTION: Kaynak veritabanıyla aynı şifreleme yapılandırmasını kullanın.
  • GOOGLE_DEFAULT_ENCRYPTION: Google'ın varsayılan şifrelemesini kullanın.
  • CUSTOMER_MANAGED_ENCRYPTION: CMEK şifrelemesini kullanın. --kms-key-name bağımsız değişkeninde bir anahtar kimliği belirtin.

Veritabanı başına erişim izinlerini yapılandırma

Veritabanı düzeyinde erişim izinlerini yapılandırmak için Kimlik ve Erişim Yönetimi Koşulları'nı kullanabilirsiniz. Aşağıdaki örneklerde, bir veya daha fazla veritabanı için koşullu erişim atamak üzere Google Cloud CLI kullanılır. Ayrıca Google Cloud Console'da IAM koşulları da tanımlayabilirsiniz.

Mevcut IAM politikalarını görüntüleme

gcloud projects get-iam-policy PROJECT_ID

PROJECT_ID yerine proje kimliğinizi yazın.

Veritabanına erişim izni verme

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'

Aşağıdakileri ayarlayın:

  • PROJECT_ID: Proje kimliğiniz
  • EMAIL: Belirli bir Google Hesabı'nı temsil eden e-posta adresi. Örneğin, alice@example.com.
  • DATABASE_ID: veritabanı kimliği.
  • TITLE: İfade için isteğe bağlı bir başlık.
  • DESCRIPTION: İfadenin isteğe bağlı açıklaması.

Bir veritabanı hariç tüm veritabanlarına erişim izni verme

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'

Aşağıdakileri ayarlayın:

  • PROJECT_ID: Proje kimliğiniz
  • EMAIL: Belirli bir Google Hesabı'nı temsil eden e-posta adresi. Örneğin, alice@example.com.
  • DATABASE_ID: veritabanı kimliği.
  • TITLE: İfade için isteğe bağlı bir başlık.
  • DESCRIPTION: İfadenin isteğe bağlı açıklaması.

Belirli bir üye ve rol için politikaları kaldırma

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

Aşağıdakileri ayarlayın:

  • PROJECT_ID: Proje kimliğiniz
  • EMAIL: Belirli bir Google Hesabı'nı temsil eden e-posta adresi. Örneğin, alice@example.com.

Cloud Monitoring

Cloud Firestore metrikleri iki izlenen kaynak altında raporlanır.

firestore.googleapis.com/Database'a bakarak veritabanı düzeyinde toplu metrikleri inceleyebilirsiniz. firestore_instance altında bildirilen metrikler proje düzeyinde toplanır.

Sınırlamalar

  • Proje başına en fazla 100 veritabanınız olabilir. Bu sınırın artırılmasını talep etmek için destek ekibiyle iletişime geçebilirsiniz.
  • (default) veritabanınızda GAE arama verileri varsa bu veritabanını silemezsiniz. GAE arama verilerini silmek için index delete api'yi kullanın. Yakın zamanda GAE Arama verilerini sildiyseniz, veritabanını silebilmeniz için bir bekleme süresi olabilir.
  • (default) veritabanınızda blob öğeleri varsa bu veritabanını silemezsiniz. Blobstore verilerini silmek için Blobstore silme API'sini kullanın. Google Cloud Console'da SELECT * FROM __BlobInfo__ GQL sorgusunu çalıştırarak (default) veritabanınızda Blobstore verilerinin olup olmadığını kontrol edebilirsiniz.
  • Silme işlemi gerçekleştikten sonra 5 dakika geçmeden bir veritabanı kimliğini yeniden kullanamazsınız.
  • Cloud Functions v1, Firestore adlandırılmış veritabanlarını desteklemez. Adlandırılmış veritabanları için olayları yapılandırmak üzere Cloud Firestore Tetikleyicilerini (2. Nesil) kullanın.
  • Firestore işlev tetikleyicileri v1 ve Firestore olay tetikleyicileri, aynı adla yeni bir veritabanı oluşturulsa bile veritabanı silindikten sonra çalışmayı durdurabilir.

Sırada ne var?