Verileri toplu olarak silme

Veritabanınızdaki verileri silmek için yönetilen toplu silme hizmetini kullanın. Bu özellik, bir veya daha fazla koleksiyon grubunda silme işlemini destekler.

Yönetilen toplu silme hizmeti

Belgeleri toplu olarak silmek için yönetilen toplu silme hizmetini kullanın. Cloud Firestore yönetilen toplu silme hizmeti, gcloud komut satırı aracı ve Cloud Firestore REST API aracılığıyla kullanılabilir.

Başlamadan önce

Yönetilen toplu silme hizmetini kullanabilmek için aşağıdaki görevleri tamamlamanız gerekir:

  1. Toplu belge silme işlemi için Google Cloud projenizde faturalandırmayı etkinleştirin. Yalnızca faturalandırmanın etkin olduğu Google Cloud projeler toplu silme işlevini kullanabilir.
  2. Hesabınızın Cloud Firestore için gerekli izinlere sahip olduğundan emin olun. Proje sahibiyseniz hesabınız gerekli izinlere sahiptir. Aksi takdirde, aşağıdaki roller toplu silme işlemleri için gerekli izinleri verir:

    • Cloud Firestore rolleri: Owner, Cloud Datastore Owner veya Cloud Datastore Bulk Admin

Projeniz için gcloud hizmetini ayarlama

Toplu silme işlemlerini Google Cloud Console veya gcloud komut satırı aracı üzerinden başlatabilirsiniz. gcloud hizmetini kullanmak için komut satırı aracını ayarlayın ve aşağıdaki yöntemlerden birini kullanarak projenize bağlanın:

Yönetilen toplu silme hizmetiyle verileri silme

Toplu silme işlemi, önce veritabanınızdaki tüm geçerli belgeleri bulur ve bunları toplu olarak siler. Bu belgeleri sorgulamaya veya okumaya devam edebilirsiniz ancak sonuçlar, kaydedilen ilerlemeye bağlı olarak değişiklik gösterebilir. Toplu silme işlemi, işlem başladıktan sonra eklenen veya değiştirilen dokümanları silmez.

Belirli koleksiyon gruplarını toplu olarak silme

gcloud

Belirli koleksiyon gruplarını toplu olarak silmek için --collection-ids işaretini kullanın. İşlem, yalnızca belirtilen kimliklere sahip koleksiyon gruplarını siler. Koleksiyon grubu, belirtilen koleksiyon gruplarını içeren tüm dokümanları ve iç içe yerleştirilmiş dokümanları (herhangi bir yolda) içerir.

gcloud firestore bulk-delete \
--collection-ids=[COLLECTION_GROUP_ID_1_OR_KIND_1],[COLLECTION_GROUP_ID_2_OR_KIND_2],[SUBCOLLECTION_GROUP_ID_1_OR_KIND_3] \
--database=[DATABASE]
Örneğin, cymbal veritabanının üst düzey restaurants koleksiyonunda restoranları temsil eden birden fazla doküman olduğunu varsayalım. Her restoran dokümanının altında ratings, reviews ve outlets gibi birden fazla iç içe yerleştirilmiş alt koleksiyon bulunur. restaurants ve reviews koleksiyon gruplarını toplu olarak silmek için komutunuz şu şekilde görünür:

gcloud firestore bulk-delete \
--collection-ids=restaurants,reviews \
--database='cymbal'

Toplu silme işlemlerini yönetme

Toplu silme işlemi başlattıktan sonra Cloud Firestore, işleme benzersiz bir ad atar. İşlemi silmek, iptal etmek veya durumunu kontrol etmek için işlem adını kullanabilirsiniz.

İşlem adlarının önüne projects/[PROJECT_ID]/databases/[DATABASE_ID]/operations/ eklenir. Örneğin:

projects/my-project/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

Ancak describe, cancel ve delete komutları için işlem adı belirtirken öneki kullanmayabilirsiniz.

Tüm toplu silme işlemlerini listeleme

gcloud

Toplu silme işlemleri de dahil olmak üzere, çalışan ve yakın zamanda tamamlanan tüm işlemleri görmek için operations list komutunu kullanın:

