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 yalıtmak ve verileri bölgeselleştirmek için birden fazla veritabanı kullanabilirsiniz.
(default)
veritabanı
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
-
Firebase konsolunda Firestore Database sayfasına gidin.
- Bu, ilk adlandırılmış veritabanınızsa Veritabanı ekle'yi tıklayın.
- Aksi takdirde, (varsayılan)'ı ve ardından Veritabanı ekle'yi tıklayın.
- 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:
- DATABASE_ID: Geçerli bir veritabanı kimliği.
- LOCATION: Cloud Firestore çok bölgeli veya bölge adı.
- DATABASE_TYPE: Native mode için
firestore-native
veya Datastore mode içindatastore-mode
.
--delete-protection
, silme korumasını etkinleştirmek için isteğe bağlı bir işarettir.
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ı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:
- DATABASE_ID: Geçerli bir veritabanı kimliği.
- LOCATION: Cloud Firestore çok bölgeli veya bölge adı.
- DELETE_PROTECTION_ENABLEMENT:
ENABLED
veyaDISABLED
.
Oluşturulan veritabanı her zaman Firestore Native modundadır.
--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:
- DATABASE_ID: Geçerli bir veritabanı kimliği.
- LOCATION: Cloud Firestore çok bölgeli veya bölge adı.
- DATABASE_TYPE: Native mode için
FIRESTORE_NATIVE
veya Datastore mode içinDATASTORE_MODE
. - DELETE_PROTECTION_ENABLEMENT:
DELETE_PROTECTION_ENABLED
veyaDELETE_PROTECTION_DISABLED
.
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 uygun kimlikler yer alır:
- 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 veritabanı yapılandırmasını güncelleyerek silme korumasını etkinleştirebilirsiniz.
Veritabanlarınız için Cloud Firestore Security Rules'ı ayarlama
Firebase CLI'yı kullanarak Cloud Firestore Security Rules'ı her bir veritabanınıza dağıtın. Cloud Firestore Security Rules 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. Firebase SDK'ları ve Google API İstemci Kitaplıkları, varsayılan olarak bir projedeki (default)
Cloud Firestore veritabanına bağlanır. Adlandırılmış bir veritabanına bağlı bir istemci oluşturmak için istemciyi başlattığınızda 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.
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 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 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 girin.
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 girin.
Veritabanını 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ı App Engine arama verileri veya blob öğeleri içeriyorsa önce bu verileri silmeniz gerekir.
Bir veritabanının silinmesi, o veritabanı için Eventarc tetikleyicileri otomatik olarak silmez. Tetikleyici, etkinlikleri yayınlamayı durdurur ancak siz tetikleyiciyi silene kadar varlığını sürdürür.
Veritabanı silme işlemi için ücret alınmaz.
Konsol
-
Firebase konsolunda Firestore Database sayfasına gidin.
- Veri 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.
- Veritabanını silmek için talimatları uygulayın.
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.
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.
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.
Varsayılan olarak, klonlanan veritabanı kaynak veritabanıyla aynı şekilde, Google'ın varsayılan şifrelemesi veya CMEK şifrelemesi kullanılarak şifrelenir. Farklı bir şifreleme türü belirtebilir veya CMEK şifrelemesi için 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ızda PITR etkinse 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 kısa bir süre seçebilirsiniz).
- PITR etkin değilse son saatteki herhangi bir dakikayı seçebilirsiniz.
- Seçebileceğiniz en eski zaman damgasını veritabanınızın açıklamasında kontrol edebilirsiniz.
Console
Firebase konsolu, veritabanı klonlamayı desteklemez. Veritabanlarını klonlamak için Google Cloud KSA ile ilgili talimatları kullanabilirsiniz.
gcloud
Veritabanını klonlamak için
gcloud alpha firestore databases clone
komutunu kullanın:
gcloud alpha firestore databases clone \
--source-database='SOURCE_DATABASE_ID' \
--snapshot-time='PITR_TIMESTAMP' \
--destination-database='DESTINATION_DATABASE_ID'
Aşağıdakini değiştirin:
SOURCE_DATABASE_ID: Klonlamak istediğiniz mevcut bir veritabanının veritabanı kimliği.
PITR_TIMESTAMP: Dakika ayrıntı düzeyinde, RFC 3339 biçiminde bir PITR zaman damgası. Örneğin:
2025-06-01T10:20:00.00Z
veya2025-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 alpha firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='projects/example-project/databases/example-dest-db'
Klonlanan veritabanının şifreleme yapılandırmasını değiştirme
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 alpha firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='projects/example-project/databases/example-dest-db' \
--encryption-type='customer-managed-encryption' \
--kms-key-name='projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key'
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ğinizEMAIL
: 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ğinizEMAIL
: 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ğinizEMAIL
: Belirli bir Google Hesabı'nı temsil eden e-posta adresi. Örneğin,alice@example.com
.
Cloud Monitoring
Cloud Firestore metrikleri, izlenen iki kaynak altında raporlanır.
firestore.googleapis.com/Database
bölümüne bakarak toplu metrikleri veritabanı düzeyinde 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. GAE Arama verilerini kısa süre önce sildiyseniz veritabanını silebilmek için beklemeniz gerekebilir.(default)
veritabanınızda blob öğeleri varsa bu veritabanını silemezsiniz. Blobstore verilerini silmek için Blobstore delete api'yi kullanın. Google Cloud Console'daSELECT * FROM __BlobInfo__
GQL sorgusunu çalıştırarak(default)
veritabanınızda Blobstore verilerinin olup olmadığını kontrol edebilirsiniz.- Silme işleminden sonraki 5 dakika içinde veritabanı kimliğini yeniden kullanamazsınız.
- Cloud Functions v1, Firestore adlandırılmış veritabanlarını desteklemez. Adlandırılmış veritabanları için etkinlikleri yapılandırmak üzere Cloud Firestore Triggers (2nd Gen)'ı kullanın.
- Veritabanı silindikten sonra, aynı adla yeni bir veritabanı oluşturulsa bile Firestore işlevi tetikleyicileri v1 ve Firestore etkinlik tetikleyicileri çalışmayı durdurabilir.