TTL politikalarıyla veri saklamayı yönetme

Bu sayfada, yaşam süresi (TTL) politikalarını yapılandırmak için Google Cloud Console'un ve Google Cloud CLI'ın nasıl kullanılacağı açıklanmaktadır. Bu sayfayı okumadan önce Cloud Firestore veri modelini anlamanız gerekir.

Geçerlilik süresine genel bakış

Veritabanlarınızdaki eski verileri otomatik olarak kaldırmak için TTL politikalarını kullanın. TTL politikası, belirli bir alanı belirli bir koleksiyon grubundaki belgelerin geçerlilik bitiş zamanı olarak belirler. TTL ile eski verileri temizleyerek depolama maliyetlerini azaltabilirsiniz. Veriler genellikle geçerlilik bitiş tarihinden sonraki 24 saat içinde silinir.

Fiyatlandırma

TTL silme işlemleri, belge silme maliyetlerinize dahil edilir. Silme işlemlerinin fiyatlandırması için Cloud Firestore fiyatlandırması bölümüne bakın.

Sınırlar ve kısıtlamalar

  • Koleksiyon grubu başına yalnızca bir alanı TTL alanı olarak işaretleyebilirsiniz.
  • En fazla 1.000 alan düzeyinde yapılandırmanız olabilir. Bir alan yapılandırması, aynı alan için birden fazla yapılandırma içerebilir. Örneğin, aynı alandaki tek alanlı dizine ekleme muafiyeti ve TTL politikası, sınıra doğru bir alan yapılandırması olarak sayılır.
  • Datastore modunda Firestore müşterileri için TTL, Varlık Gruplarıyla İyimser eşzamanlılık moduyla kullanılamaz. Eşzamanlılık modunu İyimser eşzamanlılık modu olarak değiştirmeyi düşünebilirsiniz.

TTL silme

TTL tabanlı silme işleminin aşağıdaki temel davranışlarına dikkat edin:

  • TTL aracılığıyla silme işlemi anında gerçekleşmez. Süresi dolan belgeler, TTL işlemi tarafından silinene kadar sorgularda ve arama isteklerinde görünmeye devam eder. TTL, silme işlemlerinin toplam mülkiyet maliyetini azaltmak için silme işlemlerinin zamanında yapılmasından ödün verir. Veriler genellikle geçerlilik bitiş tarihinden sonraki 24 saat içinde silinir.

  • TTL aracılığıyla bir dokümanı sildiğinizde, bu dokümanın altındaki alt koleksiyonlar silinmez.

  • Mevcut bir koleksiyon grubuna TTL politikası uygulandığında, süresi dolmuş tüm veriler yeni TTL politikasına göre toplu olarak silinir. Bu toplu silme işleminin de anında gerçekleşmediğini ve ilgili koleksiyon grubunda ne kadar veri bulunduğuna bağlı olduğunu unutmayın.

  • Bir dokümanın geçerlilik bitiş zamanı geçmişteyse ve koleksiyona yeni bir TTL politikası eklerseniz doküman, TTL politikasının kurulumu tamamlanıp etkinleştirildikten sonraki 24 saat içinde silinir.

  • TTL, belgeleri geçerlilik bitiş zaman damgalarıyla aynı sırada silmeyebilir.

  • Silme işlemleri, işlem bazında yapılmaz. Geçerlilik bitiş zamanı aynı olan dokümanlar aynı anda silinmeyebilir. Bu davranışa ihtiyacınız varsa silme işlemlerini bir istemci kitaplığı kullanarak gerçekleştirin.

  • Cloud Firestore, geçerlilik süresini belirlemek için her zaman en son TTL alanını dikkate alır. Örneğin, süresi dolmuş ancak henüz silinmemiş bir dokümanın TTL alanı daha sonraki bir tarihe güncellenirse dokümanın süresi dolmaz ve yeni tarih kullanılır.

  • Cloud Firestore, bir dokümanın süresini yalnızca TTL alanı belirli değer türlerine ayarlandığında sonlandırır. Standard sürüm veritabanları için alan, Date and time değerine ayarlanmalıdır. Enterprise sürümü veritabanları için alan, Date and time değerine veya Date and time değeri içeren bir Array değerine ayarlanmalıdır. Alanın boş bırakılması veya null gibi bir değere ayarlanması, geçerlilik bitiş tarihlerinin doküman bazında devre dışı bırakılmasına olanak tanır.

  • TTL, diğer veritabanı etkinlikleri üzerindeki etkiyi en aza indirecek şekilde tasarlanmıştır. TTL tarafından yönlendirilen silme işlemleri daha düşük öncelikli olarak değerlendirilir. TTL tabanlı silme işlemlerinden kaynaklanan trafik artışlarını azaltmak için başka stratejiler de uygulanır.

  • TTL aracılığıyla silme işlemi, tüm etkin anlık görüntü dinleyicilerini çağırır ve Cloud Functions Cloud Firestore tetikleyicilerini tetikler.

