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.

Gerekli roller ve izinler

Veritabanı oluşturmak ve yönetmek için aşağıdaki Identity and Access Management rolüne sahip olmanız gerekir:

Bu rol, veritabanı oluşturmak ve yönetmek için gereken aşağıdaki izinleri verir:

  • 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
Firebase konsolu
  1. Firebase konsolunda Veritabanları ve Depolama > Firestore'a gidin.

    Firestore'a gidin

  2. Veritabanı ekle'yi tıklayın.
  3. Standart sürüm'ü seçin. Next'i (Sonraki) tıklayın.
  4. Veritabanı kimliği girin.
  5. Veritabanınız için bir konum seçin. İleri'yi tıklayın.
  6. Cloud Firestore Security Rules cihazınız için bir başlangıç modu seçin:

    Test modu
    Mobil ve web istemci kitaplıklarını kullanmaya başlamak için idealdir ancak herkesin verilerinizi okumasına ve üzerine yazmasına izin verir. Testten sonra Verilerinizi güvende tutma bölümünü incelediğinizden emin olun.
    Üretim modu
    Mobil ve web istemcilerinden gelen tüm okuma ve yazma işlemlerini reddeder. Kimliği doğrulanmış uygulama sunucularınız (Node.js, Python, Java) veritabanınıza erişmeye devam edebilir.
  7. Oluştur'u tıklayın.
gcloud

gcloud firestore databases create komutunu kullanın.

  • Cloud Firestore Standard sürümü veritabanı oluşturmak için:

    gcloud firestore databases create \
    --database=DATABASE_ID \
    --location=LOCATION \
    --edition=standard
    --type=DATABASE_TYPE

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

--delete-protection, silme korumasını etkinleştirmek için kullanılan isteğe bağlı bir işarettir. Silme koruması etkin olan bir veritabanını silmek için önce bu ayarı devre dışı bırakmanız gerekir. 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 \n--location=LOCATION \n[--edition EDITION] \n[--firestore-data-access FIRESTORE_ACCESS] \n[--realtime-updates REALTIME_UPDATES] \n[--delete-protection DELETE_PROTECTION_ENABLEMENT]

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

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 kullanılan isteğe bağlı bir bağımsız değişkendir. Silme koruması etkin olan bir veritabanını, bu ayarı devre dışı bırakmadan silemezsiniz. Bu ayar varsayılan olarak devre dışıdır.

Veritabanı kimliği

Geçerli bir veritabanı kimliği şu kurallara uygun olmalıdır:

  • Yalnızca harf, sayı ve kısa çizgi (-) karakterleri içermelidir.
  • 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.

Bu kuralların bir istisnası vardır: Standard sürüm, kendiniz bir kimlik girmezseniz (default) adlı bir veritabanı oluşturur.

Bir veritabanını sildikten sonra kimliğini yaklaşık 5 dakika boyunca yeniden kullanamayacağınızı unutmayın.

Korumayı silme

Bir veritabanının yanlışlıkla silinmesini önlemek için silme korumasını kullanın. Silme koruması etkin olan bir veritabanını, silme korumasını devre dışı bırakmadan silemezsiniz. Silme koruması varsayılan olarak devre dışıdır. Silme korumasını etkinleştirmek veya devre dışı bırakmak için veritabanı yapılandırmasını güncelleyebilirsiniz.

Veritabanlarınız için Cloud Firestore Security Rules ayarlarını yapma

Cloud Firestore Security Rules kurallarını veritabanlarınızın her birine dağıtmak için Firebase CLI'yı kullanın. Cloud Firestore Security Rules uygulamasını yönetme ve dağıtma kılavuzuna bakın.

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

Adlandırılmış veritabanı, (default) olarak adlandırılmamış tüm veritabanlarını içerir. Varsayılan olarak Firebase SDK'ları ve Google API istemci kitaplıkları, bir projedeki (default) Cloud Firestore veritabanına bağlanır. Adlandırılmış bir veritabanına bağlı istemci oluşturmak için istemciyi örneklendirirken 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 gidin

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

Enterprise veritabanının çıkışı aşağıdaki alanları içerir:

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

DATABASE_ID yerine bir veritabanı kimliği girin.

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 --delete-protection işaretiyle gcloud firestore databases update komutunu kullanın. Örneğin:

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

DATABASE_ID yerine bir veritabanı kimliği girin.

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

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

DATABASE_ID yerine bir veritabanı kimliği girin.

Veritabanı silme

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

Veritabanında silme koruması ayarı etkinse önce 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ı sildiğinizde, o veritabanının Eventarc tetikleyicileri otomatik olarak silinmez. Tetikleyici, etkinlik yayınlamayı durdurur ancak siz tetikleyiciyi silene kadar var olmaya devam eder.

Veritabanı silme işlemlerinden ücret alınmaz.