gcloud firestore operations list

Faaliyet durumunu kontrol etme

gcloud

Toplu silme işleminin durumunu göstermek için operations describe komutunu kullanın.

gcloud firestore operations describe [OPERATION_NAME]
Tamamlanma süresini tahmin etme

Uzun süreli bir işlemin durumuna yönelik istek, workEstimated ve workCompleted metriklerini döndürür. Bu metriklerin her biri hem bayt sayısı hem de doküman sayısı olarak döndürülür:

  • workEstimated, bir işlemin işleyeceği tahmini toplam bayt ve doküman sayısını gösterir. Cloud Firestore, tahmin yapamadığı durumlarda bu metriği atlayabilir.

  • workCompleted, şimdiye kadar silinen bayt ve doküman sayısını gösterir. İşlem tamamlandıktan sonra değer, gerçekte işlenen toplam bayt ve doküman sayısını gösterir. Bu sayı, workEstimated değerinden daha büyük olabilir.

Yaklaşık ilerleme tahmini için workCompleted değerini workEstimated değerine bölün. Bu tahmin, gecikmeli istatistik toplamaya bağlı olduğundan doğru olmayabilir.

İşlemleri iptal etme

gcloud

Devam eden bir işlemi durdurmak için operations cancel komutunu kullanın:

gcloud firestore operations cancel [OPERATION_NAME]

Devam eden bir işlemi iptal etmek, işlemi geri almaz. İptal edilen bir toplu silme işlemi, silinen dokümanları kurtarmaz.

İşlemleri silme

Tamamlanan bir işlemi son işlemler listesinden kaldırmak için gcloud firestore operations delete komutunu kullanın. Çalışan bir işlemi iptal etmek için önceki iptal işlemini kullanın.

gcloud firestore operations delete [OPERATION_NAME]

Yönetilen toplu silme işlemleri için faturalandırma ve fiyatlandırma

Yönetilen toplu silme hizmetini kullanmadan önce Google Cloud projeniz için faturalandırmayı etkinleştirmeniz gerekir.

Toplu silme işlemlerinde, belge okuma ve silme işlemleri için Cloud Firestore fiyatlandırması bölümünde listelenen ücretler üzerinden ödeme alınır. Toplu silme işlemlerinde, bulunan her doküman için bir dizin girişi okuma işlemi ve silinen her doküman için bir silme işlemi gerçekleştirilir. Okunan her 1.000 dizin girişi için bir okuma işlemi ücreti alınır. Örneğin, 1.500 dokümanın silindiği bir toplu silme işlemi için 2 doküman okuma ve 1.500 doküman silme işlemi ücreti ödersiniz.

Cloud Firestore, yapılan gerçek iş için ücret alır. İşlem, kullanıcı hatası nedeniyle iptal edilir veya başarısız olursa kaydedilen ilerleme için ücretlendirilirsiniz. Cloud Firestore, silme işlemi başladıktan sonra değiştirilen belgeler gibi nihai olarak silinmeyen belgeler için okuma veya silme işlemlerini ücretlendirmez. Maliyet, işlemin tamamlandığı gün ilişkilendirilir.

Toplu silme işlemleri, tamamlanana kadar Google Cloud bütçe uyarılarınızı tetiklemez. Benzer şekilde, toplu silme işlemi sırasında gerçekleştirilen okuma ve silme işlemleri, işlem tamamlandıktan sonra ücretsiz katman kullanımınıza uygulanır. Toplu silme işlemleri, konsolun kullanım bölümünde gösterilen kullanımı etkilemez.

Toplu silme maliyetlerini görüntüleme

Toplu silme işlemleri, faturalandırılan işlemlere goog-firestoremanaged:bulkdelete etiketini uygular. Cloud Faturalandırma raporları sayfasında, toplu silme işlemleriyle ilgili maliyetleri görüntülemek için bu etiketi kullanabilirsiniz.

En iyi uygulamalar

Sorguları yavaşlatabilecek silinen verileri atlamaktan kaçının.