TTL alanları ve dizinleri

TTL alanı dizine eklenebilir veya eklenmeyebilir. Ancak TTL alanı bir zaman damgası olduğundan, alanın dizine eklenmesi daha yüksek trafik oranlarında performansı etkileyebilir. Zaman damgası alanını dizine eklemek, en iyi uygulamalara aykırı olan etkin noktalar oluşturabilir. Etkin noktalar, dar bir doküman aralığında yüksek okuma, yazma ve silme oranlarıdır.

Varsayılan olarak Cloud Firestore Standard sürümü, tüm alanlar için tek alanlı bir dizin oluşturur. TTL alanındaki dizinleri devre dışı bırakmak için tek alanlı dizin muafiyeti oluşturabilirsiniz.

İzinler

TTL politikası yapılandıran alt öğe, projede aşağıdaki izne sahip olmalıdır:

  • TTL politikalarını görüntülemek için datastore.indexes.list ve datastore.indexes.get izinleri gerekir.
  • TTL politikalarını değiştirmek için datastore.indexes.update izni gerekir.
  • TTL işlemlerinin durumunu kontrol etmek için datastore.operations.list ve datastore.operations.get gerekir.

Bu izinleri atayan roller için Cloud Firestore Identity and Access Management rolleri başlıklı makaleyi inceleyin.

TTL politikası oluşturma

TTL politikası oluşturduğunuzda bir koleksiyon grubundaki dokümanların geçerlilik bitiş zamanı olarak bir doküman alanı belirlersiniz.

TTL, silinmeye uygun dokümanları belirlemek için belirli bir alanı kullanır. Standard sürüm veritabanları için TTL alanı Date and time değerine ayarlanmalıdır. Enterprise sürümü veritabanları için Date and time değerine veya Date and time değeri içeren bir Array değerine ayarlanmalıdır. Mevcut bir alanı seçebilir veya daha sonra eklemeyi planladığınız bir alanı belirleyebilirsiniz.

TTL alan değerini ayarlamadan önce aşağıdakileri göz önünde bulundurun:

  • TTL alanı değeri gelecekteki, şimdiki veya geçmişteki bir zaman olabilir. Değer geçmişteki bir zamanı gösteriyorsa doküman hemen silinebilir. Örneğin, expireAt alanını içeren bir TTL politikası oluşturup bu politikayı mevcut dokümanlara ekleyebilirsiniz.

  • Başka bir veri türü kullanmak veya TTL alan değerini ayarlamamak, ilgili doküman için TTL'yi devre dışı bırakır.

TTL politikası oluşturmak için aşağıdaki adımları uygulayın:

Google Cloud Console

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

    Veritabanları'na gidin

  2. Veritabanları listesinden gerekli veritabanını seçin.

  3. Gezinme menüsünde Geçerlilik süresi'ni tıklayın.

  4. İlke oluştur'u tıklayın.

  5. Bir koleksiyon grubu adı ve zaman damgası alan adı girin.

  6. İsteğe bağlı: Geçerlilik bitiş tarihi farkı yapılandırın. Bir değer girin ve bir birim (gün, saat, dakika veya saniye) seçin. Varsayılan olarak, ofset 0'dır.

  7. Oluştur'u tıklayın.

Konsol, Geçerlilik süresi sayfasına döner. İşlem başarıyla başlarsa sayfa, TTL politikaları tablosuna bir giriş ekler. İşlem başarısız olursa sayfada bir hata mesajı gösterilir.