Konsol
  1. Firebase konsolunda Databases & Storage (Veritabanları ve Depolama) > Firestore'a gidin.

    Firestore'a gidin

  2. Veriler sekmesinde, veritabanının veri tablosu görünümünün üst kısmında simgesini tıklayın, ardından Veritabanını sil'i seçin.
  3. Veritabanını silme talimatlarını uygulayın.
gcloud

`gcloud firestore databases delete` komutunu kullanın.

gcloud firestore databases delete --database=DATABASE_ID

DATABASE_ID yerine silinecek veritabanının kimliğini yazın. Varsayılan veritabanını silmek için '(default)' kimliğini kullanın.

Veritabanı klonlama

Mevcut bir veritabanını, seçilen bir zaman damgasında yeni bir veritabanına kopyalayabilirsiniz:

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

    Klon oluşturmak için Cloud Firestore, kaynak veritabanının belirli bir noktadan önceyi kurtarma (PITR) verilerini kullanır. Klonlanan veritabanı tüm verileri ve dizinleri içerir.

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

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

    • Veritabanınız için PITR etkinleştirilmişse son 7 gün içindeki herhangi bir dakikayı seçebilirsiniz (PITR 7 günden daha kısa bir süre önce etkinleştirildiyse daha az).
    • PITR etkinleştirilmemişse son bir saatteki herhangi bir dakikayı seçebilirsiniz.
    • Seçebileceğiniz en erken zaman damgasını veritabanınızın açıklamasında görebilirsiniz.

Console

  1. Firebase konsolunda Veritabanları ve Depolama > Firestore sayfasını açın.

  2. Veritabanı adınızın yanındaki simgesini, ardından Veritabanını klonla'yı tıklayın. Veritabanını klonla bölmesi görünür.

  3. Clone database (Veritabanını klonla) bölmesinde, veritabanını klonlamak için parametreleri girin:

    1. Veritabanı kimliği alanına yeni klonlanan veritabanı için bir veritabanı kimliği girin. Veritabanı kimliği, mevcut bir veritabanı tarafından kullanılmıyor olmalıdır.

    2. Klonlama kaynağı alanında, klonlama için kullanılacak bir zaman noktası seçin. Seçilen zaman, dakika ayrıntı düzeyinde bir PITR zaman damgasına karşılık gelir.

  4. Klonla'yı tıklayın.

gcloud

Bir 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 adı. Ad, projects/PROJECT_ID/databases/SOURCE_DATABASE_ID biçimini kullanır.

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

  • DESTINATION_DATABASE_ID: Klonlanan yeni veritabanı için veritabanı kimliği. Bu veritabanı kimliği, mevcut bir veritabanıyla ilişkili olmamalıdır.

Ö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 etiket ANAHTAR=DEĞER çiftlerinin isteğe bağlı bir 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'

Klonlanan veritabanı, varsayılan olarak 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 şifrelemesi kullanın. --kms-key-name bağımsız değişkeninde bir anahtar kimliği belirtin.

Aşağıdaki örnekte, kopyalanan 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

Bir 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ır.

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

  • PITR_TIMESTAMP: RFC 3339 biçiminde, dakika ayrıntı düzeyinde 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ü, geçerli zamanın dakikaya yuvarlanmış hali olur.

Klonlanan veritabanı, varsayılan olarak 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 şifrelemesi kullanın. --kms-key-name bağımsız değişkeninde bir anahtar kimliği belirtin.

Veritabanı bazında erişim izinlerini yapılandırma

Erişim izinlerini veritabanı düzeyinde yapılandırmak için Identity and Access Management 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ılmıştır. 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 değerini proje kimliğiniz olarak ayarlayın.

Bir 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 tablosuna bakarak veritabanı düzeyindeki toplu metrikleri inceleyebilirsiniz. firestore_instance altında raporlanan 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.
  • GAE arama verileri içeriyorsa (default) veritabanınızı silemezsiniz. GAE arama verilerini silmek için index delete API'yi kullanın. GAE Search verilerini yakın zamanda sildiyseniz veritabanını silebilmeniz için bir bekleme süresi olabilir.
  • Blob varlıkları içeriyorsa (default) veritabanınızı silemezsiniz. Blobstore verilerini silmek için Blobstore silme API'sini kullanın. Google Cloud Console'da şu GQL sorgusunu çalıştırarak (default) veritabanınızda Blobstore verileri olup olmadığını kontrol edebilirsiniz: SELECT * FROM __BlobInfo__.
  • Silme işlemi gerçekleştikten sonra 5 dakika geçene kadar veritabanı kimliğini yeniden kullanamazsınız.
  • Cloud Functions işlevi v1, Firestore adlandırılmış veritabanlarını desteklemez. Adlandırılmış veritabanları için etkinlikleri yapılandırmak üzere Cloud Firestore Tetikleyicileri'ni (2. nesil) kullanın.
  • Veritabanı silindikten sonra, aynı ada sahip yeni bir veritabanı oluşturulsa bile Firestore işlev tetikleyicileri v1 ve Firestore etkinlik tetikleyicileri çalışmayı durdurabilir.

Sırada ne var?