Veritabanı oluşturma ve 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.

Ücretsiz katman kullanımı

Cloud Firestore, ücretsiz olarak kullanmaya başlayabileceğiniz ücretsiz katman sunar.

Ücretsiz katman, proje başına yalnızca bir Cloud Firestore veritabanı için geçerlidir. Ücretsiz katman veritabanı olmayan bir projede oluşturulan ilk veritabanı, ücretsiz katmana dahil edilir. Ücretsiz katmanın uygulandığı veritabanı silinirse oluşturulan bir sonraki veritabanı ücretsiz katmanı alır.

Başlamadan önce

Veritabanı oluşturmadan önce aşağıdaki işlemleri tamamlamanız gerekir:

  1. Henüz yapmadıysanız bir Firebase projesi oluşturun: Firebase konsolunda Proje ekle'yi tıklayın, ardından ekrandaki talimatları uygulayarak bir Firebase projesi oluşturun veya mevcut bir Google Cloud projesine Firebase hizmetlerini ekleyin.

  2. Bir sonraki bölümde açıklandığı şekilde uygun Identity and Access Management rollerini atayın.

Gerekli roller

Veritabanı oluşturmak ve yönetmek için Owner veya Datastore Owner Identity and Access Management rolüne sahip olmanız gerekir. Bu roller gerekli izinleri verir.

Gerekli izinler

Veritabanlarını yönetmek için aşağıdaki izinlere sahip olmanız gerekir:

  • 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

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

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

    Firestore Veritabanı'na git

  2. Veritabanı ekle'yi tıklayın.
  3. Enterprise sürümü'nü seçin. Next'i (Sonraki) tıklayın.
  4. Yerel modda Firestore'u seçin.
  5. Veritabanı kimliği girin.
  6. Veritabanınız için bir konum seçin. İleri'yi tıklayın.
  7. Anlık Güncellemeler'i etkinleştirmeyi veya devre dışı bırakmayı seçin.

    Gerçek Zamanlı Güncellemeler, veritabanınızın onSnapshot dinleyiciyi desteklemesine olanak tanır. Bu özellik, yerel moddaki Enterprise veritabanları için varsayılan olarak etkindir.

  8. 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.
  9. Oluştur'u tıklayın.
gcloud CLI

gcloud firestore databases create komutunu kullanın.

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--edition=enterprise \
--enable-firestore-data-access \
--enable-realtime-updates

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

Veritabanı kimliği

Geçerli veritabanı kimlikleri, aşağıdakilere uygun kimlikleri içerir:

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

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

Korumayı silme

Bir veritabanının yanlışlıkla silinmesini önlemek için silme korumasını kullanın. Silme korumasının işleyiş şekli:

  • Silme koruması etkin olan bir veritabanını, silme korumasını devre dışı bırakmadan 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ı listeleme

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

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

    Firestore Veritabanı'na git

  2. Projenin tüm veritabanlarını görüntülemek için Cloud Firestore'u tıklayın.
gcloud CLI

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

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

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

    Firestore Veritabanı'na git

  2. Veritabanları listesinden bir veritabanı seçin.
gcloud CLI

gcloud firestore databases describe komutunu kullanın:

gcloud firestore databases describe --database=DATABASE_ID

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ı değiştirmek, 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 CLI
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 gcloud firestore databases update komutunu kullanın. Örneğin:

gcloud CLI
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ı silme işlemlerinden ücret alınmaz.

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

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

    Firestore Veritabanı'na git

  2. Silmek istediğiniz veritabanını seçin.
  3. Daha fazla göster'i tıklayın.
  4. Veritabanını silmek için Sil'i tıklayın.
gcloud CLI

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

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 aralığı 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ı (veya PITR 7 günden daha kısa bir süre önce etkinleştirildiyse daha azını) seçebilirsiniz.
    • 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 bulabilirsiniz.

Google Cloud konsolu

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

    Veritabanları'na gidin

  2. Klonlamak istediğiniz veritabanının tablo satırında Daha fazla göster'i tıklayın. Klonla'yı tıklayın. Klon oluşturun iletişim kutusu açılır.

  3. Create a clone (Klon oluştur) iletişim kutusunda, veritabanını klonlamak için parametreleri girin:

    1. Kopyaya bir kimlik verin alanında, yeni bir kopyalanmış veritabanı için veritabanı kimliği. Bu veritabanı kimliği, mevcut bir veritabanıyla ilişkilendirilmemelidir.

    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. Klon oluştur'u 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 veritabanı 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 bir 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/example-source-db' \
--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 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' \
--tags=key1=value1,key2=value2

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/example-source-db' \
--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: Klonlanan yeni veritabanı için bir 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 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ılmaktadı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 hesabı 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 hesabı 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 hesabı temsil eden e-posta adresi. Örneğin, alice@example.com.

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.

Sırada ne var?