gcloud

TTL politikası yapılandırmak için firestore fields ttls update komutunu kullanın. gcloud CLI'nin işlemin tamamlanmasını beklemesini önlemek için --async işaretini ekleyin.

 gcloud firestore fields ttls update 
ttl_field
--collection-group=collection_group_name
--enable-ttl

TTL'yi geçerlilik bitiş tarihiyle etkinleştirmek için --expiration-offset işaretini ekleyin:

 gcloud firestore fields ttls update 
ttl_field
--collection-group=collection_group_name
--enable-ttl
--expiration-offset=expiration_offset

expiration_offset ifadesini bir süreyle değiştirin. Örneğin, 7 gün için 7d veya 24 saat için 24h. Bu işareti atlarsanız geçerlilik süresi varsayılan olarak 0 olur.

TTL politikası etkinleştirme süresi

TTL politikasının etkinleştirilmesi en az on dakika sürebilir. Bir işlemi başlattıktan sonra terminali kapatmak işlemi iptal etmez.

TTL politikalarını görüntüleme

TTL politikalarını ve durumlarını görüntülemek için aşağıdaki adımları uygulayın:

Google Cloud Console

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

    Veritabanları'na gidin

  2. Veritabanları listesinden gerekli veritabanını seçin.

  3. Gezinme menüsünde Geçerlilik süresi'ni tıklayın.

Konsol, veritabanınızın TTL politikalarını listeler ve her politikanın durumunu içerir.

gcloud

TTL politikası yapılandırmak için firestore fields ttls list komutunu kullanın. Aşağıdaki komut, tüm TTL politikalarını listeler.

   gcloud firestore fields ttls list
   

Belirli bir koleksiyon grubundaki TTL politikalarını listelemek için aşağıdakileri kullanın:

   gcloud firestore fields ttls list  --collection-group=collection_group_name
   

İşlem ayrıntılarını görüntüleme

CREATING durumundaki bir TTL politikası hakkında daha fazla bilgi görüntülemek için gcloud CLI'yı kullanabilirsiniz.

Çalışan ve yakın zamanda tamamlanan tüm işlemleri görmek için operations list komutunu kullanın:

gcloud firestore operations list

Yanıtta, işlemin ilerleme durumuyla ilgili bir tahmin yer alır.

TTL politikasını devre dışı bırakma

TTL politikasını devre dışı bırakmak için aşağıdaki adımları uygulayın:

Google Cloud Console

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

    Veritabanları'na gidin

  2. Veritabanları listesinden gerekli veritabanını seçin.

  3. Gezinme menüsünde Geçerlilik süresi'ni tıklayın.

  4. TTL politikası tablosunda TTL politikasının satırını bulun. Bu tablo satırında Sil (çöp kutusu) düğmesini tıklayın.

  5. Sil'i tıklayarak onaylayın.

Konsol, Geçerlilik süresi sayfasına döner. İşlem başarılı olursa Cloud Firestore, TTL politikasını tablodan kaldırır.

gcloud

1. TTL politikası yapılandırmak için firestore fields ttls update komutunu kullanın. gcloud CLI'nin işlemin tamamlanmasını beklemesini önlemek için --async işaretini ekleyin.

   gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --disable-ttl
   

TTL silme işlemlerini izleme

TTL'ye dayalı silme işlemleriyle ilgili metrikleri görüntülemek için Cloud Monitoring kullanabilirsiniz. Cloud Firestore, TTL için aşağıdaki metrikleri sağlar:

Metrik türü Metrik adı Metrik açıklaması
firestore.googleapis.com/document/ttl_deletion_count Geçerlilik süresi silme sayısı

TTL politikaları tarafından silinen toplam belge sayısı.

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays Yaşam süresinin dolmasından silme işlemine kadar geçen süre

Bir dokümanın TTL politikası kapsamında süresinin dolması ile gerçekten silinmesi arasında geçen süre.

Cloud Firestore metrikleri içeren bir kontrol paneli oluşturmak için Özel kontrol panelini yönetme ve Kontrol paneli widget'ları ekleme başlıklı makaleleri inceleyin.